我正在尝试将docker镜像发布到私有存储库,但我无法弄清楚我认为将SSL证书放在Windows机器上的位置。
根据此页面https://docs.docker.com/engine/security/certificates/,证书应该放在/etc/docker/certs.d/HOSTNAME目录中。这显然不是Windows路径。但是,当我运行docker终端并输入cd / etc时,它确实将我带到了一个工作目录。
经过一番调查后我发现它要去C:\ Program Files \ Git \ etc,所以我创建了一个docker \ certs.d \ docker-registry.lan(docker-registry.lan是我们的内部注册表)目录下那条路。然后我用docker-machine stop,docker-machine start命令重新启动docker machine。
然而,当我尝试推送时,我收到的错误是x509:由未知权限签署的证书
这个密钥适用于通过linux执行此操作的其他人,因此我知道密钥很好。我认为问题在于我没有将密钥存储在正确的位置。
我为密钥尝试了许多不同的操作,但似乎都没有。这必须是一个我很想念的简单修复。解决这个问题的人可以帮助我吗?
由于
答案 0 :(得分:2)
如果您在Windows上本机运行Docker守护程序,则正确的位置为C:\ProgramData\docker\certs.d\myregistrydomain.com5000\ca.crt
。详情请见https://github.com/docker/docker/issues/21189#issuecomment-234997515
答案 1 :(得分:1)
解决方案是
ca.crt
所在的本地文件夹docker-machine scp ca.crt default:.
docker-machine ssh default
sudo mkdir /var/lib/boot2docker/certs
sudo cp ca.crt /var/lib/boot2docker/certs
exit
docker-machine restart default
根据https://github.com/docker/machine/issues/1717和https://github.com/boot2docker/boot2docker/issues/347
进行回答答案 2 :(得分:0)
@warmoverflow
嗨,因为你的回复Docker可以自动注册证书。
但根据" README.md"从boot2docker你不能使用.crt但.pem文件。
(以
.pem
格式)进入/var/lib/boot2docker/certs/
目录,Boot2Docker将在启动时自动从持久性分区加载它。
只需将.crt文件重命名为.pem文件即可。
答案 3 :(得分:0)
情况已更改,无需在Windows 10上的任何位置放置证书文件或担心端口号。(截至2019年7月21日)
在Docker社区2.0.0.3(31259)上,只需将Docker存储库的公共证书添加到本地计算机上的“受信任的根权限存储”即可。您可以双击您的证书,它将开始询问您要将证书放在何处的过程。 (它也可能适用于当前的用户商店,没有检查)。
将证书添加到存储后,重新启动Docker服务,然后可以从您的私有存储库中推送/拉取。
下面的Docker VM在启动期间会从Windows获取所有受信任的根权限,并为您进行管理。
答案 4 :(得分:0)
在 Windows 上配置 Docker 客户端
要将注册表的 CA 证书传递给在 Windows 10 上运行的 Docker 客户端,请使用 Windows 证书导入向导。
Copy the ca.crt file to the Windows 10 machine on which you run the Docker client.
Right-click the ca.crt file and select Install Certificate.
Follow the prompts of the wizard to install the certificate.
Restart the Docker daemon:
Click the up arrow in the task bar to show running tasks.
Right-click the Docker icon and select Settings.
Select Reset and click Restart Docker.
Log in to the registry server.
docker login registry_ip