31.01.2025

Como manter o contêiner do Docker em execução após iniciar os serviços

Qual é o ponto problemático

O Docker executará software pré-construído no contêiner "sandboxed". Por um lado, essa abordagem nos permite fornecer idempotência absoluta, pois temos a garantia de que o software não depende do ambiente e o "comportamento" é o mesmo a qualquer momento. Por outro lado, o Docker será interrompido quando os comandos predefinidos forem executados. Exemplo: o contêiner será interrompido imediatamente após o comando echo :

docker run <image> <command>   # Run command
docker ps  # Check the running containers

Esse comportamento do Docker não é um bug, é um recurso para economizar recursos do sistema. Mas, às vezes, o contêiner deve ser executado permanentemente, por exemplo, se o software precisar aguardar conexões "de entrada".

Como "forçar" o contêiner do Docker a nunca parar

Você pode atingir seu objetivo de várias maneiras:

Lançamento de pseudo-terminal. Esse método é bom se você precisar manter o contêiner em execução de tempos em tempos. Basta executar seu comando com os sinalizadores -it :

docker run -it <image> bash   # Run command interpreter
<command>   # Run command "inside" the container
docker ps  # Check the container status

Execute qualquer comando "em um loop". Para evitar a parada do contêiner, você pode executar qualquer comando em um ciclo e, em seguida, fechar a sessão do terminal:

docker run <image> bash -c <command>

Em seguida, basta verificar o status do contêiner:

docker ps

Você pode obter o mesmo resultado se executar o docker no modo "desconectado". Basta usar a sinalização -d :

docker run <image> bash -c <command>
# Run command docker ps  # Check the running containers

Conclusão

Após a leitura deste artigo, você sabia como salvar o contêiner do docker vivo mesmo que seu cenário tenha terminado.