ssl - Docker注册表-不安全的注册表不起作用

原文 标签 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-reloadsudo 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


但是,当我尝试使用https连接到注册表时,它失败了。

# 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。您可以在herehere上找到有关安全注册表的更多信息。

如果要使https也可以使用,则需要准备一个CA,并使用它配置注册表。请确保您的CA配置正确。

编辑:
我想您可能会误解什么是“不安全注册”。此功能并未真正启用TLS支持,而是允许您创建仅支持HTTP或具有未知CA证书的HTTPS的私有注册表。如果希望HTTPS起作用,则有两种选择:使用自签名CA或购买CA。 troubleshoot part here可能会帮助您。

EDIT2:要尝试使用HTTP访问,我按照注册表官方图像页面上的指南运行了一个简单的测试:Run the registry docker container: Quick version

步骤如下:


添加不安全选项DOCKER_OPTS="--insecure-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/hello
$ docker push 127.0.0.1:5000/hello


输出为:


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}



码头工人推正在工作。

相关文章:

ssl - 如何在Cpanel / WHM服务器中将TLS 1.0更新为TLS 1.2版本

ssl - 是否可以在不安装Web服务器的情况下检查SSL数字证书是否有效?

ssl - 创建EC CSR时的命名曲线或域参数

postgresql - Prisma如何查看数据库

https - 如何获取URL重写HTTP到HTTP和非WWW到WWW工作

c# - C#SSL请求-证书验证

ssl - SSL在CherryPy中不起作用

node.js - 多阶段Dockerfile导致空间不足

docker - 我可以在docker映像的特定层显示数据吗?如何?

ssl - 我可以检测到浏览器支持的SSL版本吗?