Eu lanço um contêiner docker a partir de uma imagem com o seguinte comando:
$ docker run -d myimage /bin/bash -c "mycommand"
Ao "mycommand"
terminar, o contêiner é parado (suponho que esteja parado), mas não é excluído, porque posso ver com este comando:
$ docker ps -a
Existe alguma forma de restart
este container com os mesmos parâmetros e manter os dados gerados por mycommand
?
Respostas:
Sim, quando o comando inicial termina sua execução, o contêiner para.
Você pode iniciar um contêiner interrompido usando:
docker start container_name
Se você quiser ver a saída do seu comando, deve adicionar
-ai
opções:docker start -ai container_name
PS. há um
docker restart container_name
mas que é usado para reiniciar um contêiner em execução - acredito que não seja o seu caso.fonte
docker exec -it container_name bash
. Quando executei o comando de dentro do contêiner, pude ver por que a implementação inicial do meu script estava falhando e corrigi-lo.start
comsleep
? Não consigo chegar a um ponto em que possa correrexec
Primeiro,
$ docker ps -a
mostra todos os contêineres (os que estão em execução e os parados), por isso é que você não está vendo seu contêiner parado listado.Em segundo lugar, você pode iniciar facilmente um contêiner interrompido em execução:
Depois que o contêiner for iniciado, você pode executar seu comando:
As coisas que você cria em seu contêiner permanecerão dentro dele enquanto existir. Se você quiser manter os dados, mesmo que o contêiner seja removido, você pode usar um volume .
fonte
Deveria ser
fonte
restart
é para um contêiner já em execução