如何“泊坞窗推送”到动态不安全的注册表?

时间:2018-07-05 22:19:02

标签: docker ansible docker-registry

OS:Amazon Linux(托管在AWS上) Docker版本:17.x 工具:Ansible,Docker

我们的开发人员使用Ansible能够启动各个AWS竞标环境,这些环境中填充了在其本地计算机上构建的Docker映像,被推送到在AWS竞标机上创建的Docker注册表中,然后下拉并运行。

当开发人员在其Macbook上本地执行此操作时,ansible将使用sbt协调构建代码,启动一个AWS Spot实例,运行一个docker注册表,将映像推入docker注册表,命令该实例拉下映像并运行它,运行测试套件等。

为了使非开发人员能够更好,更轻松地运行单个测试环境,我们将ansible脚本放在Jenkins的后面,并使用其用户名让ansible在Route53中创建一个指向其临时现场实例环境的域名

在没有注册表的情况下这一切都很好-即使用JFrog Artifactory让这些动态env只需提取预先构建的图像。它使质量检查小组成员能够启动他们想要的任何版本的环境。但是现在要允许它构建代码并推送,我需要拥有一个不安全的注册表,这就是问题的解决方法……

由于任何用户都可以运行此命令,因此Route53域名是动态的。这意味着我不能只在--insecure-registry条目daemon.json中进行硬编码。我试图找到一种设置通配符注册表的方法,但它似乎对我没有用。另外,由于这是一台共享的构建服务器(正在运行ansible命令的服务器),所以我不想继续添加条目并重新启动docker,因为其他事情可能正在运行。

因此,总结一下问题:

  1. 是否可以在不安全的注册表项中使用通配符?
  2. 如何让docker识别不安全的注册表项而无需重新启动docker守护进程?

1 个答案:

答案 0 :(得分:0)

到目前为止,我已经找到了可以满足我的需求的解决方案,但还没有100%满意。我会做更多的工作。它不能处理通配符的第一种情况,但对于第二个有关不重新启动而重新加载的问题似乎确实有用。

第一个问题是我编辑了错误的文件。它既不尊重/etc/sysconfig/docker,也不尊重$HOME/.docker/daemon.json。对我而言,唯一适用于Amazon Linux的文件是/etc/docker/daemon.json,因此我手动对其进行了编辑,然后测试了重新加载并使用docker info进行了验证。我将对此进行更多的工作,以便能够根据需要以编程方式插入条目,但是手动测试有效:

sudo vim /etc/docker/daemon.json sudo systemctl reload docker.service docker info