내 잡다한 노트
도커 디스크 용량 확보 prune 본문
docker를 자주 사용하다보니 dangling image들이 존재한다.
dangling은 none:none 처럼 이름도 태그도 달려있지 않은 이미지이다.
이게 생기는 원인은 이미지 빌드를 하는데 기존 이미지 이름과 태그가 동일할 경우, 기존 이미지가 이렇게 바뀌게 된다. 쓰지 않으므로 삭제하면 된다.
docker images를 통해 확인할 수 있다.
(만약 none 으로 된 image들이 있다면)
docker image prune 를 해주자. 이렇게 되면 가동중인 컨테이너의 이미지를 제외하고 안쓰이는 것들을 삭제할 수 있다.
docker images -f "dangling=true" 로 none들이 어떤게 있는지 확인할 수 있다.
dangling 이미지들을 정리해도 용량이 크게 확보되지 않을 수 있다.
docker images 에서 보이는 출력에는 20G의 dangling image를 삭제했는데 실제로 prune 해보면 20G이 삭제가 안된것을 볼 수 있는데 그 이유는 도커 이미지들이 layer들로 구성돼있다보니 layer가 다른 이미지에서 공유될 수 있다.
만약 삭제할 이미지의 layer가 다른 이미지에서도 사용되고 있다면 실제로 삭제되지 않게된다.
또한, 이미지 빌드 시 캐시를 사용하게 된다. 삭제할 이미지의 layer가 캐시되어 있다면 해당 layer를 삭제하지 않게 된다.
잘 안쓰이는 image들을 모두 삭제하려면
docker image prune -a
현재 사용중인 컨테이너의 이미지가 아닌 이미지들을 삭제한다.
prune에는 여러 곳에서 적용할 수 있다.
image, container, volume, network. 이것들을 모두 한번에 저장하는건 system prune 하면 된다.
docker system df 를 하면
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 76 19 46.94GB 43.97GB (93%)
Containers 31 23 2.231GB 8.525kB (0%)
Local Volumes 266 3 8.134GB 5.266GB (64%)
Build Cache 1872 0 115.4GB 115.4GB
이렇게 확인할 수 있다. 빌드 캐시에도 용량이 크게 쌓이는데 이걸 정리하려면 docker build prune 을 하면 된다.
'DevOps > docker' 카테고리의 다른 글
/var/lib/docker/overlay2 (0) | 2024.08.09 |
---|---|
도커 레포지토리와 레지스터 (0) | 2024.06.27 |
docker swarm 실습 (0) | 2024.06.08 |
도커 네트워크에 대해 간단히 알아보기 (0) | 2023.11.09 |
Dockerfile 만들기 (1) | 2023.11.03 |