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 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 :
<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:
Em seguida, basta verificar o status do contêiner:
Você pode obter o mesmo resultado se executar o docker no modo "desconectado". Basta usar a sinalização -d :
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.