Execute o docker dentro do docker no AWS Fargate

Aug 26 2020

Criei uma definição de tarefa no Amazon ECS e quero executá-la com o Fargate. Eu configurei minha tarefa, o modo de rede é awsvpc. Criei um novo contêiner com uma imagem docker (projeto "Hello world" simples) no Amazon ECR. Execute a tarefa - tudo funciona bem. Agora preciso executar um contêiner docker de hub.docker.com como parte da tarefa

Dockerfile

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

Inicialmente, recebi o erro "comando não encontrado". OK, instalei o docker na minha imagem. Agora eu tenho "Não é possível conectar ao daemon do Docker". Minha pergunta: existe alguma maneira de executar um contêiner docker dentro de outro contêiner docker no Amazon Fargate?

Respostas

4 Rami Aug 26 2020 at 05:37

Você não pode executar um contêiner de outro contêiner usando o Fargate. Executar um contêiner de outro, como no seu caso, significaria que você poderia ter acesso ao daemon do docker. Acessar o daemon docker significa acesso root à máquina host. Isso quebra o isolamento do contêiner docker e não é seguro.

Dependendo do seu uso, sugiro que você use uma instância EC2, use CodeBuild ou crie um operador que seja capaz de conversar com a API para abranger contêineres.

[Editar]: Parece que há um problema em aberto neste tópico [ECS, Fargate]: Suporte para construir contêineres Docker #95