요즘 회사에서 백엔드를 열심히 하고 있다.
AI 엔지니어로 들어간 줄 알았지만 중소기업의 규모가 규모인지라 사실상 모든 방면을 조금씩 해야 된다.
그렇게 만능재주꾼이 되...
아무튼 런칭 준비 중인 서비스에 붙일 메일 서버를 구축하고 있는데
그 와중에 생긴 환경설정 문제가 아주 골 아프다가 어이없게 고쳐져서 이를 공유하고자 포스팅한다.
1. 문제 배경
필자는 도커 데스크탑을 사용하면서 메일 서버를 테스트하려는데 뭘 하기도 전에 도커 데스크탑만 키면 렉 걸리고 충돌 나고 노트북을 강제종료하게 되는 무한 루프를 겪고 있었다. 검색해 보니 아무래도 그냥 마구잡이로 설치한 지금 상황에서는 답이 없기에 깔끔하게 밀고 아래 링크에서 언급한 WSL2 Ubuntu 내에 도커를 마운트 하는 식으로 하기로 했다.
윈도우 환경 도커 느림
첫번째로 Vmmem 프로세스의 메모리가 계속 증가하여 느려지는 증상이 있다. 이거는 찾아봐도 MS에서도 해결이 안되는 것 같다. 혹시 몰라 윈도우 11로 업그레이드를 했지만 증상은 여전하다. 두번
linkedrow.tistory.com
2. 직면한 문제
그렇게 기존에 깔아놨던 도커와 wsl2를 지우고 새로운 마음으로 설치를 해보려 하니 아래 명령어가 먹히지 않는 것 아니겠는가
wsl --install -d Ubuntu
# "지정된 파일을 찾을 수 없습니다." 오류 발생!!!
그렇게 급하게 구글링 및 지피티에 검색하면서 나온 방법들을 모두 시도해 봤지만 말짱 도루묵이었다.
- wsl-error-file-not-found-solution - Gurumii Lab
- WSL 우분투 설치 실행 오류 "지정된 파일을 찾을 수 없습니다" (ERROR_FILE_NOT_FOUND)
- 이전 버전의 WSL에 대한 수동 설치 단계 | Microsoft Learn
리눅스 관련된 모든 것을 지워서 그런 건가 싶어서 그럼 일단 Ubuntu를 냅다 깔아보자!
라는 마음으로 MS 스토어에서 Ubuntu를 깔고 쉘을 켜봤지만 이젠 또 새로운 문제를 맞이하게 됐고,
여전히 PowerShell에서 wsl 명령어는 반응이 없었다.

그래도 오류 코드 나온 게 어디야 싶어서 바로 오류 코드(0x80070003) 폭풍 검색했고
그렇게 나온 MS 공식 문서를 보면서 하나하나 따라 해봤지만 여전히 안 됐다.
이때 살짝 절망해서 자포자기 심정이었다.
왜냐하면 이때 거의 한나절을 쏟아부었었기 때문...
Linux용 Windows 하위 시스템 문제 해결 | Microsoft Learn
Linux용 Windows 하위 시스템 문제 해결
Linux용 Windows 하위 시스템의 Linux를 실행하는 동안 발생하는 일반적인 오류 및 문제에 대한 자세한 정보를 제공합니다.
learn.microsoft.com
3. 문제 해결
그렇게 그냥 지피티한테 다시 한번 물어봤는데 Microsoft 스토어 Windows Subsystem for Linux 프로그램 링크를 주는 게 아니겠는가. 접속 후 마침 업데이트 가능이길래 바로 해봤더니 그때부터 wsl 명령어가 통하기 시작했다.

