Docker System Prune 사용법 완벽 가이드! Docker 리소스 한 번에 정리하기

Docker를 장기간 운영하다 보면 이미지뿐만 아니라 중지된 컨테이너, 사용하지 않는 네트워크, Build Cache 등 다양한 리소스가 계속 쌓이게 됩니다. 처음에는 큰 문제가 없어 보이지만 시간이 지날수록 디스크 사용량이 급격히 증가하고 Docker 성능에도 영향을 줄 수 있습니다.

특히 개발 서버나 CI/CD 서버에서는 하루에도 수십 번씩 이미지를 빌드하고 컨테이너를 생성 및 삭제하기 때문에 불필요한 리소스가 빠르게 누적됩니다. 이러한 리소스를 그대로 방치하면 저장 공간 부족으로 인해 새로운 이미지를 다운로드하지 못하거나 빌드가 실패하는 상황이 발생할 수 있습니다.

이럴 때 사용하는 명령어가 바로 docker system prune입니다.

Docker System Prune은 사용하지 않는 Docker 리소스를 한 번에 정리하는 기능을 제공합니다. 이미지, 컨테이너, 네트워크, Build Cache까지 한 번의 명령으로 삭제할 수 있기 때문에 Docker 유지보수에서 가장 자주 사용하는 관리 명령어 중 하나입니다.

이번 글에서는 Docker System Prune의 개념부터 기본 사용법, 삭제 대상, 실무 활용 사례, 운영 시 주의사항까지 자세히 알아보겠습니다.

Docker System Prune이란 무엇인가?

Docker System Prune은 사용하지 않는 Docker 리소스를 한 번에 삭제하는 명령어입니다.

여러 개의 Prune 명령을 각각 실행하지 않아도 이미지, 컨테이너, 네트워크, Build Cache를 한 번에 정리할 수 있습니다.

특히 Docker를 오래 사용한 서버에서는 가장 빠르게 디스크 공간을 확보할 수 있는 명령어입니다.

Docker System Prune는 언제 사용하는가?

다음과 같은 상황에서 많이 사용됩니다.

  • Docker 디스크 용량이 부족할 때
  • 개발 서버를 정리할 때
  • CI/CD 서버 유지보수
  • 테스트가 끝난 컨테이너 정리
  • 오래된 Build Cache 삭제
  • 서버 정기 점검

운영 서버에서는 정기 점검 시 많이 사용하는 명령어입니다.

Docker System Prune 기본 사용법

기본 사용 방법은 다음과 같습니다.

docker system prune

명령을 실행하면 다음과 같이 확인 메시지가 출력됩니다.

WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- dangling images
- unused build cache

Are you sure you want to continue? [y/N]

y를 입력하면 삭제가 진행됩니다.

Docker System Prune으로 삭제되는 대상

기본적으로 다음 리소스가 삭제됩니다.

중지된 컨테이너

현재 실행되고 있지 않은 컨테이너가 삭제됩니다.

실행 중인 컨테이너는 삭제되지 않습니다.

사용하지 않는 네트워크

어떤 컨테이너와도 연결되지 않은 네트워크가 삭제됩니다.

사용 중인 네트워크는 보호됩니다.

Dangling Image

태그가 없는 Docker 이미지가 삭제됩니다.

현재 사용 중인 이미지는 삭제되지 않습니다.

Build Cache

Docker Build 과정에서 생성된 캐시가 삭제됩니다.

빌드 캐시가 많을수록 상당한 저장 공간을 확보할 수 있습니다.

모든 사용하지 않는 이미지까지 삭제하기

기본 명령은 Dangling 이미지만 삭제합니다.

사용하지 않는 모든 이미지까지 삭제하려면 다음 옵션을 사용합니다.

docker system prune -a

-a 옵션을 사용하면 현재 어떤 컨테이너에서도 사용하지 않는 모든 이미지가 삭제됩니다.

운영 서버에서는 반드시 필요한 이미지인지 확인한 후 실행해야 합니다.

Volume까지 함께 삭제하기

Docker Volume은 기본적으로 삭제되지 않습니다.

Volume까지 함께 정리하려면 다음 명령을 사용합니다.

docker system prune --volumes

또는 모든 리소스를 삭제하려면 다음과 같이 사용할 수 있습니다.

docker system prune -a --volumes

Volume에는 데이터베이스와 업로드 파일 등이 저장될 수 있으므로 반드시 백업 여부를 확인한 후 실행해야 합니다.

현재 Docker 사용량 확인

삭제 전후의 저장 공간을 비교하려면 다음 명령을 사용합니다.

docker system df

현재 Docker가 사용하는 이미지, 컨테이너, Volume, Build Cache의 용량을 한눈에 확인할 수 있습니다.

Docker System Prune 실무 활용 예제

Docker System Prune은 Docker 서버 전체를 정리하는 가장 강력한 유지보수 명령어입니다. 개발 환경은 물론 운영 환경에서도 정기적으로 사용하면 디스크 공간을 효율적으로 관리할 수 있습니다.

개발 서버 전체 정리

프로젝트가 종료된 후 테스트용 컨테이너와 이미지가 많이 남아 있는 경우가 있습니다.

