docker.sock使用哪个ca.crt for docker pull?

时间:2017-05-17 01:50:11

标签: ssl docker docker-registry

当我从使用docker pull运行docker(docker in docker)的容器内部/var/run/docker.sock时,我收到此错误:

FATA[0000] Error response from daemon: v1 ping attempt failed with error: Get https://registry.com:5000/v1/_ping: x509: certificate has expired or is not yet valid. If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add `--insecure-registry registry.com:5000` to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/registry.com:5000/ca.crt

所以我按照说明操作并在该目录中添加了ca.crt,并在/etc/default/docker添加了不安全的选项,但错误并没有消失。

当我从容器内部拉出时,我想知道/var/run/docker.sock命令在哪里查找证书。特别是当使用相同的配置从外部(主机)拉取工作时(右侧文件夹中的ca.crt并且还添加了不安全选项)。

2 个答案:

答案 0 :(得分:0)

/var/run/docker.sock不是寻找证书的东西。这只是用于与dockerd通信的套接字。当您执行拉取时,您要求docker守护程序与注册表进行通信。

您从哪里获得ca.crt文件?这真的是您的registry.com:5000服务器证书的签名证书吗?您是将它放在/et c/default/docker/registry.com:5000/ca.crt的主机上运行dockerd还是放在容器内?

ca.crt文件属于守护程序运行的位置。仔细检查您在主机上的正确位置是否有正确的文件,这应该可以解决问题。

答案 1 :(得分:0)

现在让它工作,解决方案是重启容器内的docker守护进程。我之前实际尝试过,但是docker服务在重启后不断下降,这让我觉得它是来自主机的docker服务。

我无法重启docker服务的原因是/var/run/docker.pid存在阻止docker再次启动的原因。所以我删除了pid和docker成功重启。