Eu tenho as seguintes imagens:
alex@alexvps:~$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 70c0e19168cf 5 days ago 1.069 GB
<none> <none> c2ce80b62174 8 days ago 399.2 MB
<none> <none> 60afe4036d97 8 days ago 325.1 MB
e quando tento remover um deles, recebo:
alex@alexvps:~$ sudo docker rmi 60afe4036d97
Error: Conflict, 60afe4036d97 wasn't deleted
2014/01/28 00:54:00 Error: failed to remove one or more images
Como eu posso removê-los? Por que existe esse conflito?
docker images -q | %{docker rmi -f $_}
sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}
docker ps -a -q | %{docker rm -f $_}
docker system prune
. Então, para limpar tudo:docker kill $(docker ps -q)
parar os contêineres seguidos por adocker system prune -a
removerá tudo - consulte stackoverflow.com/a/44309011/247708Motivo possível: o motivo pode ser que esta imagem seja usada atualmente por um contêiner em execução. Nesse caso, você pode listar os contêineres em execução, parar o contêiner relevante e remover a imagem:
Se você não conseguir encontrar o container pelo docker ps, use-o para listar todos os containers já existentes e removê-los.
Nota: Tenha cuidado para excluir todos os contêineres existentes de uma só vez, caso você use
Volume-Only
contêineres. Eles permanecem noExit
estado, mas contêm dados úteis .fonte
sudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm
(graças a github.com/dotcloud/docker/issues/3258 ) e depois comsudo docker rmi 70c0e19168cf
Exit
estado. Se você estiver usando contêineres somente de volume de dados, eles não permanecerão em execução.awk '/Exit/ {print $1}'
Error response from daemon: No such container: ...
. É difícil dizer o que deve ser substituído e o que devo substituir. Não use...
O motivo do erro é que, embora a imagem não tenha nenhuma tag, ainda existe um contêiner criado nessa imagem que pode estar no
exited
estado. Portanto, você deve garantir que parou e excluiu todos os contêineres criados nessas imagens. O comando a seguir ajuda a remover todos os contêineres que não estão em execução:Agora, isso remove todas as
<none>
imagens não intermediárias pendentes :fonte
No momento, a imagem pode ser usada por um contêiner em execução. Primeiro, você deve parar e remover o (s) contêiner (es).
Então você pode tentar excluir a imagem:
Você deve ter certeza de que esta imagem não depende de outras imagens (caso contrário, você deve excluí-las primeiro).
Eu tive um caso estranho no qual não havia mais contêineres ainda vivos (
docker ps -a
nada retornou), mas não consegui excluir a imagem e sua dependência da imagem.Para resolver esses casos especiais, você pode forçar a remoção da imagem com isso:
fonte
No Bash:
Isso removerá todas as imagens com o nome "<nenhum>". Achei essas imagens redundantes.
fonte
docker images|grep \<none\>|awk '{print $3}' | xargs docker rmi
, ele pode precisar desudo
permissãoEu encontrei a resposta neste comando:
Eu tive seu problema ao excluir algumas imagens que estavam sendo usadas e não percebi (usando
docker ps -a
).fonte
Desde o Docker ver. 1.13.0 (janeiro de 2017), há o
system prune
comando:fonte
Além da resposta de Sunny:
Para excluir todas as imagens em uma máquina Windows (com Docker para Windows) em uma janela do PowerShell, faça:
Para excluir todos os contêineres em uma máquina Windows (com Docker para Windows) em uma janela do PowerShell, faça:
fonte
Primeiro, remova todos os contêineres usando o seguinte comando
Em seguida, remova a imagem pelo seu ID usando o seguinte comando
fonte
Você deve parar / excluir todos os contêineres desnecessários criados nessas imagens primeiro.
Veja: Como remover contêineres antigos do Docker .
Depois disso, use a solução @marcell.
fonte
Remova todos os recipientes
Forçar a remoção de todas as imagens do Docker
fonte
Simplesmente você pode adicionar
--force
no final do comando. Gostar:Para torná-lo mais inteligente, você pode adicionar como:
Aqui em
docker ps
$ 1 está a primeira coluna, ou seja, o ID do contêiner do Docker.E
docker images
$ 3 é a terceira coluna, ou seja, o ID da imagem do Docker.fonte
A versão mais compacta de um comando para remover todas as imagens não marcadas é:
fonte
Para excluir alguma imagem do Docker, você deve executar o seguinte comando:
Portanto, para excluir todas as imagens do Docker, você pode executar o seguinte comando:
Agora, se você quiser excluir todas as imagens do Docker (incluindo imagens em uso), poderá adicionar o sinalizador
-f
, por exemplo:fonte
Usar
ou
Remova todas as imagens pendentes. Se
-a
for especificado, também removerá todas as imagens não referenciadas por qualquer contêiner.Nota: Você é solicitado a confirmar antes da remoção remover qualquer coisa, mas não é exibida uma lista do que será potencialmente removido. Além disso,
docker image ls
não suporta filtragem negativa, por isso é difícil prever quais imagens serão realmente removidas.Conforme declarado na documentação do Docker para remoção .
fonte
Se você deseja limpar automaticamente / periodicamente os contêineres existentes e remover imagens e volumes que não estão em uso por um contêiner em execução, é possível fazer o download da imagem do Docker
meltwater/docker-cleanup
.Dessa forma, você não precisa limpá-lo manualmente.
Apenas corra:
Ele será executado a cada 30 minutos (ou por quanto tempo você o definir usando a opção DELAY_TIME = 1800) e limpará os contêineres e imagens existentes.
Mais detalhes: https://github.com/meltwater/docker-cleanup/blob/master/README.md
fonte
Encontrei uma solução com o script do Powershell que fará isso por mim.
O script primeiro interrompe todos os contêineres, remove todos os contêineres e remove as imagens nomeadas pelo usuário.
Veja aqui http://www.devcode4.com/article/powershell-remove-docker-containers-and-images
fonte