본문 바로가기
K8S/Docker

Windows에서 Docker 디스크 용량 줄이는 방법 (WSL2 + Docker Desktop)

by Rainbound-IT 2025. 8. 10.
반응형

목차

     

    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를 써도 됩니다.

    1. compact.txt 파일 생성 (경로 수정):
      select vdisk file="C:\Users\<계정>\AppData\Local\Docker\wsl\data\DockerDesktop.vhdx"
      attach vdisk readonly
      compact vdisk
      detach vdisk
      exit


    2. 관리자 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 드라이브 등으로 옮기는 것도 방법입니다.

    반응형

    댓글