私人docker存储库的SSL证书

我知道启用启用了TLS的Containerized私有registry。 并复制domain.crt到其他docker主机访问registry。

我有一个私人容器registry服务器已经运行(而不是容器,但从办公室),我可以使用用户名,密码login。 我如何使用SSL证书?

我知道我可以生成一个CA证书。 但是,如何将私钥上传到registry。 就像使用ssh,把密钥上传到Gitlab,以及在主机上的公钥一样。

或者我怎样才能从registry中下载domain.crt文件到docker主机?

我错过了什么?

感谢致敬

几年前我玩过它,并与nginx一起工作,configuration如下:

{ upstream private-docker-registry { server docker_registry:5000; } server { listen 443 ssl; listen 80; server_name mydockerregistry.com; ssl_certificate /etc/nginx/certs/mydockerregistry.com.crt; ssl_certificate_key /etc/nginx/certs/mydockerregistry.com.key; proxy_set_header Host $http_host; # required for Docker client sake proxy_set_header X-Real-IP $remote_addr; # pass on real client IP client_max_body_size 0; # disable any limits to avoid HTTP 413 for large image uploads # required to avoid HTTP 411: see Issue #1486 (https://github.com/dotcloud/docker/issues/1486) chunked_transfer_encoding on; location / { # let Nginx know about our auth file auth_basic "Restricted"; auth_basic_user_file /etc/nginx/authentication/docker-registry.htpasswd; proxy_pass http://private-docker-registry; } location /_ping { auth_basic off; proxy_pass http://private-docker-registry; } location /v1/_ping { auth_basic off; proxy_pass http://private-docker-registry; } 

创build一个htpasswd文件进行身份validation,在这个例子中我称之为docker-registry.htpasswd

然后运行一个链接到dockerregistry容器的nginx图像,在这个例子中调用它docker_registry,在这个nginxconfiguration例子中,它将监听端口5000,运行nginx容器将是这样的:

 sudo docker run -d \ --name="nginx_docker_registry" \ -p 443:443 \ -p 80:80 \ --link my_docker_registry_container_name:docker_registry \ -v "path_to_htpasswd_file_in_host:/etc/nginx/authentication:ro" \ -v "path_to_certificates_in_host:/etc/nginx/certs:ro" \ -v "path_to_nginx_conf_in_host:/etc/nginx/nginx.conf:ro" \ nginx