이게 MS스토어 상에 그냥 검색했을 때는 안 떴었던 거라 더욱 억울...
추측해 보건대 이제 마이크로소프트에서 단순히 PowerShell 상에서 단일 명령으로 WSL을 실행하는 데 필요한 모든 항목을 설치할 수 있다고 하여 스토어에선 안 보이게 조치해 둔 것 같다. ㄹㅇ 분통 터져
4. wsl2 및 도커 데스크탑 설치 (feat. D드라이브)
WSL 설치
wsl --install 명령을 사용하여 Linux용 Windows 하위 시스템을 설치합니다. 선호하는 Linux 배포판인 Ubuntu, Debian, SUSE, Kali, Fedora, Pengwin, Alpine 등에서 실행하는 Windows 머신에서 Bash 터미널을 사용할 수 있
learn.microsoft.com
WSL2 설치 경로 변경? 외부(D:\) 드라.. : 네이버블로그
WSL2 설치 경로 변경? 외부(D:\) 드라이브로 옮기는 확실한 방법
목차 왜 외장 SSD에서 WSL2를 쓰고 싶었을까? WSL2 기본 설치 경로와 한계 공식적으로 지원되는 ...
blog.naver.com
휘뚜루마뚜루 도커 데스크탑까지 무리 없이 설치했는데 노트북 C드라이브로는 도저히 감당이 안될 것 같아서
D드라이브에 옮기기로 했다. (마침 D드라이브도 SSD라서 매우 다행) 하지만 wsl2나 도커는 설치할 때 경로를 바꾸는 옵션이 없었기 때문에 이 또한 방법을 찾았어야 했다.
그렇게 찾은 위 링크.
애초에 잘 정리되어 있어서 그대로 따라 하면 되긴 하지만 좀 더 첨언하자면!
Docker Desktop은 4.30 버전 이전까지만 해도 설치 후 docker-desktop과 docker-desktop-data라는 두 개의 WSL 배포판이 자동 생성되었다고 한다.
- docker-desktop: 시스템 관리용
- docker-desktop-data: 이미지·컨테이너 저장소
Best practices
Best practices for using Docker Desktop with WSL 2
docs.docker.com
그래서 도커 데스크탑을 D드라이브나 다른 저장소에서 사용하려면 docker-desktop-data를 옮겼어야 했지만 Docker Desktop 4.30 이상부터는 docker-desktop-data가 사라지고, WSL 배포판(예: Ubuntu-24.04) 안에 직접 /var/lib/docker 경로로 저장되기 때문에 그냥 바로 export, import 통해서 docker-desktop 배포판을 옮기면 된다.
docker info | grep "Docker Root Dir"
# Docker Root Dir: /var/lib/docker
주석의 출력이 나오면 Docker 데이터는 해당 배포판의 파일시스템 안에 들어 있음을 알 수 있다.
안 나올 수도 있긴 한데 어차피 "/var/lib/docker"도 "D:\\wsl\\Ubuntu-24.04\\ext4.vhdx" 안에 포함되기 때문에
이미지나 컨테이너를 생성할 때마다 이 VHDX 파일이 늘어나며, 결과적으로 Docker 데이터도 D드라이브를 사용하게 된다.
아래는 마무리 확인용 스크립트 ↓
wsl --list --verbose
# Ubuntu-24.04가 D드라이브 경로에 있는지 확인
docker run hello-world
docker pull nginx
# 실행 후 VHDX 크기가 증가하면 정상 동작!
오랜만에 쓰는 글이 wsl2 및 도커 관련된 글이 될 줄은 몰랐는데
이슈 트래킹했던 과정이 너무 억울하고 이건 안 남기면 두고두고 후회할 것 같아서 다른 밀린 소재를 제치고 부랴부랴 정리해서 써봤다. 원래 블로그 글 한번 쓸 때 너무 오래 걸려서 시작도 하기 힘들었는데 워낙 분통 터졌던 일이라 2시간 안에 금방 쓴 거 같다.
어차피 기술 블로그는 감상을 길게 쓰지 않으니 부담이 덜한 것 같기도.. 온 김에 블로그 카테고리도 개편했고 인턴 활동이나 구글 스터디잼 활동 등 많은 일이 또 있었기 때문에 다시 한번 종종 쓰러 와야겠다.