【问题标题】:Pulling public images from Dockerhub in ECS Fargate在 ECS Fargate 中从 Dockerhub 拉取公共镜像
【发布时间】:2019-08-06 11:55:03
【问题描述】:

当我在我的 ECS Fargate 集群上配置我的 taskdefintion 以提取 nginx:latest 时它失败并显示

STOPPED (CannotPullContainerError: Error response from daemon)

我不明白应该在任务定义字段“图像”中添加什么。

上面写着“repository-url/image:tag”,但如果我想从 dockerhub 中提取公共 nginx 映像,显然不是“nginx:latest”。 dockerhub的repository-url是什么?

【问题讨论】:

    标签: amazon-ecs


    【解决方案1】:

    在 ECS FARGATE/EC2 中,当我们对镜像进行 sepcify 时,我们可以直接 sepcify 任何我们能够通过 docker 命令拉取的镜像名称。

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

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

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

    1. 如果我们尝试在公有子网中运行任务,则必须启用自动分配公有 IP,并且我们必须确保公有子网路由表具有 IGW 或任何其他可以提供适当 Internet 连接的网关将允许容器从公共 docker repo 中提取图像。

    2. 如果我们尝试在私有子网中运行任务,则必须禁用自动分配公共 IP,并且我们必须确保私有子网路由表具有允许容器从中提取图像的 NAT 网关公共码头仓库。

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

    【讨论】:

    • 这对我不起作用,使用 Fargate 并且在任务定义中仅指定了图像名称。返回以下错误:CannotPullContainerError: inspect image has been retried 5 time(s): failed to resolve ref "docker.io/nginx"
    • 如果您尝试使用公共 nginx 镜像,那么您是否将镜像名称用作 nginx 或 docker.io/nginx?
    猜你喜欢
    • 2016-09-30
    • 2015-06-28
    • 1970-01-01
    • 2022-08-09
    • 1970-01-01
    • 2023-02-01
    • 2021-10-15
    • 2022-01-16
    • 2020-09-16
    相关资源
    最近更新 更多