Docker를 장기간 운영하다 보면 사용하지 않는 이미지(Image), 중지된 컨테이너(Container), 사용하지 않는 네트워크(Network), 빌드 캐시(Build Cache) 등이 계속 쌓이게 됩니다. 이러한 리소스는 서비스를 운영하는 데 직접 사용되지 않지만 디스크 공간을 차지하며 서버 관리도 복잡하게 만듭니다.
특히 개발 서버와 CI/CD 환경에서는 테스트를 반복하면서 수많은 Docker 리소스가 생성되고 삭제됩니다. 시간이 지나면 수십 GB 이상의 불필요한 데이터가 누적되어 디스크 부족 문제를 일으키기도 합니다.
이럴 때 사용하는 명령어가 바로 docker system prune입니다.
Docker System Prune은 사용하지 않는 Docker 리소스를 한 번에 정리하는 명령어입니다. 여러 개의 정리 명령을 각각 실행하지 않아도 불필요한 리소스를 한 번에 삭제할 수 있어 Docker 유지보수에서 가장 많이 사용하는 관리 명령어 중 하나입니다.
이번 글에서는 Docker System Prune의 개념부터 기본 사용법, 삭제 대상, 주요 옵션, 실무 활용 방법까지 자세히 알아보겠습니다.
Docker System Prune이란 무엇인가?
Docker System Prune은 사용하지 않는 Docker 리소스를 한 번에 정리하는 명령어입니다.
중지된 컨테이너, 사용하지 않는 네트워크, Dangling Image, Build Cache 등을 자동으로 삭제하여 Docker 환경을 최적화할 수 있습니다.
운영 서버와 개발 서버 모두에서 자주 사용하는 필수 관리 명령어입니다.
Docker System Prune은 언제 사용하는가?
다음과 같은 상황에서 자주 사용합니다.
- Docker 디스크 공간 확보
- 사용하지 않는 리소스 정리
- 개발 서버 유지보수
- CI/CD 서버 최적화
- Docker 환경 초기 정리
- 디스크 부족 문제 해결
Docker를 오래 사용할수록 실행 빈도가 높은 관리 명령어입니다.
Docker System Prune 기본 사용법
가장 기본적인 사용 방법입니다.
docker system prune
명령을 실행하면 다음과 같은 확인 메시지가 출력됩니다.
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- unused build cache
Are you sure you want to continue? [y/N]
계속 진행하려면 y를 입력하면 됩니다.
확인 메시지 없이 즉시 실행하기
자동화 스크립트에서는 -f 옵션을 자주 사용합니다.
docker system prune -f
확인 메시지 없이 즉시 정리가 진행됩니다.
CI/CD 자동 유지보수 작업에서도 많이 사용하는 방식입니다.
Docker System Prune으로 삭제되는 항목
기본적으로 다음 리소스가 삭제됩니다.
- 중지된 컨테이너(Stopped Containers)
- 사용하지 않는 Docker Network
- Dangling Image
- Build Cache
현재 실행 중인 컨테이너는 삭제되지 않습니다.
또한 사용 중인 이미지도 그대로 유지됩니다.
Docker Volume은 삭제될까?
기본적으로 Docker Volume은 삭제되지 않습니다.
Volume에는 중요한 데이터가 저장되는 경우가 많기 때문입니다.
Volume까지 함께 삭제하려면 --volumes 옵션을 사용해야 합니다.
docker system prune --volumes
이 옵션은 사용하지 않는 Volume까지 함께 삭제하므로 실행 전에 반드시 필요한 데이터가 없는지 확인하는 것이 좋습니다.
모든 사용하지 않는 Image까지 삭제하기
기본적으로는 Dangling Image만 삭제됩니다.
사용하지 않는 모든 이미지를 삭제하려면 다음 옵션을 사용합니다.
docker system prune -a
-a 옵션은 현재 어떤 컨테이너에서도 사용하지 않는 모든 이미지를 삭제하므로 디스크 공간을 크게 확보할 수 있습니다.
Docker System Prune 실무 활용 예제
Docker System Prune은 운영 서버와 개발 서버에서 불필요한 Docker 리소스를 정리할 때 가장 많이 사용하는 명령어입니다.
기본 정리 실행하기
가장 기본적인 사용 방법입니다.
docker system prune
사용하지 않는 Docker 리소스를 정리합니다.
확인 없이 즉시 실행하기
자동화 환경에서는 -f 옵션을 함께 사용합니다.
docker system prune -f
사용자의 확인 없이 즉시 정리가 진행됩니다.
모든 사용하지 않는 이미지까지 삭제하기
기본적으로는 Dangling Image만 삭제됩니다.
사용하지 않는 모든 이미지를 삭제하려면 다음과 같이 실행합니다.
docker system prune -a
디스크 공간을 크게 확보할 수 있지만, 다시 사용할 이미지도 삭제될 수 있으므로 주의해야 합니다.
Volume까지 함께 정리하기
사용하지 않는 Docker Volume도 함께 삭제합니다.
docker system prune --volumes
Volume에는 데이터가 저장될 수 있으므로 실행 전에 반드시 확인해야 합니다.
모든 옵션 함께 사용하기
가장 강력한 정리 방법입니다.
docker system prune -a --volumes -f
사용하지 않는 이미지와 볼륨까지 모두 정리합니다.
테스트 서버를 초기화할 때 자주 사용하는 명령입니다.
정리 전후 사용량 비교하기
먼저 현재 Docker 사용량을 확인합니다.
docker system df
정리 후 다시 확인합니다.
docker system df
확보된 디스크 공간을 쉽게 확인할 수 있습니다.
Linux 서버 문제 해결
GitLab Runner가 설치된 CI 서버에서 Docker 이미지 빌드가 실패하기 시작했습니다.
확인 결과 디스크 공간이 거의 모두 사용된 상태였습니다.
관리자는 먼저 Docker 사용량을 확인했습니다.
docker system df
확인 결과 오래된 이미지와 Build Cache가 대부분의 저장 공간을 차지하고 있었습니다.
관리자는 다음 명령으로 Docker 리소스를 정리했습니다.
docker system prune -f
추가로 사용하지 않는 이미지도 함께 정리했습니다.
docker system prune -a -f
정리 후 다시 사용량을 확인했습니다.
docker system df
약 25GB의 저장 공간이 확보되었고 이후 Docker 이미지 빌드도 정상적으로 수행되었습니다.
운영 서버에서는 정기적으로 Docker 리소스를 정리하면 디스크 부족 문제를 예방할 수 있습니다.
Docker System Prune 사용 시 주의사항
Docker System Prune을 사용할 때는 다음 사항을 반드시 확인해야 합니다.
첫 번째는 -a 옵션을 사용하면 현재 사용하지 않는 모든 이미지가 삭제된다는 점입니다.
나중에 다시 사용할 경우 이미지를 다시 다운로드하거나 빌드해야 합니다.
두 번째는 --volumes 옵션은 사용하지 않는 Docker Volume까지 삭제합니다.
Volume에 중요한 데이터가 저장되어 있는지 반드시 확인해야 합니다.
세 번째는 실행 중인 컨테이너는 삭제되지 않지만 중지된 컨테이너는 삭제됩니다.
필요한 컨테이너가 있다면 실행 전에 백업하는 것이 좋습니다.
네 번째는 운영 서버에서는 유지보수 시간에 실행하는 것이 안전합니다.
Best Practice
Docker System Prune을 사용할 때는 다음과 같은 방법을 추천합니다.
- 먼저
docker system df로 사용량을 확인합니다. - 기본 옵션으로 먼저 정리합니다.
- 필요할 때만
-a옵션을 사용합니다. - Volume 삭제는 신중하게 수행합니다.
- 운영 서버에서는 정기 유지보수에 포함합니다.
- 자동화 스크립트에서는
-f옵션을 사용합니다.
이러한 관리 방법을 적용하면 Docker 환경을 안정적으로 운영할 수 있습니다.
자주 묻는 질문
Docker System Prune은 실행 중인 컨테이너도 삭제하나요?
아니요.
실행 중인 컨테이너는 삭제되지 않습니다.
-a 옵션은 무엇이 다른가요?
Dangling Image뿐 아니라 사용하지 않는 모든 이미지를 삭제합니다.
Volume도 기본적으로 삭제되나요?
아닙니다.
--volumes 옵션을 사용할 때만 사용하지 않는 Volume이 삭제됩니다.
Docker System Prune은 얼마나 자주 실행해야 하나요?
개발 서버는 주기적으로 실행하는 것이 좋으며, 운영 서버는 디스크 사용량을 확인한 후 유지보수 시간에 실행하는 것을 권장합니다.
마무리
Docker System Prune은 사용하지 않는 Docker 리소스를 한 번에 정리하여 디스크 공간을 확보하는 가장 강력한 관리 명령어입니다.
중지된 컨테이너, 사용하지 않는 네트워크, Dangling Image, Build Cache를 한 번에 정리할 수 있어 개발 환경과 운영 환경 모두에서 매우 자주 사용됩니다.
특히 정리 작업을 수행하기 전에는 docker system df로 현재 사용량을 확인하고, 필요에 따라 -a와 --volumes 옵션을 신중하게 활용하면 안전하고 효율적인 Docker 환경을 유지할 수 있습니다.