从 ECS Fargate 中的 Dockerhub 拉取 public 个镜像

Pulling public images from Dockerhub in ECS Fargate

当我在我的 ECS Fargate 集群上配置任务定义以拉取 nginx:latest 时,它失败并显示

STOPPED (CannotPullContainerError: Error response from daemon)

我不明白要在任务定义字段中输入什么 "image"。

上面写着 "repository-url/image:tag" 但显然它不是 "nginx:latest" 如果我想从 dockerhub 拉取 public nginx 图像。 dockerhub 的 repository-url 是什么?

在 ECS FARGATE/EC2 中,当我们将指定图像时,我们可以直接指定任何图像名称,我们可以通过 docker 命令提取它。

例如,如果我们能够使用命令 docker pull nginx 拉取最新的 nginx 镜像,如果我们不指定任何标签,那么它将拉取最新的镜像。这在 ECS 中是一样的,所以我们可以指定 nginx 或 nginx:latest 两者都可以。这意味着您提供的图像名称是正确的。

我们看到此错误的原因与图像无关,但可能与 FARGATE 中容器 运行ning 无法拉取图像的网络有关。

我们必须记住,FARGATE 始终使用 AWS VPC 网络模式,这意味着有两种方法可以 运行 FARGATE 中的任务:

  1. 如果我们尝试 运行 public 子网中的任务,则必须启用自动分配 Public IP,并且我们必须确保 public 子网路由 table 具有 IGW 或任何其他网关,它们将提供适当的互联网连接,这将允许容器从 public docker 存储库中提取图像。

  2. 如果我们尝试 运行 私有子网中的任务,则必须禁用自动分配 Public IP,我们必须确保私有子网路由 table 有 NAT 网关,允许容器从 public docker 仓库中拉取镜像。

[1] https://docs.aws.amazon.com/AmazonECS/latest/developerguide/service-configure-network.html