eu estou tentando
docker rmi c565603bc87f
Erro:
Resposta de erro do daemon: conflito: não é possível excluir c565603bc87f (não pode ser forçado) - a imagem possui imagens filho dependentes
Portanto, não consigo excluir a imagem nem com o sinalizador -f. Como excluir a imagem então e todos os seus filhos?
Versão do Linux e docker:
uname -a Linux goracio-pc 4.4.0-24-generic # 43-Ubuntu SMP Wed Jun 8 19:27:37 UTC 2016 x86_64 x86_64 x86_64 GNU / Linux
versão do docker Cliente: Versão: 1.11.2 Versão da API: 1.23 Versão Go: go1.5.4 Git commit: b9f10c9 Criada: Wed 1 de junho 22:00:43 2016 OS / Arch: linux / amd64
Servidor: Versão: 1.11.2 Versão da API: 1.23 Versão Go: go1.5.4 Git commit: b9f10c9 Criado: Wed Jun 1 22:00:43 2016 OS / Arch: linux / amd64
docker
docker-image
romano
fonte
fonte
Respostas:
Você deve tentar remover imagens desnecessárias antes de remover a imagem:
Depois disso, execute:
fonte
prune
> "docker rmi" requires at least 1 argument.
--filter=dangling=true
. Se você ainda receber esse erro, isso significa que você não tem imagens pendentes e, portanto, o comando in-set é avaliado como uma sequência vazia.Em alguns casos (como no meu caso), você pode tentar excluir uma imagem , especificando o ID da imagem que possui várias tags que você nem imagina existir, algumas das quais podem ser usadas por outras imagens. Nesse caso, você pode não querer remover a imagem .
Se você tiver um caso de tags redundantes, conforme descrito aqui, em vez de
docker rmi <image_id>
usardocker rmi <repo:tag>
a tag redundante que deseja remover.fonte
docker rmi <repo:tag>
trabalhou para mim. Sua solução é bastante simples entre essas respostas, obrigado.Untagged: drud/ddev-webserver:20200301_leymannx_apache-junk-built
repo:tag
las dessa maneira, pois cria oito imagens marcadas, compartilhando apenas duas IDs de imagem. Mesmo o Visual Studio não os excluirá em sua janela de gerenciamento de contêiner ...docker rmi <repo:tag>
apenas desmarca , não necessariamente exclui uma imagem. Se houver mais de uma etiqueta referenciando esta imagem, ou se houver outro problema como, por exemplo, o declarado pelo OP, a imagem ainda estará lá. Você pode verificar que a imagem ainda existe com o comandodocker images ls --all
.todas as respostas anteriores estão corretas, mas aqui está uma solução que está apenas excluindo todas as suas imagens com força ( use este comando por seu próprio risco, pois todas as imagens serão excluídas )
fonte
docker image rm $(docker image ls -a -q) -f
encontre o ID da imagem e o ID pai de todas as imagens criadas após a imagem em questão com o seguinte:
Então você chama o comando:
"sub_image_id" é o ID da imagem dependente
fonte
O que funcionou para mim foi usar a combinação REPOSITORY: TAG em vez de IMAGE ID.
Quando tentei excluir uma imagem do Docker com o comando
docker rmi <IMAGE ID>
sem contêineres associados a esta imagem, recebi a mensagem:Eu poderia excluir com sucesso quando usei o comando
docker rmi RPOSITORY:TAG
fonte
docker rmi 93fd78260bd1
falhou, masdocker tag 93fd78260bd1 ubuntu:temp && docker rmi ubuntu:temp
foi bem sucedido.Untagged: ubuntu:18.04v1
). Se você o fizerdocker images -a
, provavelmente verá3f66bec2c6bf
ainda listado. Se a imagem fosse realmente excluída, você receberia a mensagem #Deleted: 3f66bec2c6bf
Este comando remove todas as imagens (use com cuidado)
Você já tentou usar --force
Este código acima funciona como um encanto, mesmo que eu tenha o mesmo problema
fonte
A resposta aqui é encontrar todos os filhos descendentes, que tem uma resposta aqui:
janela de encaixe, como posso obter a lista de imagens filho dependentes?
Em seguida, use isso para remover as imagens filho em ordem.
fonte
Aqui está um script para remover uma imagem e todas as imagens que dependem dela.
fonte
Depois disso, use o comando como Nguyen sugeriu.
fonte
Com base no método de força bruta de Simon Brady aqui , se você não tiver uma tonelada de imagens, poderá usar esta função de shell:
e depois chame usando
recursive_remove_image <image-id>
.fonte
Ex:
fonte
Quando eu quero remover alguma imagem não utilizada com o nome
"<none>"
na janela de encaixe, enfrento o problemaunable to delete a354bbc7c9b7 (cannot be forced) - image has dependent child images
. Então, para resolver esse problema:você pode ver que eu tenho várias imagens com o nome javaapp: nome do contêiner mais recente e diferente. Então, eu matei e remova todo o contêiner "javaapp: latest" com:
Então
Para remover todas as imagens com o nome
"<none>"
boa sorte
fonte
Eu também tive esse problema, eu poderia resolver o problema com os comandos abaixo. isso pode ser porque o contêiner da imagem está em execução ou sai. Portanto, antes de remover a imagem, é necessário remover o contêiner
docker ps -a -f status = encerrado: este comando mostra todos os contêineres encerrados; portanto, copie o ID do contêiner e execute os comandos abaixo para remover o contêiner
docker rm #containerId: esse comando remover contêiner pode ser um problema que mencione "a imagem possui imagens filho dependentes"
Em seguida, tente remover a imagem com o comando abaixo
docker rmi #ImageId
fonte
Eu tive esse problema e nenhuma das respostas curtas aqui funcionou, mesmo na página mencionada por @tudor acima. Pensei em compartilhar aqui como me livrei das imagens. Eu tive a ideia de que as imagens dependentes devem ter> = o tamanho da imagem pai, o que ajuda a identificá-la para que possamos removê-la.
Listei as imagens em tamanho para ver se consegui identificar alguma correlação:
O que isso faz é usar alguma formatação especial da janela de encaixe para posicionar a coluna de tamanho da imagem primeiro e depois executar uma classificação legível por humanos na ordem inversa. Em seguida, restauro as colunas de fácil leitura.
Então olhei para os
<none>
contêineres e combinei com o primeiro da lista com um tamanho semelhante. Eu fiz um simplesdocker rmi <image:tag>
nessa imagem e todas as<none>
imagens da criança foram com ela.A imagem do problema com todas as imagens filho era na verdade a
myrepo/getstarted-lab
imagem maldita que eu usei quando comecei a brincar com o docker. Foi porque eu criei uma nova imagem a partir da primeira imagem de teste que criou a cadeia.Espero que ajude alguém em algum momento.
fonte
Suponha que tenhamos um Dockerfile
Construímos imagem a partir disso sem TAG ou nomeação
Agora, temos um relatório de sucesso "57ca5ce94d04 compilado com êxito". Se virmos as imagens do docker
Primeiro precisamos remover o
docker rmi 57ca5ce94d04
Seguido por
Por essa imagem será removida!
Uma remoção forçada de tudo, como sugerido por alguém
fonte
Expandindo a resposta fornecida por @Nguyen - esta função pode ser adicionada ao seu
.bashrc
etc e depois chamada da linha de comando para ajudar a limpar osimage has dependent child images
erros ...Você pode executar a função como você mesmo e, se ocorrer uma
docker ps
falha, ele executará odocker
comandosudo
e solicitará sua senha.Será que não apagar imagens por quaisquer recipientes que funcionam!
Eu também tenho isso no meu
.bashrc
arquivo ...Funciona com:
fonte
Forçar a exclusão de uma lista de imagens (exclua a versão 10, por exemplo)
fonte
você pode fazer isso:
➜ ~ sudo janela de encaixe rmi 4ed13257bb55 -f Deleted: sha256: 4ed13257bb5512b975b316ef482592482ca54018a7728ea1fc387e873a68c358 Deleted: sha256: 4a478ca02e8d2336595dcbed9c4ce034cd15f01229733e7d93a83fbb3a9026d3 Deleted: sha256: 96df41d1ce6065cf75d05873fb1f9ea9fed0ca86addcfcec7722200ed3484c69 Deleted: sha256: d95efe864c7096c38757b80fddad12819fffd68ac3cc73333ebffaa42385fded
fonte
Camada de imagem: os repositórios geralmente são chamados de imagens ou imagens de contêiner, mas na verdade são compostos de uma ou mais camadas. As camadas de imagem em um repositório são conectadas juntas em um relacionamento pai-filho. Cada camada da imagem representa alterações entre ela e a camada pai.
O padrão de construção da janela de encaixe usa herança . Isso significa que a versão
i
depende da versãoi-1
. Portanto, devemos excluir a versãoi+1
para poder excluir a versãoi
. Esta é uma dependência simples.Se você deseja excluir todas as imagens, exceto a última (a mais atualizada) e a primeira (base), podemos exportar a última (a mais atualizada) usando o
docker save
comando abaixo.Agora, exclua todas as imagens usando o ID da imagem, como abaixo.
Agora, carregue sua imagem tgz salva como abaixo.
veja o ID da imagem carregada usando o docker ps -q. Não possui tag e nome. Você pode simplesmente atualizar a tag e o nome, conforme feito abaixo.
fonte