WSL 2 - docker-desktop-data, docker-desktop (%LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx) 파일을 다른 디렉터리로 옮기는 방법
Docker Desktop이 사용하는 리눅스 인스턴스는 원래 Hyper-V의 "DockerDesktopVM"에서 호스팅되므로 만약 해당 vhdx의 파일 크기가 커져 C 드라이브에 있는 것이 부담스럽다면 Hyper-V 레벨에서 변경만 해주면 됩니다.
하지만, "Use the WSL 2 based engine" 옵션을 켜면 Hyper-V가 아닌 별도의 vhdx로 빠져 WSL 2 인스턴스와 연동이 됩니다. 실제로 WSL 2로 활성화하면 다음과 같이 docker-desktop-data, docker-desktop 항목이 생성됩니다.
C:\temp> wsl -l -v
NAME STATE VERSION
* Ubuntu20.04 Running 2
docker-desktop-data Stopped 2
docker-desktop Stopped 2
현재 Stopped로 나오는데요, 왜냐하면 "Docker Desktop"을 실행하지 않았기 때문입니다. 따라서 그걸 실행시킨 후에 다시 확인하면,
C:\temp> wsl -l -v
NAME STATE VERSION
* Ubuntu20.04 Running 2
docker-desktop-data Running 2
docker-desktop Running 2
Running으로 나오고, WSL 2 backend로 지정된 인스턴스(위의 경우 Ubuntu20.04)는 이렇게 /mnt/wsl로 추가 마운팅이 이뤄집니다.
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb 263174212 5592496 244143560 3% /
tmpfs 13092504 410040 12682464 4% /mnt/wsl
tools 248984568 223661284 25323284 90% /init
...[생략]...
/dev/sdd 263174212 8056920 241679136 4% /mnt/wsl/docker-desktop-data/isocache
none 13092504 12 13092492 1% /mnt/wsl/docker-desktop/shared-sockets/host-services
/dev/sdc 263174212 134176 249601880 1% /mnt/wsl/docker-desktop/docker-desktop-proxy
/dev/loop0 404596 404596 0 100% /mnt/wsl/docker-desktop/cli-tools
참고로, "Docker Desktop"이 실행되지 않으면 다음과 같이 마운팅 결과가 나옵니다.
$ df
Filesystem 1K-blocks Used Available Use% Mounted on
/dev/sdb 263174212 5591704 244144352 3% /
tmpfs 13092504 0 13092504 0% /mnt/wsl
tools 248984568 223664044 25320524 90% /init
...[생략]...
docker-desktop 볼륨의 물리적인 파일 위치는 "%LOCALAPPDATA%\Docker\wsl\data\ext4.vhdx"에 해당합니다. 그리고 docker 운영이 커질수록 이 파일의 크기는 그에 맞게 증가합니다. 문제는, docker-desktop-data와 docker-desktop의 크기가 무시 못 할 정도로 커질 수 있는데요, 가령 제 경우에는 8GB까지 육박했습니다.
상황에 따라서는 C 드라이브에 8GB를 점유하는 것이 부담스러울 수 있는데요, 다행히 ext4.vhdx 파일을 다른 드라이브로 옮길 수 있는 방법이 있고 이에 대해서는 전에 한 번 설명했던 것과 같습니다.
WSL 인스턴스 export/import 방법 및 단축 아이콘 설정 방법
; https://www.sysnet.pe.kr/2/0/12569
정리하면 다음과 같이 하면 됩니다.
wsl --shutdown
wsl --export docker-desktop-data e:\temp\docker-desktop-data.tar
wsl --unregister docker-desktop-data
wsl --import docker-desktop-data e:\wsl2\data e:\temp\docker-desktop-data.tar --version 2
del e:\temp\docker-desktop-data.tar
위와 같이 실행하면 "%LOCALAPPDATA%\Docker\wsl\data"에 있던 ext4.vhdx 파일이 e:\wsl2 디렉터리로 이동합니다. 그리고 docker-desktop 인스턴스의 경우 용량은 작지만 그래도 일관성을 위해 함께 이전하는 것이 좋을 듯합니다. ^^
wsl --export docker-desktop e:\temp\docker-desktop.tar
wsl --unregister docker-desktop
wsl --import docker-desktop e:\wsl2\docker e:\temp\docker-desktop.tar --version 2
이렇게 되면 (제 경우에) 8GB가 C 드라이브에 확보가 됩니다. ^^
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]