오랜만에 Docker Desktop에 접속하려 하였으나, 다음과 같은 에러 메세지를 마주쳤다.

인터넷을 찾아보니,
이 꺼져있거나 혹은
하지만 해당 설정들은 모두 enable되어있었다.
Windows에서 실행 가능한 Docker Desktop은 리눅스 환경에서만 동작하므로 Windows상에서 리눅스의 환경을 만들어 주어야 한다.
이때 Windows 내에서 리눅스의 커널을 실행할 수 있도록 하는 WSL 을 통해 리눅스의 환경을 만들어 줄 수 있다.
즉, WSL이 선행되어야 Docker Desktop이 실행 가능했다.
이 에러가 있기 전에 vmware workstation을 사용한 적이 있었기에 가상화 기능이 서로 부딪혀서 이런 일이 발생했다고 예상하였다.
이에 vmware workstation을 제거하고 실행해봤지만 결과는 똑같았다.
기존에 있던 WSL를 제어판에서 삭제하고
다시 설치 후,
wsl --install
Docker와 호환될 수 있도록 version을 2로 올렸다.
wsl --set-default-version 2
WSL이 리눅스 커널의 환경을 만들어 주므로 시험삼아 Ubuntu를 설치하였다. Ubuntu가 설치되면 가상환경은 정상적으로 돌아간다는 것을 의미한다.
wsl --list --online
다음의 명령어로 배포 가능한 버전을 확인한 뒤,
wsl --install -d Ubuntu-20.04
다음과 같이 Ubuntu-20.04버전을 설치하였다.
이때 Ubuntu를 실행하지 못하는 에러가 발생했다. (삽질 2-1번째)
Installing, this may take a few minutes...
WslRegisterDistribution failed with error: 0x80370102
Please enable the Virtual Machine Platform Windows feature and ensure virtualization is enabled in the BIOS.
For information please visit https://aka.ms/enablevirtualization
Press any key to continue...
찾아보니 가상화 설정을 확인해보라고 하였지만 처음부터 완전하게 enable 하였기에 문제는 없었다. 몇시간동안 wsl와 Ubuntu를 재설치하는 삽질을 벌인 결과 깃허브 WSL의 이슈에서 다음과 같은 해결방법을 찾아내었다.
https://github.com/microsoft/WSL/issues/5363
DISM /Online /Enable-Feature /All /FeatureName:Microsoft-Hyper-V
bcdedit /set hypervisorlaunchtype auto
해당 명령어들은 Hyper-V 가상화 기능을 활성화하고 부팅 시 자동으로 Hyper-V 하이퍼바이저가 시작되도록하는 명령어들이다.
이미 windows 기능 설정에서 enable한 기능인데 왜 저 명령어의 기능과 중복되지 않나 싶었다.

아무튼 Ubuntu까지 실행되어 정상적으로 WSL이 실행됨을 확인하였다.
이제 Docker Desktop을 실행하였다.
Docker Desktop을 실행했을 때 Docker Engine이 실행되지 못하고 프로그램이 종료됐다.
https://github.com/docker/for-win/issues/14022
해당 이슈를 면밀히 살펴본 결과 버전을 낮춤으로써 오류를 해결한 사람들이 보였다. 이에 낮은 버전을 설치하였다.
결국 처음에 본 똑같은 에러 메세지가 떴다. 버전문제는 아닌듯 싶었다.

에러메세지에 주어진대로 진단을 해보았다.
https://docs.docker.com/desktop/troubleshoot/overview/#diagnose-from-the-terminal


엄청 많지만 다음을 말하려고 하는듯 하다.
분명 Ubuntu를 설치했는데 distros가 없을리는 없다.
다음과 같은 에러도 발생하였다.

배포판(Ubuntu)을 설치해도 인식을 하지못해 없다고 판단하였으며, 위 에러를 확인하고 WSL를 update하는 명령어인 wsl --upadte를 실행하였으나 제공된 패키지가 이미 설치되어 있으므로 패키지 다시 설치가 차단되었습니다. 라는 메세지를 받았다.
이와 같은상황으로 미루어 보아 WSL자체에서 문제가 발생했다 판단하여 WSL를 다시 지웠다. windows 기능 켜기/끄기 에서 Linux용 Windows 하위 시스템, 가상 머신 플랫폼을 해제하였다. 하지만 WSL 실행파일이 남아있는걸 발견하였다. 즉, 제어판에는 앱이 삭제되었으나 아직 파일이 남아있는듯 하였다.
윈도우 삭제 마법사를 다운받아 찾아보니 Windows Subsystem for Linux가 남아있어 이를 삭제하였다. 혹시 몰라 AppData에 WSL가 남아있나 확인하고 다시 WSL 설치를 진행하였다.
WSL부터 Ubuntu distros까지 자동으로 설치해주었다. 이에 Docker Desktop을 실행하니 Docker Engine이 돌아가 드디어 정상적으로 작동하는것을 확인하였다.

vmware workstation에서 문제가 있었나 했지만 결국엔 WSL에서 뭘 건드려 문제가 발생했던 것 같았다. 이마저도 처음 재설치했을 때 오류가 계속되어서 재설치로는 문제가 해결되지 않을거라고 생각했다. 확실하게 제거 후 처음부터 다시 설치했어야 했었다.
시간을 많이 잡아먹은 문제였으므로 WSL과 이를 기반으로 동작하는 Docker Desktop간의 관계와 이를 통해 얻은 대량의 삽질에 대해 상기하게 되었다.