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 Montagens bind
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) ou1.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âmetroephemeralStorage
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 diretivaVOLUME
é o mesmo que ocontainerPath
especificado na definição de tarefa, os dados no caminho da diretivaVOLUME
são copiados para o volume de dados. No exemplo de Dockerfile a seguir, um arquivo denominadoexamplefile
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 comoroot
. É possível personalizar essas permissões no Dockerfile. O exemplo a seguir define o proprietário do diretório comonode
.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 && chownnode
:node
/var/log/exported RUN touch /var/log/exported/examplefile USERnode
VOLUME ["/var/log/exported"] -
Para tarefas hospedadas em instâncias do Amazon EC2, quando um
host
esourcePath
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 agenteECS_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 valorsourcePath
para a montagem bind.