当我在 ECS Fargate 集群上配置我的任务定义以拉取 nginx:latest 时它失败了
STOPPED (CannotPullContainerError: Error response from daemon)
Run Code Online (Sandbox Code Playgroud)
我不明白在任务定义字段“图像”中放入什么。
它说有“repository-url/image:tag”,但如果我想从 dockerhub 中提取公共 nginx 映像,显然它不是“nginx:latest”。dockerhub的repository-url是什么?
在 ECS FARGATE/EC2 中,当我们分离镜像时,我们可以直接分离任何可以通过 docker 命令拉取的镜像名称。
例如,如果我们能够使用命令拉取最新的 nginx 图像docker pull nginx,如果我们不指定任何标签,那么它将拉取最新的图像。这在 ECS 中是一样的,所以我们可以指定 nginx 或 nginx:latest 两者都可以工作。这意味着您提供的图像名称是正确的。
我们看到此错误的原因与图像无关,但可能与在 FARGATE 中运行的容器无法拉取图像的网络有关。
我们必须记住,FARGATE 始终使用 AWS VPC 网络模式,这意味着在 FARGATE 中运行任务有两种方式:
如果我们尝试在公共子网中运行任务,则必须启用自动分配公共 IP,并且我们必须确保公共子网路由表具有 IGW 或任何其他网关,这将提供适当的互联网连接,这将允许容器拉来自公共 docker repo 的图像。
如果我们尝试在私有子网中运行任务,则必须禁用自动分配公共 IP,并且我们必须确保私有子网路由表具有 NAT 网关,这将允许容器从公共 docker 存储库中提取图像。
[1] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-configure-network.html
| 归档时间: |
|
| 查看次数: |
6309 次 |
| 最近记录: |