[Docker] docker prune 으로 사용하지 않는 오브젝트 정리

2024. 11. 29. 19:18·Infra

docker prune 명령어

docker 의 prune 명령어를 이용하면 사용하지 않는 컨테이너, 이미지, 네트워크, 볼륨 등을 일괄 삭제할 수 있다.

docker container prune
docker image prune
docker network prune
docker volume prune

 

--filter 를 이용해 필터링 조건을 추가할 수 있다.  

# 24시간동안 사용하지 않은 이미지
docker container prune --filter "until=24h"

# env=dev 라벨을 가진 볼륨
docker volume prune --filter "label=env=dev"

# 72시간동안 사용되지 않는 builder 캐시
docker builder prune --filter "unused-for=72h"

# env 키가 없는 이미지
docker container prune --filter label!=env
 

 

`--filter` 명령어 지원 여부는 아래와 같다. 
 
docker system prune 지원 until, label, label!
docker container prune 지원 until, label, label!
docker image prune 지원 dangling=true/false, until, label, label!
docker volume prune 지원 label, label!
docker network prune 지원 label, label!
docker builder prune 지원 until, label, label!, unused-for

 

이미지 정리하기

프로젝트를 하면서 ec2 컨테이너 내부에 이미지들이 쌓였는데, prune 명령어로 한번에 정리해보자.

 

저장공간을 얼마나 쓰고 있는지 확인하기 위해 docker에서 디스크 사용상태를 확인한다.

docker system df

 

-v 옵션으로 이미지별, 컨테이너별, 로컬 볼륨별 정보으로 더 자세히 볼 수 있다.

docker system df -v

 

 

이미지 부분만 자세히 보면 `<none>` 으로 표시된 이미지들이 보인다. CI/CD 과정에서 태그를 지정하지 않고 :latest 로 이미지를 끌어다 배포하는 경우, EC2 내부에 기존 이미지들이 `<none>` 으로 표시되면서 남아있게 된다. 이를 dangling된 상태라 한다.

 

dangling 상태는 같은 이름으로 도커 이미지를 끌어와 해당 이미지를 지칭하는 이름이 없어진 상태를 의미한다.

  • 빌드 때마다 고유한 태그를 붙여서 이미지를 구별해주면 dangling이미지를 방지할 수 있다.

docker image prune 명령어가 삭제하고자 하는 대상은 dangling된 이미지들이다. 보통 dangling 된 이미지를 다시 사용하는 경우는 드물기 때문에 prune 으로 삭제해준다.

docker image prune 

 

dangling 상태 이미지들이 모두 지워진 것을 확인할 수 있다. 여기서 dangling 상태가 아닌, 현재 컨테이너에서 사용하고 있지 않은 이미지들까지 범위를 넓혀 삭제하려면 -a 옵션을 이용한다.

docker image prune -a

 

 

docker system df

약 1GB 정도 디스크 공간이 확보되었다.

 

한 방에 정리하기

이미지 뿐만 아니라 다른 docker오브젝트들도 한 방에 정리하려면 아래 명령어를 이용할 수 있다.

// —volumes 로 사용하지 않는 volume 을 정리하고 -a 옵션으로 사용하지 않는 모든 이미지를 제거
docker system prune —volumes -a

삭제되는 것은 아래와 같다.

  • 중지된 container
  • 사용하지 않는 image
  • 사용하지 않는 network
  • 빌드 캐시 (Dockerfile 빌드 중 생성된 임시 데이터)
  • 컨테이너에서 참조하지않는 docker 볼륨들

'Infra' 카테고리의 다른 글

yaml 파일을 읽고 수정할때 유용한 yq 알아보기  (0) 2025.06.19
[Docker] Single-platform 이미지와 Multi-platform 이미지, Multi-platform 이미지 빌드를 위한 Buildx  (2) 2025.05.30
[Linux] 환경변수 (Environment Variable) 개념과 활용  (0) 2025.05.24
'Infra' 카테고리의 다른 글
  • yaml 파일을 읽고 수정할때 유용한 yq 알아보기
  • [Docker] Single-platform 이미지와 Multi-platform 이미지, Multi-platform 이미지 빌드를 위한 Buildx
  • [Linux] 환경변수 (Environment Variable) 개념과 활용
기억은 RAM, 기록은 HDD
기억은 RAM, 기록은 HDD
  • 기억은 RAM, 기록은 HDD
    적립식 개발
    기억은 RAM, 기록은 HDD
  • 전체
    오늘
    어제
    • 분류 전체보기 (45)
      • Gradle (1)
      • 알고리즘 (14)
        • 강한 연결 요소 (1)
        • BFS (1)
        • 다이나믹 프로그래밍 (2)
        • 그리디 (1)
        • 투 포인터 (2)
        • 비트마스크 (1)
        • 스택 (1)
        • 백트래킹 (1)
        • 유니온-파인드 (1)
        • 기초 기하학 (1)
        • 분할정복을 이용한 거듭제곱 (1)
        • 볼록 껍질 (1)
      • JPA (3)
      • Java (9)
      • Spring (9)
      • Git&GitHub (2)
      • Infra (4)
  • 최근 글

  • 인기 글

  • 태그

    데몬쓰레드
    enum활용법
    spring cors 해결
    정렬
    비트마스킹
    java synchronized
    자바synchronized키워드
    enum정리
    완전탐색
    자바future
    java 라이브러리 추가
    기하학
    java
    githubworkflow
    자바 runnable
    Github
    자바 callable
    @embedded
    thread 와 runnable
    투 포인터
  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.1
기억은 RAM, 기록은 HDD
[Docker] docker prune 으로 사용하지 않는 오브젝트 정리
테마상단으로

티스토리툴바