root@server:~# docker images -a
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
<none> <none> 5e2dfc857e73 5 days ago 261.6 MB
<none> <none> d053e988f23d 5 days ago 261.6 MB
<none> <none> 1d5d4a2d89eb 5 days ago 261.6 MB
<none> <none> ea0d189fdb19 5 days ago 100.5 MB
<none> <none> 26c6175962b3 5 days ago 100.5 MB
<none> <none> 73d5cec4a0b3 5 days ago 100.5 MB
<none> <none> e19590e1bac1 5 days ago 100.5 MB
나는 다음을 시도했다 :
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")
그리고 다음 :
docker rmi $(docker images -f "dangling=true" -q)
다음 오류가 발생합니다.
docker: "rmi" requires a minimum of 1 argument.
See 'docker rmi --help'.
Usage: docker rmi [OPTIONS] IMAGE [IMAGE...]
Remove one or more images
답변
태그가 지정되지 않은 이미지 만 시도하고 나열 할 수 있습니다 (라벨이 없거나 태그가없는 이미지).
docker images -q -a | xargs docker inspect --format='{{.Id}}{{range $rt := .RepoTags}} {{$rt}} {{end}}'|grep -v ':'
그러나 태그가 지정되지 않은 이미지 중 일부는 다른 사용자에게 필요할 수 있습니다.
docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
2016 년 9 월 ” 오래되고 사용하지 않는 Docker 이미지를 제거하는 방법 “에서 docker 1.13+에 대해 언급했듯이 다음 image prune
명령을 수행 할 수도 있습니다 .
docker image prune
즉, Janaka Bandara 는 의견에서 다음 과 같이 언급합니다 .
이것은 나를 위해 태그가 지정된 이미지를 제거 하지 않았습니다
<none>
(예 🙂foo/bar:<none>
; 나는 사용해야docker images --digests
했고docker rmi foo/bar@<digest>
Janaka 는 Paul V. Novarese 에서 ” 태그가있는 서명 된 이미지를 제거하는 방법 “을 참조합니다 .
# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
pvnovarese/mprime latest 459769dbc7a1 5 days ago 4.461 MB
pvnovarese/mprime <none> 459769dbc7a1 5 days ago 4.461 MB
진단 단계
--digests=true
옵션 을 사용하면이 두 항목의 차이점을 확인할 수 있습니다 (태그없는 항목에는 Docker Content Trust 서명 다이제스트가 있음).
# docker images --digests=true
REPOSITORY TAG DIGEST IMAGE ID CREATED SIZE
pvnovarese/mprime latest <none> 459769dbc7a1 5 days ago 4.461 MB
pvnovarese/mprime <none> sha256:0b315a681a6b9f14f93ab34f3c744fd547bda30a03b55263d93861671fa33b00 459769dbc7a1 5 days ago
Paul은 또한 moby 문제 18892를 언급합니다 .
서명 된 이미지를 가져온 후
<none>
”docker images
“출력 에 ” 추가”항목 (태그 포함 )이 있습니다.
이것은rmi
이미지를 어렵게 만듭니다 (강제하거나 그렇지 않으면 먼저 올바르게 태그가 지정된 항목을 삭제하거나 다이제스트로 삭제해야합니다.
답변
docker images | grep none | awk '{ print $3; }' | xargs docker rmi
간단하게 시도 할 수 있습니다.
답변
docker image prune 은 매달린 이미지 (태그 없음)를 모두 제거합니다. docker image prune -a는 해당 이미지를 사용하는 컨테이너가없는 이미지도 제거합니다.
매달린 이미지와 사용되지 않은 이미지의 차이점은 이 stackoverflow 스레드에 설명되어 있습니다.
답변
갈 수 있습니다 docker rmi $(docker images -f "dangling=true" -q)
. 더 많은 옵션 은 이미지 문서 를 참조하세요.
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 94870cda569b 4 seconds ago 673MB
python 2.7 320a06f42b5f 10 days ago 673MB
mysql latest e799c7f9ae9c 2 months ago 407MB
gcavalcante8808/semaphore latest 86e863e11461 2 months ago 537MB
redis latest e32ef7250bc1 2 months ago 184MB
rabbitmq 3.6.9-management 7e69e14cc496 2 months ago 179MB
rabbitmq 3.6.9 eb2e4968538a 2 months ago 179MB
jordan/rundeck latest 6d40b57b1572 2 months ago 660MB
rabbitmq 3.5.6-management dbfe8d18809a 19 months ago 304MB
$ docker rmi $(docker images --format '{{.ID}}' --filter=dangling=true)
Deleted: sha256:94870cda569b8cf5f42be25af107d464c993b4502a1472c1679bf2d213b6c0a6
답변
docker 문서 에 따르면 태그가없는 (매달린) 이미지 만 나열 할 수 있습니다.
$ docker images -f "dangling=true"
다음과 docker rmi
같은 명령으로 리디렉션하십시오 .
$ docker rmi $(docker images -f "dangling=true" -q) --force
공지 사항 -q
PARAM 그게 전부는 용기의 숫자 ID를 보여줍니다.
답변
‘댕글 링’필터가 더 이상 작동하지 않는지 확인할 수 있습니다.
$ docker images -f “dangling=true” -q
Error response from daemon: Invalid filter 'dangling'
Docker 시스템 정리 를 사용 하여 매달린 이미지 제거
$ docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
Are you sure you want to continue? [y/N]
--force
확인 프롬프트가 아닌 경우 사용할 수 있습니다.
$ docker system prune --force
답변
다음 명령을 실행하십시오.
docker image prune --filter="dangling=true"