[docker] Docker는 <없음> TAG 이미지를 제거합니다.

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

공지 사항 -qPARAM 그게 전부는 용기의 숫자 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"