Estou executando o Docker no Vagrant no OS X 10.8.4 (Mountain Lion) e sempre que tento excluir uma imagem salva, recebo um erro:
$ docker rmi some-image-id
2013/07/15 hh:mm:ss unexpected JSON input
De acordo com a rmi
ajuda, a sintaxe correta é docker rmi IMAGE [IMAGE...]
e não sei o que fazer disso.
Como posso excluir uma imagem?
$ docker version
Client version: 0.4.8
Server version: 0.4.8
Go version: go1.1
$docker info
Containers: 1
Images: 3
Curiosamente, quando corro docker ps
, nenhum container aparece. A corrida docker images
mostra quatro (4) base
imagens e uma (1) node
imagem.
docker info
mostra a quantidade real de imagens, você pode tentar./docker images -a -q | sort | uniq | wc -l
que o resultado seja o mesmo (-a para todas as imagens, -q apenas para os IDs).docker ps
mostra apenas contêineres ativos, você pode fazerdocker ps -a
para listar todos os contêineres-D
opção e o cliente também?docker -d -D& ; docker -D rmi <id>
. Você também pode tentarCID=$(docker run -d ubuntu bash); ID=$(docker commit $CID); docker rmi $ID
?Respostas:
Tente
docker rmi node
. Isso deve funcionar.Ver todos os contêineres criados é tão simples quanto
docker ps -a
.Para remover todos os contêineres existentes (não imagens!), Execute
docker rm $(docker ps -aq)
fonte
docker ps -aq | Foreach-Object { docker stop $_; docker rm $_; }
A seguir, estão algumas maneiras de remover imagens / recipientes do Docker:
Remover imagem única
Remova todas as imagens
Mate os recipientes e remova-os:
Nota: Substitua
kill
porstop
para um desligamento normalRemova todas as imagens, exceto "minha imagem"
Use grep para remover todos, exceto
my-image
eubuntu
Ou (sem awk)
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
fonte
docker rmi $(docker images -qf "dangling=true")
docker rm $(docker kill $(docker ps -a -q))
docker rmi $(docker images --quiet | grep -v $(docker images --quiet ubuntu:my-image))
Excluir todos os contêineres da janela de encaixe
Excluir todas as imagens da janela de encaixe
fonte
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
sudo docker rmi -f $(sudo docker images | grep "<none>" | awk "{print \$3}")
e depois para remover tags de lançamento ao vivo de 2015 (por exemplolive-20150121223
) o que podemos fazersudo docker rmi -f $(sudo docker images | grep live-2015 | awk "{print \$3}")
Para remover uma imagem do Docker usando o ID da imagem:
Obter a lista de todas as imagens
Identifique o ID da imagem que você deseja excluir, por exemplo:
Por fim, remova a imagem usando o ID da imagem (somente os três primeiros dígitos são necessários)
fonte
Imagem:
Recipiente:
fonte
Atualização, conforme comentado por VonC em Como remover contêineres antigos do Docker .
Com o Docker 1.13 (quarto trimestre de 2016), agora você tem:
docker system prune
excluirá TODOS os dados não utilizados (ou seja, em ordem: contêineres parados, volumes sem contêineres e imagens sem contêineres).Consulte PR 26108 e confirme 86de7c0 , que estão apresentando alguns novos comandos para ajudar a facilitar a visualização de quanto espaço os dados do daemon do Docker estão ocupando no disco e permitindo limpar facilmente o excesso "desnecessário".
fonte
Remoção de contêineres
Para remover um contêiner específico
Para imagem única
Para várias imagens
Remover contêineres encerrados
Retire todos os recipientes
Removendo Imagens
Remova imagens específicas
para imagem única
para várias imagens
Remover imagens pendentes Imagens pendentes
são camadas que não têm relação com nenhuma imagem marcada, pois as imagens do Docker são constituídas por várias imagens.
Remova todas as imagens do Docker
Removendo Volumes
Para listar volumes, execute
docker volume ls
Remova um volume específico
Remover volumes pendentes
Remova um contêiner e seus volumes
fonte
CONTAINER_ID
?docker rm container_name
docker rmi image_name
fonte
Encontre o ID do contêiner,
fonte
daf644660736
? Como isso está relacionado a algum dos anteriores?Primeiro, precisamos parar e remover os contêineres do Docker anexados à imagem do Docker que iremos remover.
Então, para isso, primeiro
docker stop container-id
- Para parar o contêiner em execuçãodocker rm container-id
- Para excluir / remover o contêinerentão,
docker rmi image-id
- Para excluir / remover a imagemfonte
Para as versões 1.13 e superior:
Comparando:
docker image rm
edocker rmi
,o
[OPTIONS]
parece não ter diferença.De: Introdução ao Docker 1.13
fonte
O Docker fornece algum comando para remover
images
.Exemplo:
Portanto, você pode excluir as imagens de filtro como estas:
fonte
Exclua todos eles usando
Etapa 1: Mate todos os contêineres
Etapa 2: RM-los primeiro
Etapa 3: excluir as imagens usando força
Use a etapa 1 caso esteja recebendo um erro dizendo que não pode ser excluído devido a dependências filho
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
meltwater/docker-cleanup
.Uso isso na produção, uma vez que implantamos várias vezes ao dia em vários servidores, e não quero ir a todos os servidores para limpar (isso seria complicado).
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
Aqui está um script de shell para remover uma imagem marcada (nomeada) e seus contêineres. Salve como docker-rmi e execute usando 'docker-rmi my-image-name'
fonte
xargs -r
fazê-lo funcionar na caixa do contêiner sem correspondência.Por que ninguém mencionou
docker-compose
! Acabei de usá-lo por uma semana e não posso sobreviver sem ele. Tudo o que você precisa é escrever um yml que leva apenas alguns minutos de estudo e então você está pronto para começar. Ele pode inicializar imagens, contêineres (necessários nos chamados serviços) e permitir que você revise os logs da mesma forma que usa com os comandos nativos do docker. Experimente:Antes de usar o docker-compose, escrevi meu próprio script de shell e tive que personalizar o script sempre que necessário, especialmente quando a arquitetura do aplicativo foi alterada. Agora não preciso mais fazer isso, graças ao docker-compose.
fonte
docker-compose
é uma ferramenta de orquestração e muitas vezes impraticável para uso em projetos simples. Umadocker
solução independente (que não requer o uso dedocker-compose.yml
configurações frequentemente finnicky ) é preferível no contexto desta pergunta. Além disso, já existem muitas, muitas boas respostas.Para mim, o seguinte funcionou bem:
Em seguida, vá em frente e remova uma imagem executando algumas como estas:
fonte
Listar imagens:
Excluir imagens:
Excluir por força:
fonte
No meu caso, o problema é que tenho duas imagens com o mesmo nome, a solução é adicionar a tag após o nome ou o id
ex:
fonte