
Tenho um cluster ECS com um provedor de capacidade e um serviço. O provedor de capacidade executa um grupo de escalonamento automático e, quando uma instância desse grupo é iniciada, no final posso ver que há instâncias do ECS disponíveis. Na verdade, posso me conectar a eles através de SSH.
O serviço também funciona bem, pois cria uma nova tarefa baseada em uma imagem docker no repositório ERS. Porém, a tarefa nunca passa de "PROVISIONING", e se eu abrir a tarefa posso ver que o container da tarefa está vazio e carregando. Se eu entrar na minha instância, vejo a mesma instância do docker se eu fizer docker ps
ou docker ps -a
. Se eu executar o agente, docker exec id_docker /agent
vejo:
level=info time=2022-05-02T21:16:05Z msg="Successfully got ECS instance credentials from provider: EC2RoleProvider" module=instancecreds.go
level=info time=2022-05-02T21:16:05Z msg="Starting Amazon ECS Agent" version="1.61.0" commit="05730614"
level=info time=2022-05-02T21:16:05Z msg="Loading configuration"
level=info time=2022-05-02T21:16:05Z msg="Successfully got ECS instance credentials from provider: EC2RoleProvider" module=instancecreds.go
Se eu tentar, docker exec id_docker bash
recebo um erro:
OCI runtime exec failed: exec failed: container_linux.go:380: starting container process caused: exec: "bash": executable file not found in $PATH: unknown
O que está acontecendo aqui? Qualquer pista?
Responder1
O que tive depois de fazer docker ps
foi na verdade ecs-agent, que é algo que a Amazon cria para controlar o contêiner. Essa foi a parte travada. Na verdade, meu docker nem estava funcionando.
Para resolver isso, ao criar a tarefa, nas opções do container, ao selecionar as portas do container para redirecionar para o host, coloque nos valores do seu host 0. Por exemplo, redirecione a porta 22 para 22 -> 0 para 22. Este é um mapeamento dinâmico de portas no ecs.