docker客户端无法从" docker私有注册表"和#34;在线码头注册表"如果使用自定义ssl证书

时间:2014-11-14 07:10:55

标签: docker

Docker版本1.2.0,版本2a2f26c / 1.2.0,

docker registry 0.8.1

我在cenots7上设置了docker私有注册表并创建了我的自定义ssl证书。当我尝试使用https访问我的docker注册表时,我得到x509: certificate signed by unknown authority。我找到了一个解决方案,将cert文件放在"/etc/pki/tls/certs"下,然后执行

"update-ca-trust"

"service docker restart"

现在它开始读取我的证书。我可以登录并拉动并推送到docker私人注册表

"https://localdockerregistry"

现在当我尝试从在线码头工具注册表(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客户端无法确定哪个证书用于哪个存储库。

在使用您自己的docker私有注册表时,我们如何修复“x509:由未知权限签署的证书”在线docker注册表的任何想法。

2 个答案:

答案 0 :(得分:3)

放置证书的正确位置是在此位置运行docker守护程序(而非客户端)的计算机上:/etc/docker/certs.d/my.registry.com:5000/ca.crt其中 my.registry.com:5000 是地址您的私有注册表和:5000是您的注册表可以访问的端口。如果路径/etc/docker/certs.d/不存在,则应该创建它 - 这是Docker守护程序默认显示的位置。

这样,您可以为每个私有注册表创建一个私有证书,而不会影响公共注册表。

这是根据http://docs.docker.com/reference/api/registry_api/

上的文档

答案 1 :(得分:0)

我在使用StartSSL证书的Nginx代理后面的容器中运行的docker注册表遇到了问题。

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