在Centos 7上安装证书以获取docker注册表访问权限

时间:2016-01-05 21:41:07

标签: 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

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

1 个答案:

答案 0 :(得分:2)

正如我所看到的,它是docker服务器和私有注册服务器之间SSL身份验证的错误URL。

你可以这样说:

运行域名注册表

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

获取证书

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

创建certs目录:

 mkdir -p certs

然后将您的crt文件移动和/或重命名为:certs / domain.crt,并将您的密钥文件重命名为: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 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