运行 docker 在 AWS Fargate 上 docker 内

Run docker inside of docker on AWS Fargate

我在 Amazon ECS 上创建了一个任务定义,并希望 运行 加入 Fargate。我设置了我的任务,网络模式是awsvpc。我在 Amazon ECR 上创建了一个带有 docker 图像的新容器(简单的“Hello world”项目)。 运行 任务 - 一切正常。现在我需要 运行 来自 hub.docker.com 的 docker 容器作为任务的一部分

Docker文件

FROM ubuntu

RUN apt-get update && apt-install ...
ADD script.sh /script.sh
RUN chmod +x /script.sh
ENTRYPOINT ["/script.sh"]

script.sh

#!/bin/bash

...prepare data
docker run -rm some_container_from_docker_hub
...continue process data

最初,我收到“找不到命令”错误。好的,我将 docker 安装到我的映像中。现在我得到了“无法连接到 Docker 守护程序”。 我的问题:有什么方法可以在 Amazon Fargate 上 运行 另一个 docker 容器内的 docker 容器?

您不能使用 Fargate 运行 来自另一个容器的容器。 运行 来自另一个容器的容器,就像您的情况一样,意味着您可以访问 docker 守护程序。访问 docker 守护进程意味着对主机的根访问。这会破坏 docker 容器隔离并且不安全。

根据您的使用情况,我建议您使用 EC2 实例、使用 CodeBuild 或构建一个能够与 api 对话以跨越容器的运算符。

[编辑]:这个主题似乎有一个未解决的问题 [ECS,Fargate]: Support for building Docker containers #95