Considerar:
docker run -it centos /bin/bash
Eu pressionei Ctrl+ Dpara sair.
Quero continuar executando este contêiner, mas descobri que não posso.
O único método é
docker commit `docker ps -q -l` my_image
docker run -it my_image /bin/bash
Estou certo? Há um método melhor? (Estou usando a janela de encaixe 0.8.0.)
Respostas:
Você pode reiniciar um contêiner existente depois que ele sair e suas alterações ainda estiverem lá.
fonte
docker start `docker ps -q -l` && docker attach `docker ps -q -l`
docker start -i $(docker ps -q -l)
. ;-) A nomeação pode ajudar a controlar melhor qual contêiner está selecionado.-l
obter o último, ok ...`docker ps -q -l`
é uma expansão. Ele será substituído pelo ID do último contêiner de janela de encaixe (-l) criado. -q simplesmente suprime outras informações (ao lado do id) normalmente produzidas por`docker ps`
. ---- nota: Backtick não é um sinal de cotação, tem um significado muito especial. Tudo o que você digita entre backticks é avaliada (executada) pelo shell antes do comando principal - unix.stackexchange.com/questions/27428/...Created...
partir do qual não pode ser iniciado com adocker start ...
. No entanto, pode ser reiniciado usando #docker restart ...
-l
obtém apenas a janela de encaixe "mais recente". Se você é como eu edocker ps -a
mostra mais de uma coisa que precisa iniciar, é possível reiniciar "todos" (-a) alterando o comando acima paradocker start `docker ps -q -a`
.-q
apenas o torna "silencioso" (não é o registro de saída).Explicação:
docker start
iniciar um contêiner (requer nome ou ID)-a
anexar ao-i
modo interativo dedocker ps
contêiner Listar contêineres-q
lista apenas IDs de contêineres-l
lista apenas o último contêiner criadofonte
Usar:
Isso iniciará todos os contêineres que estão no estado encerrado.
Isso se conectará ao contêiner específico.
fonte
docker exec -it <container id> /bin/bash
(ou apenas bash).Se você deseja fazê-lo em vários comandos fáceis de lembrar:
docker ps -a
docker start -i <name/id>
A
-i
bandeira diz ao docker para anexar ao stdin do contêiner.Se o contêiner não foi iniciado com um shell interativo ao qual se conectar, você precisará fazer isso para executar um shell:
O
/bin/sh
shell geralmente está disponível com imagens baseadas em alpinos.fonte
Error response from daemon: Container <id> is not running
Se você deseja continuar exatamente um contêiner do Docker com um nome conhecido:
fonte
docker start <name>
onde <name> é o nome do seu contêiner. Pelo menos com o docker v19.03.8Siga esses passos:
Execute o comando abaixo para verificar se todos os serviços de contêiner estão em execução e parados. Opção
-a
é dada para ver se o contêiner também páraEm seguida, inicie o contêiner do docker por
container_id
nomes de tags ou contêineresDigamos da figura acima, o ID do contêiner 4b161b302337
Portanto, o comando a ser executado é
Pode-se verificar se o contêiner está sendo executado com
fonte
Se você tiver um contêiner nomeado, ele poderá ser iniciado executando
onde container_name é o nome do container que deve ser fornecido no momento da criação do container. Você pode substituir
container_name
pelo ID do contêiner, caso o contêiner não seja nomeado. O ID do contêiner pode ser encontrado executando:fonte
Esses comandos funcionarão para qualquer contêiner (não apenas os últimos que saíram). Dessa forma, funcionará mesmo após a reinicialização do sistema. Para fazer isso, esses comandos usarão "ID do contêiner".
Passos:
Liste todas as janelas de encaixe usando este comando e observe o ID do contêiner que você deseja reiniciar:
docker ps -a
Inicie seu contêiner usando o ID do contêiner:
docker start <container_id>
Anexe e execute seu contêiner:
docker attach <container_id>
NOTA: Funciona no Linux
fonte
pelo nome
ou por ID
isso reinicia o contêiner parado, use -i para anexar o STDIN do contêiner ou, em vez de -i, você pode anexar à sessão do contêiner (se executar com -it)
fonte
Isso iniciará todos os contêineres que estão no estado 'Exited'
fonte