在 AWS 中设置私有 docker 注册表并将其与 Beanstalk 一起使用
Posted
技术标签:
【中文标题】在 AWS 中设置私有 docker 注册表并将其与 Beanstalk 一起使用【英文标题】:Setting up private docker registry in AWS and using it with Beanstalk 【发布时间】:2015-08-22 09:00:15 【问题描述】:我找到了几个关于如何做到这一点的参考资料,但是 - 我无法让其中任何一个工作。我遇到麻烦的地方是尝试开发自签名证书。如果最近能够 - 请帮助我。
【问题讨论】:
您能否更具体地解释一下您尝试过的方法以及您需要帮助的地方? 【参考方案1】:如果您尝试部署私有注册表,有几件事。
根据 docker 版本,您应该在 registry
和 registry 2.0
之间进行选择。还是直接从源头上?我无法让源代码工作,我认为registry 2.0
需要最新的docker
。我的 docker api 版本是 1.17,我只能让它与 registry
一起使用。
根据我的经验,生成自签名证书并没有什么特别之处,但是有一些关于添加 CA 的提示。我按照本文的生成自签名证书部分:How To Set Up a Private Docker Registry on Ubuntu 14.04。我必须进行以下调整才能使其正常工作:
将 CA 添加到受信任的 CA 列表中
首先,将 CA ca.pem
转移到所有将使用注册表的机器上。接下来,将其添加到受信任的 CA 列表中。根据主机的操作系统,命令略有不同。
对于Ubuntu 14.04
:
sudo mkdir /usr/local/share/ca-certificates/docker-registry
sudo cp ca.pem /usr/local/share/ca-certificates/docker-registry/ca.crt
sudo update-ca-certificates
对于CoreOs
:
sudo cp ca.pem /etc/ssl/certs/docker_registry_ca.pem
sudo update-ca-certificates
备注:Ubuntu 14.04
只考虑.crt
文件。 CoreOs
只考虑.pem
文件;另外,对于CoreOs
,文件必须在/etc/ssl/certs/
,不包括任何子目录
如果您为 tls 使用 nginx
容器,这将使容器信任此 CA,因为它直接从主机提取其受信任的 CA 列表。但除此之外,您还需要让 Docker
也信任此 CA,以便从您未来的 registry
容器中提取和推送。这很容易实现,您只需要重新启动Docker
daemon,它就会从更新的列表中重新加载受信任的 CA 列表。
对于Ubuntu 14.04
:
sudo service docker restart
对于CoreOS
:
sudo systemctl restart docker
【讨论】:
以上是关于在 AWS 中设置私有 docker 注册表并将其与 Beanstalk 一起使用的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 AWS 在 Docker Cloud 中设置链接到 S3 的卷?
Docker 推送到 AWS ECR 私有存储库失败,JSON 格式错误
在 https:// 中设置默认 Wordpress 并将其重定向到 http:// 并在 Cloudflare 中将 http:// 转发到 https://