Programing

docker rmi는 이미지를 제거 할 수 없습니다.

lottogame 2020. 12. 4. 07:41
반응형

docker rmi는 이미지를 제거 할 수 없습니다.


이미지가 많습니다. 내가 그들을 제거하려고 할 때docker rmi

$ sudo docker rmi acd33a9490dc
Error response from daemon: No such id: 75ce1f6710bab109a7d7cbee056fa8a0c7fa913e81c88e2a55121149dda80ee9
2014/07/14 10:13:24 Error: failed to remove one or more images

75ce1 ... 해시는 내가 제거하려는 도커 이미지에 관계없이 동일합니다.

현재 아래는 현재 도커 버전을 제공합니다. 그러나 이러한 이미지 중 일부는 이전 버전 (0.6 정도) 이후로 사용되었습니다.

$ sudo docker version
Client version: 1.0.1
Client API version: 1.12
Go version (client): go1.2.1
Git commit (client): 990021a
Server version: 1.0.1
Server API version: 1.12
Go version (server): go1.2.1
Git commit (server): 990021a

터미널에 넣으십시오.

docker ps -a

CONTAINER ID | IMAGE ......................NAMES

d25c0cd9725a |acd33a9490dc ................focused_einstein

IMAGE 열에서 IMAGEID를 볼 수 있습니다. 컨테이너를 제거하고 컨테이너 ID를 가져옵니다.

docker rm d25c0cd9725a

이제 이미지를 제거 할 수 있습니다.

docker rmi acd33a9490dc

여러 이미지를 제거해야하는 경우 다음을 사용하여 모든 컨테이너를 삭제할 수 있습니다.

sudo docker ps -a -q | xargs -n 1 -I {} sudo docker rm {}

이제 모든 이미지를 제거 할 수 있습니다.


나는 이것이 버그가 아니라 예상되는 동작이라고 생각합니다. 삭제되지 않은 컨테이너가 주변에 있기 때문입니다. 이러한 컨테이너는 이미지의 인스턴스이므로 해당 이미지를 삭제할 수 없습니다.

1 단계-사용하지 않는 컨테이너 인스턴스 제거

jripoll의 대답안드라스 Hatvani의 대답은 목록과 이미지에 바인딩 된 컨테이너를 제거하는 방법을 보여줍니다.

후자는 모든 컨테이너 인스턴스를 삭제합니다 !! 따라서 새 이미지로 커밋해야하는 이미지 가있는 경우 먼저 수행해야합니다 .

2 단계-불필요한 이미지 제거

컨테이너가 삭제 된 후에는 해당 컨테이너의 기반이 된 모든 이미지를 제거 할 수 있습니다.

신속하게 태그가 지정되지 않은 용기 제거하려면 (로 표시 것들을 <none> <none>실행할 때 sudo docker images) 다음 명령을 실행 할 수 있습니다 :

    sudo docker images -q --filter "dangling=true" | sudo xargs docker rmi

/usr/local/bin/docker-purge-dangling명령을 기억할 필요없이 실행할 수 있도록 저장했습니다 .


배출 된 용기를 제거하지 않으면이 문제에 직면 할 수도 있습니다. 이렇게해서 나간 컨테이너를 제거해야합니다.

sudo docker ps -a | grep Exit | awk '{print $1}' | sudo xargs docker rm 

그런 다음

sudo docker rmi <imageID>

먼저 이미지가 들어있는 컨테이너를 찾아야합니다.

이미지가있는 단일 컨테이너를 제거하려면

docker ps -a

그런 출력을 얻을 것입니다

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
g7aea2132441        2285ff53ab18        "/bin/bash"         2 days ago                                                  tombrider 

그런 다음 사용하여 용기를 제거하십시오.

docker rm g7aea2132441

모든 컨테이너와 이미지를 제거하려면

  1. 모든 용기를 제거하십시오

    docker stop $(docker ps -a -q)
    docker rm $(docker ps -a -q)
    
  2. 지금 매달린 이미지 제거

    docker images -q --filter "dangling=true" | sudo xargs docker rmi
    

여러분 모두에게 진심으로 감사드립니다. 모든 접근 방식을 시도했지만 다음 이미지를 삭제할 수 없습니다.

[myself@testvm]$ docker images -a
REPOSITORY    TAG     IMAGE ID      CREATED       SIZE
hello-world   latest  c54a2cc56cbb  6 months ago  1.848 kB

대신 여기에서 제거해야했습니다.

sudo rm /var/lib/docker/image/devicemapper/imagedb/content/sha256/c54a2cc56cbb2f04003c1cd4507e118af7c0d340fe7e2720f70976c4b75237dc 

이제 사라졌습니다.


내가 만든이 정리 스크립트를 실행하면 어떻게 든 마술 적으로 해결됩니다.

# remove orphan containers
docker ps -a | grep -v ":" | awk '{print $1}' | xargs docker rm -f

# remove orphan images
docker images | grep "<none>" | awk '{print $3}' | xargs docker rmi -f

그래서 ... 이의 일부 경우는 이미지를 참조하는 더 이상 실행되지 않는 컨테이너가 있기 때문인 것 같습니다. 컨테이너를 제거하면 이미지를 제거 할 수 있습니다.

But there is definitely a bug where docker gets itself into a state where no matter what you do, it can't remove any image. This has been fixed in docker 1.4.0: https://github.com/docker/docker/commit/ac40e7c


this will remove all your container and then you can remove the images

sudo docker ps -a | awk '{print $1}' | grep -v CONTAINER | xargs sudo docker rm {}\;

참고URL : https://stackoverflow.com/questions/24733160/docker-rmi-cannot-remove-images-with-no-such-id

반응형