如何将不安全的 docker 注册表用于 Amazon EC2 容器服务 (ECS)?
How do I use insecure docker registries with Amazon EC2 Container Service (ECS)?
我们在无法从外部访问的 AWS VPC 中使用 Docker 注册表。我们希望能够从此注册表启动 ECS 中的任务,但是我们看到该服务仅处于 PENDING 状态,因为 Docker 守护程序无法访问注册表。
我通过更改启动配置的用户数据找到了一种解决方法,但我觉得这不是最好的方法:
#!/bin/bash
echo ECS_CLUSTER=MY_CLUSTER_NAME >> /etc/ecs/ecs.config
echo OPTIONS=--insecure-registry=insecure.registry.hostname:5000 > /etc/sysconfig/docker
service docker restart
docker start ecs-agent
这非常有效,我可以看到我的任务是 运行 所期望的。我只是不认为这一定是最好的方法。
AWS 将我指向 this 文章,该文章讨论了使用私有注册表进行身份验证,但我不打算进行身份验证,只是让 Docker 忽略我使用的是不安全的 (即不是 HTTPS) 注册表。
有没有人有更好的解决方案?
谢谢
我已经与 AWS 进行了进一步交谈,并有以下解决方案:
您可以使用在启动时执行的用户数据脚本来执行设置 docker 选项(包括 --insecure-registry
)之类的操作。例如,--insecure-registry
可以使用如下脚本设置:
#cloud-config
bootcmd:
- cloud-init-per instance $(echo "OPTIONS=\"--insecure-registry=hostname:5000\"" > /etc/sysconfig/docker)
这种方式避免了以前的解决方案,因为没有 docker 重新启动。
关于不安全的方法,如果我们使用自签名证书,我们可以通过将证书添加到系统 CA 信任库或 Docker 的特殊信任库来利用它。
在 Amazon Linux AMI 和 ECS-optimized AMI 上,系统 CA 信任库位于 /usr/share/pki/ca-trust-source
或 /usr/share/pki/ca-trust-source/anchors
(取决于格式,请参阅 /usr/share/pki/ca-trust-source/README
了解详情),您需要在添加证书后使用 运行 update-ca-trust
命令。 Docker 关于不安全注册表的文档对此提供了更多详细信息:
https://docs.docker.com/reference/commandline/cli/#insecure-registries
https://github.com/docker/docker/blob/master/docs/sources/articles/certificates.md
希望对其他人也有帮助
我们在无法从外部访问的 AWS VPC 中使用 Docker 注册表。我们希望能够从此注册表启动 ECS 中的任务,但是我们看到该服务仅处于 PENDING 状态,因为 Docker 守护程序无法访问注册表。
我通过更改启动配置的用户数据找到了一种解决方法,但我觉得这不是最好的方法:
#!/bin/bash
echo ECS_CLUSTER=MY_CLUSTER_NAME >> /etc/ecs/ecs.config
echo OPTIONS=--insecure-registry=insecure.registry.hostname:5000 > /etc/sysconfig/docker
service docker restart
docker start ecs-agent
这非常有效,我可以看到我的任务是 运行 所期望的。我只是不认为这一定是最好的方法。
AWS 将我指向 this 文章,该文章讨论了使用私有注册表进行身份验证,但我不打算进行身份验证,只是让 Docker 忽略我使用的是不安全的 (即不是 HTTPS) 注册表。
有没有人有更好的解决方案?
谢谢
我已经与 AWS 进行了进一步交谈,并有以下解决方案:
您可以使用在启动时执行的用户数据脚本来执行设置 docker 选项(包括 --insecure-registry
)之类的操作。例如,--insecure-registry
可以使用如下脚本设置:
#cloud-config
bootcmd:
- cloud-init-per instance $(echo "OPTIONS=\"--insecure-registry=hostname:5000\"" > /etc/sysconfig/docker)
这种方式避免了以前的解决方案,因为没有 docker 重新启动。
关于不安全的方法,如果我们使用自签名证书,我们可以通过将证书添加到系统 CA 信任库或 Docker 的特殊信任库来利用它。
在 Amazon Linux AMI 和 ECS-optimized AMI 上,系统 CA 信任库位于 /usr/share/pki/ca-trust-source
或 /usr/share/pki/ca-trust-source/anchors
(取决于格式,请参阅 /usr/share/pki/ca-trust-source/README
了解详情),您需要在添加证书后使用 运行 update-ca-trust
命令。 Docker 关于不安全注册表的文档对此提供了更多详细信息:
https://docs.docker.com/reference/commandline/cli/#insecure-registries https://github.com/docker/docker/blob/master/docs/sources/articles/certificates.md
希望对其他人也有帮助