当我从使用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并且还添加了不安全选项)。
答案 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成功重启。