Como excluir todas as imagens locais do Docker


266

Eu recentemente comecei a usar Docker e nunca percebi que eu deveria usar docker-compose downem vez de ctrl-cou docker-compose stoppara se livrar de minhas experiências. Agora, tenho um grande número de imagens de docker desnecessárias localmente.

Existe um sinalizador que eu possa executar para excluir todas as imagens e recipientes da janela de encaixe local?

Algo como docker rmi --all --force--todos flag não existe, mas estou procurando algo com uma idéia semelhante.



2
docker images purge-> irá remover todas as suas imagens Docker
Helius Muthukumar

Com xargs:docker image ls -q | xargs -I {} docker image rm -f {}
arkadyt

@muthukumarhelius Eu acho que você quer dizer docker image prune(a imagem é singular e é ameixa em vez de purga).
Andrés Mejía

Respostas:


534

Para excluir todos os contêineres, incluindo seus volumes, use,

docker rm -vf $(docker ps -a -q)

Para excluir todas as imagens,

docker rmi -f $(docker images -a -q)

Lembre-se de remover todos os contêineres antes de remover todas as imagens das quais esses contêineres foram criados.

Caso você esteja trabalhando no Windows (Powershell),

$images = docker images -a -q
foreach ($image in $images) { docker image rm $image -f }

7
unknown shorthand flag: 'a' in -aquando estiver executandodocker rmi -f $(docker images -a -q)
Ashutosh Chamoli

25
@Ashutosh Chamoli: Não funciona no CMD, funciona no PowerShell.
Jack Jack

4
Variante de uma linha para PowerShell:docker images -a -q | % { docker image rm $_ -f }
CodeStix

4
Eu devo ter vindo aqui centenas de vezes. Obrigado por escrever esta resposta!
Ajay Maity 13/01

「Docker rmi -f $ (docker images -a -q)」 é muito foda
Sinux 16/03

176

Use isso para excluir tudo :

docker system prune -a --volumes

Remova todos os contêineres, volumes, redes e imagens não utilizados

WARNING! This will remove:
    - all stopped containers
    - all networks not used by at least one container
    - all volumes not used by at least one container
    - all images without at least one container associated to them
    - all build cache

https://docs.docker.com/engine/reference/commandline/system_prune/#extended-description


1
No entanto, não recupera todo o espaço em disco.
lucian303

@ lucian303 Esta abordagem recupera espaço em disco. Talvez você esteja enfrentando um problema específico.
Robert

Eu só parecem obter o resultado desejado quando eu faço isso e as etapas @techtabu 's resposta
sir_dancealot

31

Para limpar tudo, faça:

$ docker system prune --all

Tudo significa:

  • todos os contêineres parados
  • todas as redes não usadas por pelo menos um contêiner
  • todas as imagens sem pelo menos um contêiner associado a elas
  • todo o cache de compilação

26

docker image prune -a

Remova todas as imagens não utilizadas, não apenas as dangling. Adicione -fopção para forçar.

Versão do docker local: 17.09.0-ce, commit do Git: afdb6d4, OS / Arch: darwin / amd64

$ docker image prune -h
Flag shorthand -h has been deprecated, please use --help

Usage:  docker image prune [OPTIONS]

Remove unused images

Options:
  -a, --all             Remove all unused images, not just dangling ones
      --filter filter   Provide filter values (e.g. 'until=<timestamp>')
  -f, --force           Do not prompt for confirmation
      --help            Print usage

7

Comandos fáceis e práticos

Para excluir todas as imagens

docker rmi $(docker images -a)

Para excluir contêineres que estão no estado encerrado

docker rm $(docker ps -a -f status=exited -q)

Para excluir contêineres que estão no estado criado

docker rm $(docker ps -a -f status=created -q)

NOTA: Remova todos os recipientes e remova as imagens


para excluir todas as imagens, deve ser - "docker rmi $ (docker images -a -q)". retorna -q apenas os ids imagem
Jimmy MG Lim

isso significa que excluiu essas imagens. Verifique novamente
Deep Nirmal

3

Para excluir todas as imagens:

docker rmi -f $(docker images -a | awk {'print $3'})

Explicação:

imagens do docker -a | awk {'print $ 3'}

Este comando retornará todos os IDs de imagem e, em seguida, será usado para excluir a imagem usando seu ID.


3

Exclua sem chamar a janela de encaixe :

rm -rf /var/lib/docker

Isso não é aconselhável se você pode executar o docker normalmente, mas se por algum motivo não puder ou não quiser, isso funcionará.


2

Você pode tentar assim:

docker system prune

No meu caso, isso removeria um volume que eu ainda uso. Não use este se você não sabe o que faz
Zach Smith

2

Para excluir todas as imagens:

docker rmi $(docker images -a -q)

onde -a é tudo e -q retorna apenas IDs de imagem

Para remover imagens e recipientes não utilizados:

docker system prune

tenha cuidado como se você estivesse usando o docker swarm e sua máquina local estiver ingressando no swarm remoto (como gerente / trabalhador), seu local será o repositório implantado. executar isso remove as imagens implantadas.


2
docker rmi $(docker images -q) --force

2
Você deve adicionar alguma explicação ao deixar uma resposta em uma postagem, para que outras pessoas que a encontrarem mais tarde possam entendê-la.
Morphyish

1

Adicionando à resposta aceita do techtabu, se você estiver usando o docker no Windows, poderá usar o seguinte comando

for /F "delims=" %A in ('docker ps -a -q') do docker rm %A

aqui, o comando docker ps -a -qlista todas as imagens e essa lista é passada para docker rmuma por uma

veja isso para obter mais detalhes sobre como esse tipo de formato de comando funciona no Windows cmd.


1

Outra maneira com xargs

docker image ls -q | xargs -I {} docker image rm -f {}

0

Para excluir todas as imagens locais do Docker, siga 2 etapas:

Etapa 1: Imagens do Docker (liste todas as imagens do Docker com IDs)

     example :
     REPOSITORY    TAG    IMAGE ID            CREATED             SIZE
     pradip564/my  latest 31e522c6cfe4        3 months ago        915MB

etapa 2: imagem do docker rm 31e522c6cfe4 (ID DE IMAGEM)

      OUTPUT : image deleted
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.