Ssl Docker注册表--不安全的注册表不工作
我试图在CentOS 7上运行Docker注册表供内部使用 我已经从Ssl Docker注册表--不安全的注册表不工作,ssl,docker,https,Ssl,Docker,Https,我试图在CentOS 7上运行Docker注册表供内部使用 我已经从/usr/lib/systemd/system/Docker.service设置了Docker配置,如下所示: [Service] .... ExecStart= ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry 127.0.0.1:5000 .... 然后使用systemctl daemon reload和sudo service docker st
/usr/lib/systemd/system/Docker.service
设置了Docker配置,如下所示:
[Service]
....
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// --insecure-registry 127.0.0.1:5000
....
然后使用systemctl daemon reload
和sudo service docker start
启动docker守护程序,并确认docker正在使用ps-ef | grep docker
选项运行:
root 116221 1 0 13:21 ? 00:00:00 /usr/bin/docker daemon -H fd:// --insecure-registry 127.0.0.1:5000
但当我尝试使用httpshttps
连接到注册表时,失败了
# Try from the server which the registry is running
curl -X GET https://127.0.0.1:5000/v1/_ping
=> curl: (35) Encountered end of file
# Try from the remote client
curl -X GET https://{registry-server-ip}:5000/v1/_ping
=> curl: (35) Server aborted the SSL handshake
当然,我已经成功地使用http
访问了注册表:
curl -X GET http://127.0.0.1:5000/v1/_ping
=> {"host": ["Linux", ...}
作为参考
# docker version
Client:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:23:11 2016
OS/Arch: linux/amd64
Server:
Version: 1.11.2
API version: 1.23
Go version: go1.5.4
Git commit: b9f10c9
Built: Wed Jun 1 21:23:11 2016
OS/Arch: linux/amd64
我还需要检查什么?您可以在http中访问而不能在https中访问的原因很简单,因为您将注册表配置为不安全的注册表。也就是说,没有启用TLS。您可以在和找到有关安全注册表的更多信息 如果你想让https也起作用,你需要准备一个CA,并用它配置你的注册表。请确保您的CA配置正确 编辑: 我想你可能误解了什么是“不安全的注册表”。此功能不支持真正的TLS支持,它允许您创建仅支持HTTP或HTTPS且CA证书未知的专用注册表。如果您想要HTTPS工作,您有两个选择:使用自签名CA或购买CA。这可能会对您有所帮助 EDIT2:为了尝试HTTP访问,我按照注册表的官方图像页面上的指南运行了一个简单的测试: 以下是步骤:
DOCKER\u OPTS=“--unsecure registry=127.0.0.1:5000”
,
然后重新启动docker服务
$docker run-p 5000:5000-v/home/mypc/data:/tmp/registry dev registry
$docker tag hello world 127.0.0.1:5000/你好
$docker push 127.0.0.1:5000/你好
docker推送正在工作。您可以在http中访问而不能在https中访问的原因只是因为您将注册表配置为不安全的注册表。也就是说,没有启用TLS。您可以在和找到有关安全注册表的更多信息 如果你想让https也起作用,你需要准备一个CA,并用它配置你的注册表。请确保您的CA配置正确 编辑: 我想你可能误解了什么是“不安全的注册表”。此功能不支持真正的TLS支持,它允许您创建仅支持HTTP或HTTPS且CA证书未知的专用注册表。如果您想要HTTPS工作,您有两个选择:使用自签名CA或购买CA。这可能会对您有所帮助 EDIT2:为了尝试HTTP访问,我按照注册表的官方图像页面上的指南运行了一个简单的测试: 以下是步骤:
DOCKER\u OPTS=“--unsecure registry=127.0.0.1:5000”
,
然后重新启动docker服务
$docker run-p 5000:5000-v/home/mypc/data:/tmp/registry dev registry
$docker tag hello world 127.0.0.1:5000/你好
$docker push 127.0.0.1:5000/你好
docker推送正在工作。您也可以查看此链接:
它解释了在docker客户端计算机上的何处存储证书,以便不再将注册表视为不安全的注册表。您也可以查看此链接:
它向您解释了在docker客户端计算机上的何处存储证书,以使注册表不再被认为是不安全的。感谢您的回复!我原以为
--不安全注册表
选项是允许远程访问,如docker pull
或docker push
,而无需CA。但我从您的评论中了解到,我需要配置不带--不安全注册表
的CA,以允许docker push
作为命令使用https
,我说得对吗?@Seonho嗨,是的,--不安全的注册表允许您在没有CA的情况下进行远程访问,但在这种情况下,远程访问仅限于HTTP。您可以使用HTTPS,只要您有CA。但有两种情况取决于您拥有的CA类型:1。如果您的CA是自签名的(意味着它不是由受信任的签名者发布的),那么您必须添加--unsecureregistry选项。2.如果您的CA是可信的(例如您购买了一个),那么您就不需要这个——不安全的注册表选项。希望这有帮助。@Seonho我要提到的最后一件事是,您可以使用自签名CA,而不使用--unsecure注册表选项。检查此处的步骤:在步骤4中,“指示每个docker守护进程信任您的自签名证书”。非常感谢您的精彩回答。总而言之,最后,据我所知,1<代码>--不安全注册表后面是我拥有的CA类型(自签名或可信签名),但不是CA的必要性。也就是说,我必须将CA配置为使用pull
或push
图像到注册表,因为命令是通过HTTPS执行的。@Seonho 1。对的2.不,pull和push也可以在普通HTTP上工作,您可以在没有CA的情况下设置注册表,但启用了--unsecure registry选项。Docker pull和push也应该有效。谢谢您的回复!我原以为--不安全注册表
选项是允许远程访问,如docker pull
或docker push
,而无需CA。但我从您的评论中了解到,我需要配置不带--不安全注册表
的CA,以允许docker push
作为命令使用https
,我说得对吗?@Seonho嗨,是的,--不安全的注册表允许您在没有CA的情况下进行远程访问,但在这种情况下,远程访问仅限于HTTP。您可以使用HTTPS,只要您有CA。但有两种情况取决于您拥有的CA类型:1。如果您的CA是自签名的(意味着它不是由
The push refers to a repository [127.0.0.1:5000/hello]
a02596fdd012: Image successfully pushed
Pushing tag for rev [c54a2cc56cbb] on {http://127.0.0.1:5000/v1/repositories/hello/tags/latest}