반응형
도커(Docker)를 사용하다 보면 이미지, 컨테이너, 네트워크, 볼륨 등이 시스템에 누적되어 디스크 공간을 차지하게 됩니다. 이를 수동으로 정리하기에는 번거롭고 까다로운 경우가 많은데, 이럴 때 매우 유용한 명령어가 바로 docker system prune입니다.
이번 글에서는 docker system prune 명령어가 어떤 역할을 하는지, 어떤 옵션이 있는지, 실무에서 사용할 때 주의할 점은 무엇인지 자세히 다뤄보겠습니다.
✅ docker system prune 이란?
docker system prune 명령어는 사용하지 않는 도커 리소스를 한 번에 정리하는 명령어입니다.
🔍 기본적으로 삭제되는 항목:
- 중지된 컨테이너
- 사용되지 않는 이미지 (dangling image)
- 사용되지 않는 네트워크
- 사용되지 않는 빌드 캐시 (도커 18.06 이후 포함)
docker system prune
실행하면 아래와 같이 확인 메시지가 출력되며, y를 입력해야 실행됩니다.
🚨 docker system prune을 하지 않았을 때 발생할 수 있는 문제들
1. 디스크 공간 고갈
- 중지된 컨테이너, 오래된 이미지, 미사용 네트워크, 빌드 캐시 등이 누적됨
- /var/lib/docker 경로에 수 GB~수십 GB 이상 쌓이는 사례가 흔함
- 디스크가 꽉 차면 도커 자체가 작동하지 않거나 컨테이너 실행에 실패할 수 있음
2. 빌드 속도 저하
- Docker는 빌드 시 캐시를 사용하지만, 캐시가 너무 많으면 불필요한 검증 시간이 늘어남
- 특히 도커 이미지의 계층이 많아질수록 속도 저하가 체감됨
3. CI/CD 환경 불안정
- GitHub Actions, GitLab Runner 등의 도커 기반 CI 환경에서 디스크가 가득 차면 배포 실패
- 자동화 파이프라인에서 이미지 푸시나 컨테이너 실행 단계에서 오류 발생
4. 이미지 충돌과 혼란
- latest 태그를 가진 이미지가 오래된 이미지와 충돌하거나, 실행 시점에 혼동 초래
- 실제로 사용되지 않는 이미지가 유지되어 디버깅 시 혼란 야기
5. 보안 위험
- 오래된 이미지가 취약점을 포함하고 있을 수 있음
- 사용되지 않는 네트워크 또는 컨테이너가 의도치 않게 외부 노출될 수 있음
✅ 옵션 정리
📌 -a, --all
- 모든 사용되지 않는 이미지까지 삭제합니다.
- 기본 설정에서는 dangling 이미지만 삭제되며, -a를 주면 태그가 있는 사용되지 않는 이미지도 삭제됩니다.
docker system prune -a
📌 --volumes
- 사용하지 않는 볼륨도 함께 삭제합니다.
- 기본적으로는 볼륨은 삭제 대상이 아닙니다.
docker system prune --volumes
📌 --filter
- 조건을 설정해서 삭제 대상을 필터링할 수 있습니다.
docker system prune --filter "until=24h"
- 24시간 이전에 생성된 리소스만 삭제
✅ 실전 예제
1. 가장 일반적인 정리
docker system prune
2. 모든 불필요한 리소스 + 사용되지 않는 이미지까지 제거
docker system prune -a
3. 모든 리소스 + 볼륨까지 제거
docker system prune -a --volumes
✅ 주의사항
- 삭제는 복구 불가합니다. 꼭 필요한 리소스가 삭제되지 않도록 주의하세요.
- -a 옵션은 사용하지 않는 이미지까지 삭제하므로, 다음 실행 시 이미지 다운로드가 다시 필요할 수 있습니다.
- 공유 네트워크나 의존 볼륨을 실수로 제거하면 서비스 장애로 이어질 수 있습니다.
- 운영 환경에서는 자동화 전에 테스트를 권장합니다.
✅ 언제 사용하면 좋을까?
| 상황 |
활용 예 |
| 디스크 공간 부족 | 오래된 이미지, 컨테이너 제거 |
| 테스트 후 청소 | 테스트 후 자원 정리 |
| CI/CD에서 캐시 최소화 | 새로운 환경 구성 전 정리 |
✅ 요약
| 옵션 | 설명 |
| -a | 모든 미사용 이미지 제거 |
| --volumes | 미사용 볼륨도 삭제 |
| --filter | 조건에 따라 삭제 제한 |
✅ 결론
docker system prune 명령어는 도커 환경을 깔끔하게 유지할 수 있는 매우 강력한 도구입니다. 하지만 강력한 만큼 신중하게 사용해야 하며, 삭제되는 리소스를 정확히 이해한 후 사용해야 합니다. 정기적으로 리소스를 정리하거나 디스크 여유 공간이 필요할 때 적극적으로 활용해보시기 바랍니다.
반응형