【问题标题】:How to make a Docker image run in Fargate如何使 Docker 映像在 Fargate 中运行
【发布时间】:2020-05-16 11:34:21
【问题描述】:

我有一个可以在本地创建的 Dockerised 节点服务器,当我通过 Docker 桌面应用程序按“播放”时,它将开始在我的本地主机浏览器上显示。

我正在尝试让相同的 Dockerised 节点服务器在 Fargate 上工作。首先,我推送到 AWS ECR 存储库,启动 Fargate 并添加集群、服务和任务。

我的问题是如何让 Fargate 执行相当于“播放”Docker 映像的操作,以便启动并从 Fargate 服务器开始提供服务?

【问题讨论】:

    标签: amazon-web-services docker aws-fargate amazon-ecr


    【解决方案1】:

    我认为您正在寻找的是“任务”,这需要您创建任务定义,然后转到 ECS 集群的“任务”选项卡并单击“运行新任务”

    全部步骤如下:

    1. 创建 ECR 存储库并将您的图像推送到其中(可选,该图像可以在其他地方的公开可用存储库中)
    2. 创建 ECS 集群
    3. 创建一个 IAM 任务执行角色(可能是可选的,但建议使用,我认为只有从 ECR 拉取或想要将容器 STDOUT 写入 cloudwatch 日志时才需要此角色)。我相信这是在您在控制台中创建任务定义时自动创建的。
    4. 如果您的容器需要 AWS 权限,请创建一个 IAM 任务角色(可选)。
    5. 创建描述容器规范的 ECS 任务定义,包括镜像的 URI:AWS ECR、Docker Hub、Quay.io 等。还包括环境变量和所需的 CPU/内存(这两个值是链接和某些组合可能不允许,例如 512M 内存和 4 核)。

    然后,您可以通过单击 ECS 集群的“任务”选项卡上的“运行新任务”按钮“直接推送播放”。您必须配置一些运行时参数,但它会一直运行直到进程退出或任务被删除。

    此外,Cloudwatch Events 可以按计划或响应某些事件触发这些任务,并且它是 CLI 的一条线来触发此任务。

    如果您想要一个始终运行的容器或一组容器(例如始终需要为访问者提供服务的网站),您可以使用 ECS 服务而不是任务,然后您可以利用 auto - 缩放和替换失败的容器。

    【讨论】:

    • 谢谢,我想我现在很接近了,刚刚收到 502 Bad Gateway
    • 确保您在任务定义上有一个端口映射。我从来没有连接到任务上的网络服务,所以我不确定我能提供帮助。如果您使用 ECS 服务而不是任务,则可以将服务放在目标组中并让 ELB 指向它,这通常是我建议从 ECS 公开 Web 服务的方式。
    • 对于 Fargate,您必须启用任务网络,并且它应该与 ENI 关联。确保 ENI 具有公共 IP。这将为您提供要连接的 IP 地址。
    猜你喜欢
    • 1970-01-01
    • 2020-09-13
    • 1970-01-01
    • 2016-02-25
    • 2018-07-06
    • 2020-04-11
    • 2016-05-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多