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


139
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

조금 늦었지만 다른 사용자를 위해이 댓글을 추가해야합니다. Windows 명령 프롬프트를 사용하면 작동하지 않습니다. 명령 프롬프트는 내부 기능을 지원하지 않기 때문입니다. Windows PowerShell을 함께 정확한 라인을 시도
어 - 한에게

1
docker rmi $(docker images -a | grep "^<none>" | awk '{print $3}')
Ondra Žižka

docker rmi $(docker images | grep "<none>" | awk "{print $3}")
David

5
docker rmi $(docker images -f dangling=true -q)
Jinna Balu

@Karl Morrison : 당신은 거의 거기에 있었다 : 방금 놓친 -a (--all) in docker images:)
mirekphd

답변:


203

태그가 지정되지 않은 이미지 만 시도하고 나열 할 수 있습니다 (라벨이 없거나 태그가없는 이미지).

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이미지를 어렵게 만듭니다 (강제하거나 그렇지 않으면 먼저 올바르게 태그가 지정된 항목을 삭제하거나 다이제스트로 삭제해야합니다.


6
이것은 <none>나를 위해 태그가 지정된 이미지를 제거하지 않았습니다 (예 :) foo/bar:<none>; 내가 사용했다 docker images --digestsdocker rmi foo/bar@<digest>에 설명 된대로 success.docker.com/KBase/...
Janaka 다라

1
@JanakaBandara 감사합니다. 답변에 귀하의 의견을 포함 시켰습니다 (몇 가지 추가 링크 포함)
VonC

나를 위해sudo docker rmi $(docker images --filter "dangling=true" -q --no-trunc) Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.35/images/json?filters=%7B%22dangling%22%3A%7B%22true%22%3Atrue%7D%7D: dial unix /var/run/docker.sock: connect: permission denied "docker rmi" requires at least 1 argument. See 'docker rmi --help'. Usage: docker rmi [OPTIONS] IMAGE [IMAGE...] [flags] Remove one or more images
Jamie Hutber

@JamieHutber "docker rmi"에는 최소 1 개의 인수가 필요합니다. 즉, 도커 이미지 --filter "dangling = true"-q --no-trunc는 아무 것도 반환하지 않습니다. 즉, 매달린 이미지가 없다는 의미입니까?
VonC

감사합니다 VonC 실제로는 그렇지 않습니다hutber@hutber-blade /var/www/dockerfile-wizard $ sudo docker images --filter "dangling=true" -q --no-trunc sha256:c58f4e4b10b1f862d78f96e90bdf13ffe37993279d0992be46d5c15dad51421e sha256:db28e821bc3f337caf711a664bc529be5db8894dd73c5b013ad814cc1e9fc21b sha256:257936750a7d43ae77c713c2cb18342be935de7d3b8fad23d6664fc64acfe753 sha256:6b815cefeb527885b2b9dd831f7f40b05942f00d1367274833a6274154d8ce43
제이미 Hutber에게

43
docker images | grep none | awk '{ print $3; }' | xargs docker rmi

간단하게 시도 할 수 있습니다.


1
나를위한 가장 빠르고 쉬운 솔루션
Mark

--force끝에 추가 해야합니다. 따라서 명령은 다음과 같습니다. docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force
Munim Dibosh

23

docker image prune 은 매달린 이미지 (태그 없음)를 모두 제거합니다. docker image prune -a는 해당 이미지를 사용하는 컨테이너가없는 이미지도 제거합니다.

매달린 이미지와 사용되지 않은 이미지의 차이점은 이 stackoverflow 스레드에 설명되어 있습니다.


6

갈 수 있습니다 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

5

docker 문서 에 따르면 태그가없는 (매달린) 이미지 만 나열 할 수 있습니다.

$ docker images -f "dangling=true"

다음과 docker rmi같은 명령으로 리디렉션하십시오 .

$ docker rmi $(docker images -f "dangling=true" -q) --force

공지 사항 -qPARAM 그게 전부는 용기의 숫자 ID를 보여줍니다.


1
제가 2015 년 에 제 답변 에서 제안한 것과 비슷하지 않나요?
VonC

5

'댕글 링'필터가 더 이상 작동하지 않는지 확인할 수 있습니다.

$ 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

5

다음 명령을 실행하십시오.

docker image prune --filter="dangling=true"

4

나는 docker image prune -f가장 유용하다는 것을 알았고 일상 작업 중에 항상 사용합니다. 태그 -f를 사용하면 확인 메시지가 표시되지 않습니다. 자세한 내용은 여기


3

none다음을 사용하여 저장소 이름 이있는 이미지를 제거 합니다.

docker rmi $(docker images | grep "^<none" | awk '{print $3}')

none태그 또는 저장소 이름 이있는 이미지 제거 :

docker rmi $(docker images | grep "none" | awk '{print $3}')


2

docker system prune 트릭을 할 것입니다.

- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache

그러나주의해서 사용하십시오!


2

모든 이미지를 제거하려면 none다음을 실행할 수있는 중지 된 모든 컨테이너를 제거해야합니다.

docker rm $(docker ps -a -q)

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

docker image prune


1

아래 명령이 저에게 효과적입니다. 이것은 단순한 grep ""이미지이며 도커 이미지 ID를 얻고 모든 이미지를 제거했습니다. 필요한 간단한 단일 명령.

docker rmi $(docker images |grep "<none>"| awk '{print $3}')


1

이것은 tansadio의 답변의 확장입니다.

다음과 같은 오류가 발생하는 경우 :

Error response from daemon: conflict: unable to delete <> (must be forced) - image is being used by stopped container <>

다음과 --force같이 강제 할 수 있습니다 .

docker images | grep none | awk '{ print $3; }' | xargs docker rmi --force

1

다음은 모든 <none>이미지 를 제거합니다.

docker rmi $(docker images | grep none | awk '{print $3}')

권장하지는 않지만 로 변경 docker rmi하여 강제로 제거 할 수 있습니다 docker rmi -f.

일부 <none>이미지는 다른 이미지와 관련 될 수 있으므로 안전을 위해 -f태그를 사용하지 마십시오 .


0

간단하고 명확합니다.

이 간단하고 선명한 오류를 이해하는 데 3 일이 걸렸습니다.

Docker 이미지가 성공적으로 빌드되지 않았습니다.

Step 7/13 : COPY jupyter_notebook_config.py /root/.jupyter/
 ---> bf29ce6fe6dc
Step 8/13 : COPY notebooks /notebooks
COPY failed: stat /var/lib/docker/tmp/docker-builder776981166/notebooks: no such file or directory
anarchist@anarchist-desktop:~/Documents/sam/dockerDem$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
<none>              <none>              bf29ce6fe6dc        9 seconds ago       1.27GB
ubuntu              16.04               a51debf7e1eb        3 weeks ago         116MB

그런 다음 Dockerfile에서 8 번째 줄을 제거했는데 이번에는 성공 신호였습니다.

Successfully built b6724370f8ca
Successfully tagged dem:expo
anarchist@anarchist-desktop:~/Documents/sam/dockerDem$ docker run -it -p 8888:8888 dem:expo
[I 06:11:38.984 NotebookApp] Writing notebook server cookie secret to /root/.local/share/jupyter/runtime/notebook_cookie_secret
[I 06:11:39.011 NotebookApp] Serving notebooks from local directory: /
[I 06:11:39.011 NotebookApp] The Jupyter Notebook is running at:
[I 06:11:39.011 NotebookApp] http://(296d81166725 or 127.0.0.1):8888/?token=496feb282ef749c05277ef57a51e8a56fedb1c6b337b9f92

성공적으로 태그가 지정된 dem : expo,이 줄은 도커 프로세스 중 imp입니다.


0

docker rmi -f $ (docker images -a | awk 'NR> 1 && $ 2 == ""{print $ 3}')


0

모두

Windows 애호가를위한 PowerShell 명령 공유 (bash, grep 또는 awk가없는 경우)

(docker images) -like '*<none>*' | ForEach-Object { 
  $imageid=($_ -split "\s+")[2]
  docker rmi -f $imageid
}


0

배출 된 모든 컨테이너를 제거합니다.

docker rm $(docker container ls -a -f status=exited -q)

또는 패턴에 따라 용기 제거

docker images -a | grep "pattern" | awk '{print $3}' | xargs docker rmi

0

태그로 도커 이미지 ID 목록을 보려면 이것을 시도하십시오. <none>

docker images -a | awk '/^<none>/ {print $3}'

태그로 모든 이미지를 삭제할 수 있습니다 <none>. 이것은 나를 위해 일했습니다.

docker rmi $(docker images -a | awk '/^<none>/ {print $3}')


-1

시험

docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "<none>" {print $3}') , 더 깨끗한 명령이있을 수 있습니다.

업데이트 됨


1
큰 노노 인 <none> 태그가 지정되지 않은 이미지 제거 됩니다 .
K-SO의 독성이 증가하고 있습니다.

나는 내 대답을 upated 한
user2915097

이 명령 docker rmi -f $(docker images -a | awk 'NR> 1 || $2 = "" {print $3}은 아무것도하지 않습니다!
K-SO의 독성이 증가하고 있습니다.


-2

매달린 이미지는 이전 빌드에서 가져온 유령이며 다음을 사용하여 삭제하면됩니다. docker rmi $ (docker images -f "dangling = true"-q)


OP는 그가이 정확한 명령을 이미 시도했지만 실패했다고 말합니다. 또한이 답변은 이미 두 번 이상 주어졌습니다.
CaringDev

-5
docker rmi $(docker images -a -q)

사용중인 다음 이미지를 명시했습니다. 이 명령은 원하지 않는 이미지를 제거한다고 생각합니다.


2
이것은 모든 이미지를 제거하지 않습니까?
marianobianchi

3
이렇게하면 사용하지 않는 모든 이미지가 제거되며 정답으로 표시되지 않아야합니다.
Ghashange 17:01에
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.