Uso de montagens vinculadas com o Amazon ECS - Amazon Elastic Container Service

Uso de montagens vinculadas com o Amazon ECS

Com montagens vinculadas, um arquivo ou diretório em um host, como uma instância do Amazon EC2, é montado em um contêiner. As montagens bind são compatíveis com tarefas hospedadas em instâncias do Fargate e do Amazon EC2. Montagens vinculadas estão associadas ao ciclo de vida do contêiner que as usa. A partir do momento em que todos os contêineres que utilizam uma montagem bind forem interrompidos, por exemplo, quando uma tarefa é interrompida, os dados serão removidos. Para tarefas hospedadas em instâncias do Amazon EC2, os dados podem ser vinculados ao ciclo de vida da instância do Amazon EC2 do host especificando um host e um valor opcional de sourcePath na definição de tarefa. Para obter mais informações, consulte Usar montagens bind na documentação do Docker.

Veja a seguir alguns casos de uso comuns de montagens bind.

  • Para fornecer um volume de dados vazio para ser montado em um ou mais contêineres.

  • Para montar um volume de dados de host em um ou mais contêineres.

  • Para compartilhar um volume de dados de um contêiner de origem com outros contêineres na mesma tarefa.

  • Para expor um caminho e seu conteúdo de um Dockerfile para um ou mais contêineres.

Considerações quando forem usadas montagens bind

Ao usar montagens bind, considere o seguinte.

  • Por padrão, as tarefas hospedadas no AWS Fargate usando a versão da plataforma 1.4.0 ou posterior (Linux) ou 1.0.0 ou posterior (Windows) recebem, no mínimo, 20 GiB de armazenamento temporário para montagens vinculadas. É possível aumentar a quantidade total de armazenamento temporário, até um máximo de 200 GiB, com a especificação do parâmetro ephemeralStorage na definição da tarefa.

  • Para expor arquivos de um Dockerfile a um volume de dados quando uma tarefa é executada, o plano de dados do Amazon ECS procura uma diretiva VOLUME. Se o caminho absoluto especificado na diretiva VOLUME é o mesmo que o containerPath especificado na definição de tarefa, os dados no caminho da diretiva VOLUME são copiados para o volume de dados. No exemplo de Dockerfile a seguir, um arquivo denominado examplefile do diretório /var/log/exported é gravado no host e, em seguida, montado no contêiner.

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN mkdir -p /var/log/exported RUN touch /var/log/exported/examplefile VOLUME ["/var/log/exported"]

    Por padrão, as permissões de volume são definidas como 0755 e o proprietário como root. É possível personalizar essas permissões no Dockerfile. O exemplo a seguir define o proprietário do diretório como node.

    FROM public.ecr.aws/amazonlinux/amazonlinux:latest RUN yum install -y shadow-utils && yum clean all RUN useradd node RUN mkdir -p /var/log/exported && chown node:node /var/log/exported RUN touch /var/log/exported/examplefile USER node VOLUME ["/var/log/exported"]
  • Para tarefas hospedadas em instâncias do Amazon EC2, quando umhost e sourcePath não são especificados, o daemon do Docker gerencia a montagem bind para você. Quando nenhum contêiner fizer referência a essa montagem bind, o serviço de limpeza de tarefas do agente de contêiner do Amazon ECS acabará excluindo-a. Isso ocorre por padrão três horas após o encerramento do contêiner. Porém, é possível configurar essa duração com a variável de agente ECS_ENGINE_TASK_CLEANUP_WAIT_DURATION. Para ter mais informações, consulte Configuração do agente de contêiner do Amazon ECS. Se você precisar que esses dados persistam além do ciclo de vida do contêiner, especifique um valor sourcePath para a montagem bind.