programing

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

codeshow 2023. 10. 29. 20:02
반응형

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

도커 이미지 프루닝의 도커 설명서에서 -a 플래그를 사용하여 다음 작업을 수행할 수 있습니다.

매달린 이미지뿐만 아니라 사용하지 않는 모든 이미지 제거

나중에

매달린 이미지를 모두 제거합니다.-a를 지정하면 컨테이너에서 참조하지 않는 모든 이미지도 제거됩니다.

달링 이미지가 무엇인지, 달링과 사용하지 않는 이미지의 차이점이 무엇인지 누가 설명해 줄 수 있습니까?

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

반면에 달랑달랑하는 이미지는 이미지의 새로운 빌드를 만들었을 뿐 새로운 이름이 붙여지지 않았습니다.그래서 당신이 가지고 있는 오래된 이미지는 "엉클어진 이미지"가 됩니다.그 옛날 이미지들은 태그 없이 표시되는 것들입니다."<none>" 당신이 달릴 때 그 이름으로docker images.

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

Dangling Images를 가장 안전하고 쉽게 정리할 수 있는 방법

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

도커 이미지는 여러 레이어로 구성됩니다.행글링 이미지는 태그가 지정된 이미지와 관련이 없는 레이어입니다.더 이상 목적을 달성하지 못하고 디스크 공간을 소모합니다.

참고: 사용하지 말 것을 권장합니다.prune생산 중에, 왜냐하면docker system prune -a는 이전 릴리스로 롤백할 수 없는 컨테이너에서 참조하지 않는 모든 이미지를 제거합니다.

필터 플래그를 추가하여 매달린 영상을 나열하려면,-f의 가치를 가지고dangling=truedocker 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 작업을 실행하여 해당 엉킴을 삭제할 때 위의 내용을 사용하여 작업이 성공적으로 실행되는지 확인합니다.젠킨스의 경우처럼 기계에 매달려 있는 것이 없더라도 아래의 commad 작업으로 자유 스타일 작업을 실행하면 절대 실패하지 않습니다.

이렇게 하면 널려 있는 이미지를 정리하고 디스크 공간을 다시 사용할 수 있도록 하는 가장 안전하고 쉬운 방법입니다.

도커의 이미지는 종종 이미지 ID라고 불리는 sha256 다이제스트에 의해 참조됩니다.이미지가 도커 호스트에 존재하는 데 필요한 것은 이 다이제스트뿐입니다.일반적으로 이러한 다이제스트를 가리키는 태그(예: 'busybox:latest' 태그가 현재 이미지 ID c30178c523을 가리키는 경우)가 있습니다.내 시스템상에서

여러 태그가 동일한 이미지를 가리킬 수 있으며, busybox의 새 복사본을 끄집어내거나 응용 프로그램 이미지의 새 버전을 만들 때와 같이 다른 ID를 가리키도록 모든 태그를 변경할 수 있습니다.

달링 영상은 태그가 없고 하위 영상(예: 다른 버전의 영상을 사용한 이전 영상)이 없는 영상입니다.FROM busybox:latest), 그들을 가리킵니다.그들은 이전에 자신들을 가리키는 태그를 가지고 있었을 수도 있고 나중에 그 태그가 바뀌었을 수도 있습니다.또는 태그(예: a의 출력)를 가진 적이 없을 수도 있습니다.docker build태그 옵션을 포함하지 않음).

일반적으로 이전 이미지 ID를 참조하는 컨테이너가 여전히 실행되고 있지 않는 한 이러한 컨테이너는 제거해도 안전합니다.이들을 유지하는 주된 이유는 빌드 캐싱 목적 때문입니다.

또한 현재 정지된 컨테이너(정지된 컨테이너 포함)에서 사용하지 않는 이미지를 다운로드했을 수도 있습니다.이러한 이미지는 매달린 이미지와는 완전히 다르며, 향후 사용할 계획이 없거나 필요할 때 다른 복사본을 다운로드하는 것을 꺼리지 않는 한 제거해도 안전할 수 있습니다.

행글링 이미지는 태그가 지정된 이미지와 관련이 없는 레이어입니다.더 이상 목적을 달성하지 못하고 디스크 공간을 소모합니다.

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

매달린 이미지를 나열하려면:

docker images -f dangling=true

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

docker images --filter "dangling=true"

docker image prune모든 행잉 이미지를 삭제합니다.

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

docker image prune -a사용하지 않은 이미지뿐만 아니라 모든 매달림 이미지를 삭제합니다.

일반적으로 사용하지 않는 모든 이미지를 일정 시간까지 제거하지는 않을 것입니다.따라서 필터로 제거하는 것이 좋습니다.

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

이미지 스크린샷에서 "none" 이름은 매달린 이미지입니다.이미지가 매달려 있다는 것은 이미지의 새 빌드를 만들었지만 새 이름이 지정되지 않았다는 것입니다.그래서 당신이 가지고 있는 오래된 이미지는 "엉클어진 이미지"가 됩니다.이전 이미지는 태그 없이 도커 이미지를 실행하면 이름에 ""이 표시되는 이미지입니다.

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

여기 https://forums.docker.com/t/how-to-delete-cache/5753 에서 aliases(Andyneff)의 도움으로 매달린 이미지를 제거하는 유용한 명령어를 보았습니다.

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)

이렇게 하면 캐시에 있는 모든 이미지가 삭제되고 제거됩니다.

언급URL : https://stackoverflow.com/questions/45142528/what-is-a-dangling-image-and-what-is-an-unused-image

반응형