[docker] 매달려있는 이미지 란 무엇이며 사용되지 않은 이미지는 무엇입니까?

docker image prune 의 docker documentation 에서 -a 플래그를 사용하여

매달린 이미지뿐만 아니라 사용되지 않은 이미지를 모두 제거하십시오.

그리고 나중에

매달려있는 이미지를 모두 제거하십시오. -a를 지정하면 컨테이너가 참조하지 않는 모든 이미지도 제거됩니다.

매달린 이미지가 무엇인지, 매달린 이미지와 사용하지 않은 이미지의 차이점이 무엇인지 설명해 줄 수 있습니까?



답변

사용하지 않은 이미지는 이미지가 컨테이너에서 할당되거나 사용되지 않았 음을 의미합니다. 예를 들어docker ps -a 면 종료되고 현재 실행중인 모든 컨테이너가 나열됩니다. 컨테이너 내부에서 사용되는 것으로 표시된 모든 이미지는 “사용 된 이미지”입니다.

반면에 매달려있는 이미지는 이미지의 새 빌드를 만들었으나 새 이름이 지정되지 않았 음을 의미합니다. 따라서 이전 이미지는 “매달린 이미지”가됩니다. 이 오래된 이미지는 태그가 지정되지 않은 이미지이며 <none>실행시 이름에 ” ” 가 표시됩니다docker images .

를 실행하면 docker system prune -a사용하지 않는 이미지와 매달려있는 이미지가 모두 제거됩니다. 따라서 컨테이너에서 사용중인 이미지는 종료되었거나 현재 실행중인 이미지에 영향을 미치지 않습니다.


답변

매달려있는 이미지를 정리하는 가장 안전하고 쉬운 방법

docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi

도커 이미지는 여러 레이어로 구성됩니다. 매달려있는 이미지는 태그가 지정된 이미지와 관련이없는 레이어입니다. 더 이상 목적을 제공하지 않으며 디스크 공간을 소비합니다.

참고 : prune프로덕션에서는 사용하지 않는 것이 좋습니다.docker system prune -a . 컨테이너에서 참조하지 않는 모든 이미지는 제거 이전 릴리스로 롤백 할 수 없습니다.

필터 플래그를 추가함으로써 화상 매달려 나열 -f값의로 dangling=true받는docker images .

매달려있는 이미지 목록

docker images -f dangling=true

매달려있는 이미지 제거

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

또는

docker images --quiet --filter=dangling=true | xargs --no-run-if-empty docker rmi

매달려있는 항목을 삭제하기 위해 cron 작업을 실행할 때 위의 작업을 사용하여 작업이 성공적으로 실행되도록하십시오. Jenkins와 마찬가지로 belowow commad 작업으로 자유 스타일 작업을 실행하면 컴퓨터에 매달려있는 물건이 없어도 절대 실패하지 않습니다.

이것은 매달린 이미지를 정리하고 사용하기 위해 디스크 공간을 다시 확보하는 가장 안전하고 쉬운 방법입니다.


답변

docker의 이미지는 sha256 다이제스트에 의해 참조되며 종종 이미지 ID라고합니다. 이 다이제스트는 이미지가 docker 호스트에 존재하는 데 필요한 전부입니다. 일반적으로 이러한 다이제스트를 가리키는 태그가 있습니다. 예를 들어 busybox : latest current는 내 시스템의 이미지 ID c30178c523 …을 가리 킵니다. 여러 개의 태그가 동일한 이미지를 가리킬 수 있으며, 예를 들어 busybox : latest의 새 사본을 가져 오거나 새 버전의 애플리케이션 이미지를 빌드 할 때와 같이 다른 ID를 가리 키도록 태그를 변경할 수 있습니다.

매달려있는 이미지는 태그가없고 자식 이미지가없는 이미지입니다 (예 : 다른 버전의 FROM busybox:latest 가리키는 . 이전에 태그를 가리키고 나중에 태그가 변경되었을 수 있습니다. 또는 태그가 없었을 수도 있습니다 (예 : docker build태그 옵션을 포함하지 않은 출력 ). 이전 이미지 ID를 참조하는 컨테이너가 아직 실행되지 않는 한 일반적으로 제거하는 것이 안전합니다. 이를 유지하는 주된 이유는 빌드 캐싱 목적입니다.

또한 컨테이너 (중지 된 컨테이너 포함)에서 현재 사용하지 않는 이미지를 다운로드했을 수 있습니다. 이 이미지는 매달려있는 이미지와는 완전히 다르므로 나중에 사용할 계획이 없거나 필요할 때 다른 사본을 다운로드하지 않아도되는 경우 제거해도 안전 할 수 있습니다.


답변

매달려있는 이미지는 태그가 지정된 이미지와 관련이없는 레이어입니다. 더 이상 목적을 제공하지 않으며 디스크 공간을 소비합니다.

사용하지 않은 이미지는 컨테이너에 할당되거나 사용되지 않은 이미지입니다.

매달려있는 이미지 목록

docker images -f dangling=true


답변

매달려있는 이미지는 태그가없는 이미지입니다. 다음 명령은 매달려있는 이미지 목록을 제공합니다.

docker images --filter "dangling=true"

docker image prune 매달려있는 이미지를 모두 삭제합니다.

사용하지 않은 이미지는 태그가 있지만 현재 컨테이너로 사용되지 않는 이미지입니다. 나중에 필요할 수도 있고 필요하지 않을 수도 있습니다.

docker image prune -a 매달린 이미지와 사용하지 않은 이미지를 모두 삭제합니다.

일반적으로 어느 때까지 사용하지 않은 모든 이미지를 제거하고 싶지 않습니다. 따라서 필터로 제거하는 것이 좋습니다.

docker image prune -f --filter "until=6h"


답변

https://forums.docker.com/t/how-to-delete-cache/5753 : 매달린 이미지를 제거하는 유용한 명령 (별칭)을 보았습니다 .

alias docker_clean_images='docker rmi $(docker images -a --filter=dangling=true -q)'
alias docker_clean_ps='docker rm $(docker ps --filter=status=exited --filter=status=created -q)'

첫 번째는 매달린 이미지를 모두 청소합니다. 여러 빌드에서 남은 중간 이미지를 제거하는 데 유용합니다. 두 번째는 중지 된 컨테이너를 제거하기위한 것입니다. 일상적인 유지 관리에 사용하는 별칭입니다.

모든 캐시를 제거하려면 먼저 컨테이너가 사용중인 이미지를 제거 할 수 없으므로 모든 컨테이너를 중지하고 제거해야합니다. 그래서 비슷한

docker kill $(docker ps -q) docker_clean_ps docker rmi $(docker images
-a -q)

이것은 캐시의 모든 이미지를 죽이고 제거합니다.


답변

이미지 스크린 샷에서 “없음”이름은 매달려있는 이미지입니다. 매달려있는 이미지는 이미지의 새 빌드를 만들었으나 새 이름이 지정되지 않았 음을 의미합니다. 따라서 이전 이미지는 “매달린 이미지”가됩니다. 이 오래된 이미지는 태그가 지정되지 않은 것이며 도커 이미지를 실행할 때 이름에 “”가 표시됩니다.

docker system prune -a사용하지 않는 이미지와 매달려있는 이미지를 모두 제거합니다. 따라서 컨테이너에서 사용중인 이미지는 종료되었거나 현재 실행중인 이미지에 영향을 미치지 않습니다.