← 전체 글로 돌아가기

Docker

Docker prune 실행 전에 이미지 목록을 먼저 보자

docker prune은 편하지만 잘못하면 필요한 이미지를 삭제할 수 있다.

Docker prune이 위험한 이유

Docker는 사용하다 보면 쌓인 이미지와 컨테이너로 디스크가 가득 찬다. prune은 이들을 한 번에 정리하는 명령어다:

docker system prune

편하지만 위험하다. 예상치 못하게 필요한 이미지를 삭제할 수 있다.

먼저 확인하기

prune을 실행하기 전에 현재 상태를 보자:

# 사용 중인 이미지
docker images

# 더 상세한 정보
docker images --all
docker images --digests

# 정지된 컨테이너
docker ps -a

# 미사용 이미지만
docker images --filter "dangling=true"

Dangling 이미지와 Tag 없는 이미지의 차이

  • Dangling: 태그가 없고 컨테이너가 사용하지 않는 이미지
  • Untagged: 여러 버전이 있을 때 이전 버전
# Dangling만 삭제
docker image prune

# 사용하지 않는 모든 이미지 삭제 (-a)
docker image prune -a

-a 옵션은 주의해야 한다. 최근에 사용한 이미지도 삭제될 수 있다.

단계적으로 정리하기

안전하게 정리하려면:

  1. 정지된 컨테이너 삭제
docker container prune
  1. Dangling 이미지 삭제
docker image prune
  1. 사용하지 않는 이미지 확인
docker images --filter "reference=<image>:<tag>"
  1. 필요하면 수동 삭제
docker rmi <image_id>

전체 정리하기

정말 필요하면:

docker system prune -a --volumes

하지만 이건 거의 모든 이미지를 삭제한다. 백업 후 실행하자.

내 실수

프로덕션 환경에서 development 이미지가 많다고 무심코 prune -a를 실행했다가, 최근에 배포한 이미지도 삭제되어서 다시 빌드해야 했다. 그 이후로는 항상 먼저 docker images를 본다.

정리 스크립트

자주 하는 정리는 스크립트로:

#!/bin/bash
# Dangling 컨테이너와 이미지만 정리
docker container prune -f
docker image prune -f