Docker를 오랫동안 사용하다 보면 어느 순간 디스크 용량이 부족해지는 경우가 자주 발생합니다. 새로운 이미지를 계속 다운로드하고, 테스트용 이미지를 반복해서 생성하다 보면 사용하지 않는 이미지가 수십 개에서 많게는 수백 개까지 쌓이게 됩니다.
특히 CI/CD 환경이나 개발 서버에서는 하루에도 수십 번씩 이미지를 빌드하기 때문에 불필요한 이미지가 빠르게 증가합니다. 이러한 이미지는 디스크 공간만 차지할 뿐 실제 서비스에는 사용되지 않습니다.
이럴 때 사용하는 명령어가 바로 docker image prune입니다.
Docker Image Prune은 사용하지 않는 이미지를 찾아 안전하게 삭제하는 기능을 제공합니다. 불필요한 이미지를 제거하면 저장 공간을 확보할 수 있고 Docker 관리도 훨씬 수월해집니다.
이번 글에서는 Docker Image Prune의 개념부터 기본 사용법, 옵션 설명, 실무 활용 사례, 주의사항까지 자세히 알아보겠습니다.
Docker Image Prune이란 무엇인가?
Docker Image Prune은 사용하지 않는 Docker 이미지를 삭제하는 명령어입니다.
여기서 사용하지 않는 이미지란 현재 어떤 컨테이너에서도 참조하지 않는 이미지를 의미합니다.
Docker는 이미지를 삭제하더라도 실행 중인 컨테이너에서 사용하는 이미지는 자동으로 보호하기 때문에 비교적 안전하게 사용할 수 있습니다.
Docker Image Prune는 언제 사용하는가?
Docker Image Prune은 다음과 같은 상황에서 자주 사용됩니다.
- 디스크 용량이 부족할 때
- 테스트 이미지가 많이 쌓였을 때
- CI/CD 서버를 정리할 때
- 이미지 빌드를 자주 수행하는 개발 서버
- 오래된 이미지 캐시를 제거할 때
정기적으로 실행하면 Docker 저장 공간을 효율적으로 관리할 수 있습니다.
Docker Image Prune 기본 사용법
기본 사용 방법은 다음과 같습니다.
docker image prune
명령을 실행하면 삭제 여부를 확인합니다.
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N]
y를 입력하면 삭제가 진행됩니다.
Dangling Image란 무엇인가?
Docker Image Prune이 기본적으로 삭제하는 대상은 Dangling Image입니다.
Dangling Image는 태그(Tag)가 없고 더 이상 사용되지 않는 이미지입니다.
이미지를 여러 번 빌드하거나 새로운 태그를 생성하는 과정에서 이전 이미지가 남아 이러한 상태가 됩니다.
현재 Dangling 이미지는 다음 명령으로 확인할 수 있습니다.
docker images -f dangling=true
출력 예시는 다음과 같습니다.
REPOSITORY TAG IMAGE ID
<none> <none> 8adf1256ab34
<none> <none> 5f8bc6d78219
이러한 이미지는 대부분 삭제해도 문제가 없습니다.
모든 사용하지 않는 이미지 삭제
기본 명령은 Dangling Image만 삭제합니다.
사용하지 않는 모든 이미지를 삭제하려면 다음 옵션을 사용합니다.
docker image prune -a
여기서 -a는 현재 어떤 컨테이너에서도 사용하지 않는 모든 이미지를 삭제합니다.
디스크 용량을 크게 확보할 수 있지만 필요한 이미지까지 삭제될 수 있으므로 주의해야 합니다.
삭제 전 이미지 확인하기
삭제 전에 현재 저장된 이미지를 먼저 확인하는 것이 좋습니다.
docker images
특히 운영 서버에서는 삭제 전에 이미지 목록을 반드시 확인하는 습관을 가지는 것이 좋습니다.
특정 기간보다 오래된 이미지 삭제
Docker는 필터 기능도 제공합니다.
예를 들어 30일 이상 사용하지 않은 이미지를 삭제하려면 다음과 같이 사용할 수 있습니다.
docker image prune -a --filter "until=720h"
720시간은 약 30일입니다.
개발 서버에서는 이러한 방식으로 자동 정리 작업을 수행하는 경우가 많습니다.
Docker Image Prune 실무 활용 예제
Docker Image Prune은 개발 환경뿐만 아니라 운영 서버에서도 매우 자주 사용하는 디스크 관리 명령어입니다. 특히 지속적으로 이미지를 빌드하는 CI/CD 서버에서는 정기적으로 실행하는 것이 좋습니다.
CI/CD 서버 디스크 정리
Jenkins나 GitHub Actions, GitLab CI 서버에서는 새로운 이미지를 계속 생성합니다.
빌드가 반복될수록 이전 이미지가 계속 남아 디스크 용량을 차지하게 됩니다.
빌드 완료 후 다음 명령을 실행하면 사용하지 않는 이미지를 자동으로 정리할 수 있습니다.
docker image prune -f
-f 옵션은 확인 메시지 없이 바로 삭제를 진행합니다.
자동화 스크립트에서 자주 사용되는 옵션입니다.
개발 서버 용량 확보
개발 서버에서는 테스트 이미지를 자주 생성합니다.
프로젝트가 끝난 후 다음 명령으로 불필요한 이미지를 제거할 수 있습니다.
docker image prune -a
수십 GB 이상의 저장 공간을 확보하는 경우도 흔합니다.
오래된 이미지 자동 삭제
운영 서버에서는 오래된 이미지만 삭제하는 것이 더욱 안전합니다.
예를 들어 7일 이상 사용하지 않은 이미지를 삭제하려면 다음과 같이 실행합니다.
docker image prune -a --filter "until=168h"
정기적으로 Cron 작업에 등록하면 서버를 항상 깨끗한 상태로 유지할 수 있습니다.
삭제 가능한 이미지 확인
삭제 전에 현재 이미지 목록을 먼저 확인하는 것이 좋습니다.
docker images
현재 실행 중인 컨테이너에서 사용하는 이미지인지 확인한 후 삭제하면 더욱 안전합니다.
Linux 서버 문제 해결
운영 중인 Docker 서버에서 디스크 사용률이 95%를 넘어 신규 이미지를 다운로드할 수 없는 문제가 발생했습니다.
먼저 디스크 사용량을 확인했습니다.
docker system df
출력 결과를 보니 사용하지 않는 이미지가 18GB 이상 남아 있었습니다.
먼저 Dangling 이미지를 삭제했습니다.
docker image prune
이후 사용하지 않는 모든 이미지를 삭제했습니다.
docker image prune -a
삭제 후 다시 확인했습니다.
docker system df
약 20GB 이상의 저장 공간이 확보되었고 새로운 이미지를 정상적으로 다운로드할 수 있었습니다.
운영 서버에서는 이러한 작업을 월 1회 정도 수행하면 디스크 부족 문제를 예방할 수 있습니다.
Docker Image Prune 사용 시 주의사항
Docker Image Prune을 사용할 때는 몇 가지 사항을 반드시 확인해야 합니다.
첫 번째는 -a 옵션 사용 시 현재 컨테이너에서 사용하지 않는 모든 이미지가 삭제된다는 점입니다.
필요한 이미지도 다시 다운로드해야 할 수 있으므로 운영 환경에서는 신중하게 사용해야 합니다.
두 번째는 실행 중인 컨테이너에는 영향을 주지 않습니다.
현재 실행 중인 컨테이너가 사용하는 이미지는 삭제되지 않습니다.
세 번째는 삭제된 이미지는 복구할 수 없습니다.
다시 사용하려면 Docker Hub에서 다운로드하거나 Docker Save 백업 파일을 이용하여 복원해야 합니다.
네 번째는 Docker Volume이나 컨테이너는 삭제되지 않습니다.
Docker Image Prune은 이미지만 정리하는 명령어입니다.
Best Practice
Docker Image Prune을 사용할 때는 다음과 같은 방법을 추천합니다.
- 삭제 전
docker images로 현재 이미지를 확인합니다. - 운영 서버에서는 먼저 기본 Prune을 실행합니다.
-a옵션은 충분히 확인한 후 사용합니다.- CI/CD 서버에서는
-f옵션으로 자동 정리를 수행합니다. - Docker System DF로 확보된 용량을 함께 확인합니다.
- Docker System Prune과 함께 정기적인 유지보수를 수행합니다.
이러한 관리 방법을 적용하면 Docker 서버의 저장 공간을 효율적으로 관리할 수 있습니다.
자주 묻는 질문
Docker Image Prune은 실행 중인 컨테이너 이미지도 삭제하나요?
아닙니다. 실행 중인 컨테이너가 사용하는 이미지는 삭제되지 않습니다.
Dangling Image만 삭제하려면 어떻게 하나요?
기본 명령인 다음 명령을 사용하면 됩니다.
docker image prune
모든 사용하지 않는 이미지를 삭제하려면 어떻게 하나요?
다음 명령을 사용합니다.
docker image prune -a
삭제한 이미지를 복구할 수 있나요?
아니요. 복구 기능은 없습니다. Docker Hub에서 다시 다운로드하거나 Docker Save 백업 파일을 이용해야 합니다.
마무리
Docker Image Prune은 사용하지 않는 이미지를 정리하여 디스크 공간을 확보하는 데 매우 중요한 명령어입니다.
특히 개발 서버와 CI/CD 환경에서는 이미지가 빠르게 증가하기 때문에 정기적으로 실행하면 저장 공간 부족 문제를 예방할 수 있습니다.
다만 -a 옵션은 사용하지 않는 모든 이미지를 삭제하므로 운영 환경에서는 반드시 현재 사용 중인 이미지를 확인한 후 실행하는 것이 안전합니다.
Docker 서버를 장기간 안정적으로 운영하려면 Docker Image Prune을 정기적인 유지보수 작업에 포함하는 것을 추천합니다.