Todo docker run
comando, ou todo RUN
comando dentro de um Dockerfile, cria um contêiner. Se o contêiner não estiver mais em execução, ele ainda poderá ser visto comdocker ps -a
.
Devo me preocupar em ter uma lista enorme de contêineres que não estão em execução? Eu deveria estar emitindodocker rm
em contêineres que não estão em execução?
Não tenho certeza de quais penalidades de desempenho ou memória / armazenamento são afetadas por esses contêineres que não estão em execução.
docker exec
comando foi adicionado há um tempo atrás, consulte docs.docker.com/reference/commandline/cli/#exec - ele executará um comando em um contêiner em execução.Respostas:
Os contêineres que não estão em execução não ocupam nenhum recurso do sistema além do espaço em disco.
Geralmente é bom se limpar depois de si mesmo, mas se houver muitos deles por perto, não deve diminuir o desempenho.
Se você notar uma lentidão ao executar comandos do docker com muitos contêineres parados, pode haver um erro no docker e você deve enviá-lo.
fonte
RUN
comando agora foram movidos para: docs.docker.io/en/latest/reference/builder/#runA
docker run
documentação descreve como limpar automaticamente o contêiner e remover o sistema de arquivos quando o contêiner sai:O exemplo acima mostra que, por padrão, os contêineres não são removidos, mas a adição
--rm=true
ou apenas a mão curta--rm
funcionará da seguinte forma:Quando você sair do contêiner, ele será removido automaticamente.
Você pode testar isso listando seus contêineres em uma janela do terminal:
E, em outra janela, execute este comando para executar vários contêineres de janela de encaixe que sairão automaticamente após dormir por até 10 segundos.
fonte
-rm
foi descontinuado e será removido em algum momento, use-o--rm
.Se você executar um contêiner com um volume e não usar janela de encaixe rm -v para removê-lo, o volume não será removido após a remoção de um contêiner. Também há um problema com um driver de armazenamento vfs. Se você esquecer de limpar, os volumes consumirão seu espaço em disco.
fonte
Para avaliar a quantidade de armazenamento que os contêineres do Docker não em execução estão usando, você pode executar:
--size
: exibe o tamanho total do arquivo (FYI: explique a coluna SIZE em "docker ps -s" e o que significa a palavra-chave "virtual" # 1520 ).--filter "status=exited"
: lista apenas contêineres parados .Equivalentemente , você pode executar:
docker container ls --filter "status=exited"
Você também pode usar o comando
docker system df
(introduzido no Docker 1.13.0, janeiro de 2017) para ver o uso do disco do docker, por exemplo:fonte