다음 명령으로 한 번에 정리할 수 있습니다.

docker system prune

중지된 컨테이너, 사용하지 않는 네트워크, Dangling 이미지, Build Cache가 모두 삭제됩니다.

CI/CD 서버 유지보수

Jenkins나 GitHub Actions 서버에서는 이미지와 Build Cache가 빠르게 증가합니다.

자동화 스크립트에서는 다음과 같이 사용합니다.

docker system prune -f

-f 옵션은 확인 메시지 없이 자동으로 정리를 수행합니다.

Cron 작업과 함께 사용하면 서버를 항상 깨끗하게 유지할 수 있습니다.

오래된 이미지까지 모두 삭제

현재 실행 중인 컨테이너에서 사용하지 않는 이미지까지 모두 삭제하려면 다음 명령을 사용합니다.

docker system prune -a

수십 GB 이상의 디스크 공간을 확보하는 경우도 많습니다.

Volume까지 함께 정리

테스트용 데이터까지 모두 삭제해야 하는 환경이라면 다음 명령을 사용합니다.

docker system prune -a --volumes

단, Volume에는 데이터베이스와 업로드 파일 등이 저장될 수 있으므로 운영 환경에서는 매우 신중하게 사용해야 합니다.

Linux 서버 문제 해결

한 개발 서버에서 Docker 이미지를 새로 빌드하려고 했지만 다음과 같은 오류가 발생했습니다.

no space left on device

먼저 Docker 사용량을 확인했습니다.

docker system df

확인 결과 사용하지 않는 Build Cache와 이미지가 35GB 이상 남아 있었습니다.

다음 명령으로 정리를 진행했습니다.

docker system prune -a

이후 다시 사용량을 확인했습니다.

docker system df

30GB 이상의 저장 공간이 확보되었고 Docker Build도 정상적으로 완료되었습니다.

CI/CD 서버에서는 이러한 작업을 주기적으로 수행하면 저장 공간 부족 문제를 대부분 예방할 수 있습니다.

Docker System Prune 사용 시 주의사항

Docker System Prune은 매우 강력한 명령어이므로 실행 전에 반드시 삭제 대상을 확인해야 합니다.

첫 번째는 기본적으로 실행 중인 컨테이너는 삭제되지 않습니다.

현재 사용 중인 서비스에는 영향을 주지 않습니다.

두 번째는 -a 옵션을 사용하면 사용하지 않는 모든 이미지가 삭제됩니다.

필요한 이미지라도 현재 컨테이너에서 사용하지 않으면 삭제 대상이 될 수 있습니다.

세 번째는 --volumes 옵션 사용 시 데이터가 영구적으로 삭제됩니다.

운영 서버에서는 반드시 백업 여부를 확인해야 합니다.

네 번째는 삭제된 리소스는 복구할 수 없습니다.

필요한 이미지는 Docker Save로 백업해 두는 것이 좋습니다.

Best Practice

Docker System Prune을 사용할 때는 다음과 같은 방법을 추천합니다.

  • 먼저 docker system df로 사용량을 확인합니다.
  • 운영 서버에서는 기본 Prune부터 실행합니다.
  • -a 옵션은 이미지 사용 여부를 확인한 후 실행합니다.
  • --volumes는 테스트 환경에서만 사용하는 것이 안전합니다.
  • CI/CD 서버에서는 -f 옵션으로 자동화합니다.
  • 월 1회 이상 정기적인 Docker 유지보수를 수행합니다.

이러한 관리 습관을 유지하면 Docker 서버를 장기간 안정적으로 운영할 수 있습니다.

자주 묻는 질문

Docker System Prune은 무엇을 삭제하나요?

기본적으로 중지된 컨테이너, 사용하지 않는 네트워크, Dangling 이미지, Build Cache를 삭제합니다.

실행 중인 컨테이너도 삭제되나요?

아닙니다. 실행 중인 컨테이너는 삭제되지 않습니다.

Volume도 함께 삭제되나요?

기본적으로는 삭제되지 않습니다.

Volume까지 삭제하려면 다음 명령을 사용해야 합니다.

docker system prune --volumes

Docker System Prune과 Docker Image Prune의 차이는 무엇인가요?

Docker Image Prune은 이미지만 삭제합니다.

Docker System Prune은 이미지뿐 아니라 컨테이너, 네트워크, Build Cache까지 함께 정리합니다.

마무리

Docker System Prune은 Docker 리소스를 한 번에 정리할 수 있는 가장 강력한 유지보수 명령어입니다.

이미지, 컨테이너, 네트워크, Build Cache를 효율적으로 정리하여 저장 공간을 확보하고 Docker 성능을 유지하는 데 큰 도움이 됩니다.

다만 -a--volumes 옵션은 삭제 범위가 매우 넓기 때문에 운영 환경에서는 반드시 삭제 대상을 확인하고 백업을 완료한 후 실행하는 것이 안전합니다.

Docker 서버를 장기간 안정적으로 운영하려면 Docker System DF로 사용량을 확인하고 Docker System Prune을 정기적인 유지보수 작업에 포함하는 것을 추천합니다.

댓글 남기기