如果使用自定义SSL证书,则docker客户端无法从“docker专用registry”和“在线dockerregistry”中读取

Docker 1.2.0版,build 2a2f26c / 1.2.0,

dockerregistry0.8.1

我在cenots7上设置docker私人registry,并创build我的自定义SSL证书。 当我尝试使用https访问我的dockerregistry我得到x509: certificate signed by unknown authority 。 我通过将证书文件放在"/etc/pki/tls/certs"下find了解决scheme

"update-ca-trust"

"service docker restart"

现在它开始读取我的证书。我可以login和拉和推入docker私人registry

"https://localdockerregistry"

现在,当我试图从网上dockerregistry( https://index.docker.io/v1/search?q=centos )读取像

"docker search centos"

我明白了

"Error response from daemon: Get https://index.docker.io/v1/search?q=centos: x509: certificate signed by unknown authority"

我从firefox浏览器导出了docker.io证书,并放在“/ etc / pki / tls / certs”下,然后执行"update-ca-trust""service docker restart"但同样的错误。 它看起来像docker客户端不能决定哪个证书使用哪个存储库。

任何想法如何我们可以修复“x509:由未知权威签名的证书”为在线dockerregistry,同时使用您自己的docker私人registry。

放置证书的正确位置在运行/etc/docker/certs.d/my.registry.com:5000/ca.crt守护进程(而不是客户端)的机器上: /etc/docker/certs.d/my.registry.com:5000/ca.crt : /etc/docker/certs.d/my.registry.com:5000/ca.crt where my.registry.com :5000是您的私人registry的地址,并且:5000是您的registry可到达的端口。 如果path/etc/docker/certs.d/不存在,您应该创build它 – 这是默认情况下Docker守护程序的外观。

这样,您可以在每个私人注册中心拥有私人证书,而不会影响公共registry。

这是http://docs.docker.com/reference/api/registry_api/上的文档

我有一个Dockerregistry,运行在一个带有一个StartSSL证书的Nginx代理后面的容器中。

在这种情况下,您必须将中间ca证书附加到nginx ssl证书,请参阅https://stackoverflow.com/a/25006442/1130611