centos - 在 Centos 7 上安装证书以访问 docker 注册表

标签 centos ssl-certificate docker-registry

我们目前有一个 docker 注册表设置,它具有安全性。通常,为了访问它,从开发人员的角度来看,我必须对 docker login --username=someuser --password=somepassword --email user@domain.com https://docker-registry.domain.com 进行长时间操作。 .

但是,由于我目前正在尝试在云中自动部署 docker 容器,因此其中一项操作是 docker pull命令失败,因为未执行登录(如果我在模板中添加登录名,它会起作用,但这很糟糕)。

有人建议我使用证书来允许完成拉取(.crt 文件)。我尝试使用此处说明的步骤安装证书:https://www.linode.com/docs/security/ssl/ssl-apache2-centos

但这似乎不起作用,我仍然需要手动登录才能执行我的docker pull从注册表。

有没有办法可以通过使用证书来替换登录命令?

最佳答案

如我所见,在 docker 服务器和私有(private)注册表服务器之间进行 SSL 身份验证的 URL 是错误的。

你可以按照这个:

运行域注册表

虽然在 localhost 上运行有其用途,但大多数人希望他们的注册表更广泛可用。为此,Docker 引擎要求您使用 TLS 对其进行保护,这在概念上与使用 SSL 配置您的 Web 服务器非常相似。

获得证书

假设您拥有域 myregistrydomain.com,并且其 DNS 记录指向您运行注册表的主机,您首先需要从 CA 获取证书。

创建证书目录:

 mkdir -p certs

然后将您的 crt 文件移动和/或重命名为:certs/domain.crt,并将您的 key 文件移动和/或重命名为:certs/domain.key。

确保您从前面的步骤中停止了您的注册表,然后在启用 TLS 的情况下再次启动您的注册表:
docker run -d -p 5000:5000 --restart=always --name registry \
  -v `pwd`/certs:/certs \
  -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt \
  -e REGISTRY_HTTP_TLS_KEY=/certs/domain.key \
  registry:2

您现在应该能够从另一个 docker 主机访问您的注册表:
docker pull ubuntu
docker tag ubuntu myregistrydomain.com:5000/ubuntu
docker push myregistrydomain.com:5000/ubuntu
docker pull myregistrydomain.com:5000/ubuntu

明白了

证书颁发者可能会为您提供中间证书。在这种情况下,您必须将您的证书与中间证书组合以形成一个证书包。您可以使用 cat 命令执行此操作:
cat domain.crt intermediate-certificates.pem > certs/domain.crt

关于centos - 在 Centos 7 上安装证书以访问 docker 注册表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34621733/

相关文章:

docker - 自托管 Gitlab 注册表 : Connection refused for localhost:5000

gitlab - 错误未授权 : HTTP Basic: Access denied on docker push registry. gitlab.com

linux - centos中web应用的x和r权限

php - 绕过 PHP CURL 2GB 下载限制

centos - firewall-cmd centos 端口转发似乎不起作用?

python-3.x - 在 python 3.7 中使用维基百科 API 时出现证书错误

unix - 从文本文件中提取信息并在 unix 中的命令中使用它

ios - 当 ssl 证书过期并且您的应用程序使用 ssl 固定时,您会怎么做?

ssl - ListenAndServerTLS 一直失败,错误为 : failed to find any PEM data in certificate input

docker - 如何使用自签名证书通过 TLS 将 Docker 应用程序包推送到私有(private)注册表