실행 중인 컨테이너가 없는데도 이미지를 제거할 수 없습니다.
기계에 여러 개의 정지된 컨테이너와 이미지가 있었습니다.
모든 용기를 정리하고 제거합니다.
docker ps -a
아무것도 반환하지 않습니다.
나는 달립니다docker rmi $(docker images -q)
캐시된 이미지를 제거하면 다음을 얻을 수 있습니다.
데몬의 오류 응답: 충돌: 삭제할 수 없습니다...(강제해야 함) - 이미지가 여러 리포지토리에서 참조됨
무슨 저장소를 말하는 겁니까?
여러 저장소가 있는 이미지는 강제 수정자 없이 제거할 수 없습니다. 자세한 내용은 도커 문서를 참조하십시오.
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
repository/image-name tag a8e6fa672e89 10 days ago 344MB
repository2/image-name tag a8e6fa672e89 10 days ago 344MB
이미지 ID를 사용하여 이미지를 제거하는 대신 수동으로 수행하려면 이미지 이름을 사용하여 필요 없는 저장소/태그를 제거해야 합니다.
docker rmi a8e6fa672e89
Error response from daemon: conflict: unable to delete a8e6fa672e89 (must be forced) - image is referenced in multiple repositories
필요 없는 리포지토리/태그를 제거합니다.
docker rmi repository/image-name:tag
Untagged: repository/image-name:tag
Untagged: repository/image-name:tag@sha256:64b5a02e2bb3ee4d4b7c0982e8e2e5eb68bdfd0fb096fce22b6c030dafb53a33
(하나의 저장소/태그만 남을 때까지 마지막 단계를 반복합니다.) 이제 이미지를 제거할 수 있습니다.
docker rmi a8e6fa672e89
Untagged: repository2/image-name:tag
Deleted: sha256:a8e6fa672e89b399bd3ac52b96c031e6816a69191d1fd7e6a1839fd643e3c751
Deleted: sha256:9861dd7b5783217515f571fdcfa6729e1e38af3ae9c971026e5a317b12fc5905
-f 플래그를 사용하고 이미지의 짧은 ID 또는 긴 ID를 지정한 경우 지정한 ID와 일치하는 이미지를 모두 제거하고 태그를 지정합니다.
그것이 말하는 "저장소들"은 a의 첫번째 칸의 일부입니다.docker images
:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
repository/image-name tag a8e6fa672e89 10 days ago 344MB
repository2/image-name tag a8e6fa672e89 10 days ago 344MB
(나는 가브리엘이 대답에서 보여준 샘플을 받습니다.)
여기에는 "repository"와 "repository2"라는 두 개의 저장소가 있습니다.두 이미지 모두 동일한 IMAGE ID를 가지고 있습니다.
A docker images -q
에서는 사용 가능한 모든 IMAGE ID를 나열합니다.따라서 두 개의 이미지가 참조하는 IMAGE ID를 제거하려면 언급한 오류가 발생합니다.
해결책:ID 대신 이름으로 이미지를 제거할 수 있습니다.
docker rmi repository/image-name:tag
여러 리포지토리를 참조하는 도커 이미지를 강제로 제거하려면 다음 명령을 사용합니다.
sudo docker rmi -f image_id
근본적인 문제는 이미지를 제거하려고 하는데 Tarun Banda가 작성한 대로 이미지에 태그가 지정되어 있다는 것입니다.따라서 id로 이미지를 삭제하지 말고 태그로 이미지를 삭제합니다.그러면 이미지 태그가 해제된 다음 삭제됩니다.
다음은 오래된 컨테이너를 정리하는 예입니다.
docker images | grep '3 weeks ago' | awk '{print $1 ":" $2}' | xargs -n 1 docker rmi
모든 용기를 정리할 수 있습니다.우선, 다음을 통해 모든 컨테이너를 중지해야 합니다.docker stop $(docker ps -aq)
. 마지막으로 다음을 사용하여 모든 용기를 제거합니다.docker rm $(docker ps -aq)
. 하나의 명령으로 모든 것을 할 수 있습니다.docker rm $(docker stop $(docker ps -aq))
.
모든 컨테이너 데이터를 제거하려면:
docker container prune
docker network prune
docker system prune
docker volume prune
docker builder prune
데몬의 오류 응답: 충돌: 3472c3b5350b를 삭제할 수 없음(강제해야 함) - 이미지가 여러 리포지토리에서 참조됨 데몬의 오류 응답: 충돌: 3472c3b5350b를 삭제할 수 없음(강제해야 함) - 이미지가 여러 리포지토리에서 참조됨
이 오류가 먼저 발생하면 이미지에 태그를 지정한 후 삭제할 수 있습니다.이 작업은 다음 명령을 사용하여 수행할 수 있습니다. docker rmi :<image_tag>
이미지를 모두 제거하려면 다음 명령을 사용할 수 있습니다.
docker images | awk '{print $1":"$2}' | egrep -E 'REPOSITORY|TAG' | xargs -n1 docker rmi
단일 레코드를 삭제하려면 : sudo docker mi -f <image_name>
모든 이미지를 삭제하려면:
sudo docker rmi -f $(sudo docker images -a -q)
"-f" 매개 변수가 중요합니다.
docker rmi `docker images --format="{{.Repository}}:{{.Tag}}"`
언급URL : https://stackoverflow.com/questions/53354523/cannot-remove-images-even-though-no-container-is-running
'programing' 카테고리의 다른 글
POSIX가 CHAR_B를 의무화한 이유는 무엇입니까?IT==8? (0) | 2023.10.17 |
---|---|
AngularJS에서 페이지에 iframe을 동적으로 삽입합니다. (0) | 2023.10.17 |
Java PreparedStatement 마지막으로 삽입한 상태 (0) | 2023.10.17 |
JSON 구문 분석 오류:ID에 POJO가 이미 있습니다. (0) | 2023.10.17 |
ntext 열에 있는 데이터 길이? (0) | 2023.10.17 |