반응형
목차
Docker를 쓰다 보면 어느 순간 C 드라이브 용량이 미친 듯이 줄어드는 경험을 합니다.
이미지와 컨테이너를 삭제해도 용량이 안 줄어드는 이유는, Docker Desktop이 WSL2 내부의 가상 디스크(VHDX) 안에 데이터를 저장하기 때문입니다.
이번 글에서는 Docker 용량이 불어나는 원인과, 이를 관리·최적화하는 방법을 정리합니다.
📌 1. Docker 용량이 계속 불어나는 이유
Docker Desktop (WSL2 모드)은 이미지, 컨테이너, 볼륨 데이터를 모두 WSL 가상 디스크에 저장합니다.
- 이 가상 디스크 파일은 .vhdx 확장자를 가지며,
보통 다음 경로에 있습니다.
C:\Users\<계정>\AppData\Local\Docker\wsl\data\DockerDesktop.vhdx
- 문제는, 내부 데이터를 지워도 VHDX 파일 크기는 줄지 않는다는 점입니다.
→ 한 번 커진 용량은 직접 최적화해야 줄어듭니다.
📌 2. 현재 Docker 저장소 용량 확인
# Docker 이미지, 컨테이너, 볼륨별 용량 확인
docker system df
# 빌드 캐시 용량 확인
docker buildx du
📌 3. 불필요한 데이터 삭제
# 사용하지 않는 컨테이너, 이미지, 네트워크, 볼륨 모두 삭제
docker system prune -a --volumes -f
# 빌드 캐시 삭제
docker builder prune -a -f
💡 -a 옵션은 중간 이미지까지 전부 삭제하므로, 필요한 이미지가 있으면 주의하세요.
📌 4. VHDX 파일 최적화로 실제 용량 줄이기
이미지/컨테이너를 삭제해도 VHDX 용량은 그대로이므로, 최적화(압축) 과정을 거쳐야 합니다.
1) Docker Desktop 종료 & WSL2 종료
# Docker Desktop 완전히 종료
# WSL2 가상 머신 종료
wsl --shutdown
2) VHDX 파일 경로 확인
Get-ChildItem "$env:LOCALAPPDATA\Docker" -Recurse -Include *.vhdx |
Select-Object FullName, Length, LastWriteTime
- 일반적으로는:
C:\Users\<계정>\AppData\Local\Docker\wsl\data\DockerDesktop.vhdx
3) Hyper-V 모듈 설치 (Optimize-VHD 사용 시)
# Hyper-V PowerShell 모듈 켜기 (한 번만 실행)
DISM /Online /Enable-Feature /FeatureName:Microsoft-Hyper-V-Management-PowerShell /All
4) 최적화 실행
Import-Module Hyper-V
Optimize-VHD -Path "$env:LOCALAPPDATA\Docker\wsl\data\DockerDesktop.vhdx" -Mode Full
📌 5. DiskPart로 최적화 (Hyper-V 없이)
Hyper-V 모듈이 없다면, diskpart를 써도 됩니다.
- compact.txt 파일 생성 (경로 수정):
select vdisk file="C:\Users\<계정>\AppData\Local\Docker\wsl\data\DockerDesktop.vhdx" attach vdisk readonly compact vdisk detach vdisk exit - 관리자 PowerShell에서 실행:
wsl --shutdown
diskpart /s compact.txt
📌 6. 정리
- 불필요한 데이터 삭제: docker system prune -a --volumes
- 빌드 캐시 삭제: docker builder prune -a
- VHDX 최적화: Optimize-VHD 또는 diskpart
💡 이 과정을 1~2개월에 한 번만 해도, 수십 GB의 C 드라이브 공간을 회수할 수 있습니다.
📢 팁:
만약 Docker 용량이 자주 폭증한다면,
Docker Desktop → Settings → Resources → Disk image location에서 저장 경로를 D 드라이브 등으로 옮기는 것도 방법입니다.
반응형
'K8S > Docker' 카테고리의 다른 글
| Docker Hub Rate Limiting 정책과 "authorization failed" 오류 이해하기 (0) | 2025.09.25 |
|---|---|
| Docker 설치 for rhel(8.10에서 설치) (0) | 2025.02.17 |
| [Docker] 다중 아키텍처 빌드를 위한 buildx (0) | 2024.02.22 |
| Docker 로그 관리 (0) | 2024.01.22 |
| docker에서 as builder 를 사용하는 이유 (0) | 2023.02.16 |
댓글