我试图从docker注册表中拉出docker镜像,但遇到了以下问题:
$ docker pull <docker registry>/<image name>/<tag>
Error response from daemon: Get <docker registry>/v1/_ping: x509: certificate signed by unknown authority
我尝试使用"curl“,得到一个类似的错误消息:
curl performs SSL certificate verification by default, using a "bundle"
of Certificate Authority (CA) public keys (CA certs). If the default
bundle file isn't adequate, you can specify an alternate file
using the --cacert option.
因此,我下载了CA证书,并使用以下命令导入到服务器(RedHat Linux7):
cp root_cert.cer /etc/pki/ca-trust/source/anchors/
update-ca-trust
导入根证书后,我可以看到curl
工作正常,因为它不会报告证书错误,但是如果我使用docker pull
,我仍然有相同的问题。与curl
相比,docker
是否使用不同的ca-cert位置?在这种情况下,我如何解决docker pull
的问题?
发布于 2018-06-09 05:08:13
您可能需要重新启动docker服务以使其检测到操作系统证书中的更改。
Docker确实有一个额外的位置,您可以使用它来信任各个注册表服务器CA。您可以将CA证书放在/etc/docker/certs.d/<docker registry>/ca.crt
中。如果您在映像标记中指定端口号,请包括端口号,例如在Linux中。
/etc/docker/certs.d/my-registry.example.com:5000/ca.crt
或在Windows 10中:
C:\ProgramData\docker\certs.d\ca.crt
发布于 2020-11-16 11:18:22
对于MacOS Docker桌面用户:
在浏览器中转到存储库的URL。您可能必须接受所有安全提示。
点击地址栏上的挂锁,然后点击“证书”(在Chrome上)或“显示证书”(在Safari上)。
单击并按住证书的大纸质图标,然后将其拖动到您喜欢的文件夹或桌面。
打开终端(确保将最后一个参数替换为文件的位置):
security add-trusted-cert -d -r trustRoot -k ~/Library/Keychains/login.keychain-db ~/<<<somefolder>>>/<<<yourserver.cer>>>
重新启动docker引擎。
发布于 2020-06-16 16:42:55
在我的例子中,错误发生在"docker login“命令上。
我为我的ubuntu找到的解决方案是:
我通过firefox下载了crt文件( url地址栏中的锁定图标)并将其保存:~/mydomain:1234.crt
在那之后:
cp ~/mydomain:1234.crt /usr/local/share/ca-certificates/
update-ca-certificates
service docker restart
https://stackoverflow.com/questions/50768317
复制相似问题