배경

본래 개발 환경을 VM(VirtualBox)으로 세팅해서 사용했는데, Docker Desktop을 설치하니 VM이 안뜬다..
Windows 기능 켜기/끄기에서 Hyper-V, Virtual Machine Platform(가상 머신 플랫폼)을 체크해제 하면 VM은 뜨지만 Docker Desktop이 뜨지 않게 된다..

이건 어쩔 수 없이 설정을 바꿔가면서 해결해야 한다.

VM 사용 시

[ ] Hyper-V
[ ] Virtual Machine Platform

Hyper-V, Virtual Machine Platform(가상 머신 플랫폼) 설정을 체크 해제 한다.

Docker 사용 시

[v] Hyper-V
[v] Virtual Machine Platform

Hyper-V, Virtual Machine Platform(가상 머신 플랫폼) 설정을 체크 한다.

설정 했는데도 사용에 문제가 있는 경우

간혹가다가 기능 설정을 완료하고, PC 재시작 까지 했는데도 VM 실행이 되지 않거나 Docker 실행에 실패하는 경우가 있다.
답은 재부팅이다..
내 경우에는 재부팅 한번 더하면 해결되곤했다.

근데 두개를 같이 돌릴 수 있는 다른 방법이 있다

Docker를 WSL2 기반으로 올린다

Docker desktop Settings에서 General 탭에 가면 아래 이미지와 같은 설정이 있다.
Use the WSL 2 based engine 체크박스가 선택되어있는지 확인한다.

Docker가 WSL2 기반으로 실행된다면 VirtualBox와 동시에 잘 공존할 수 있을 것이다..

공존 가능한 이유

Docker Desktop이 사용하는 Hyper-V 가상화와 VirtualBox의 VM이 충돌하기 때문에 Windows 옵션을 껐다켰다 해야한다고 했던거라고 한다.
충돌에 대한 내용은 learn.microsoft.com 이곳을 확인하면 해당 현상에 대해 MS에서 공식적으로 아래와 같이 안내해둔 것을 볼 수 있다.

대부분의 타사 가상화 애플리케이션은 Hyper-V와 호환되지 않습니다. 영향을 받는 애플리케이션에는 VMware 워크스테이션과 VirtualBox가 있습니다. 이러한 애플리케이션은 가상 머신을 시작하지 않거나, 더 느리고 에뮬레이트된 모드로 대체될 수 있습니다.

이러한 증상은 Hyper-V 하이퍼바이저가 실행 중일 때 발생합니다. 일부 보안 솔루션도 하이퍼바이저에 종속됩니다.

근데 Docker Desktop이 Hyper-V를 안쓰고 WSL2를 쓰면 충돌할 여지가 없기 때문에 공존이 가능한 것.

원인도 친절하게 안내되어있다.

이것은 의도된 동작입니다.

대부분의 가상화 애플리케이션은 대부분의 최신 프로세서에서 사용할 수 있는 하드웨어 가상화 확장에 의존합니다. 여기에는 Intel VT-x 및 AMD-V가 포함됩니다. 한 번에 하나의 소프트웨어 구성 요소만 이 하드웨어를 사용할 수 있습니다. 가상화 애플리케이션 간에 하드웨어를 공유할 수 없습니다.

다른 가상화 소프트웨어를 사용하려면 Hyper-V 하이퍼바이저, Device Guard 및 Credential Guard를 사용하지 않도록 설정해야 합니다.

의도된 동작이라니 어쩔 수 없지..
일단 나의 작업환경에서는 Docker를 WSL2로 실행시키는 것으로 문제는 해결 되었지만,
문제 해결을 위한 서칭 중 Docker를 굳이 WSL2에서 Hyper-V로 실행하도록 바꾸는 설정을 찾는 사람들이 있는 것 같았다. 어떤 필요에 의한 것인지는 잘 모르겠으나 가능한 환경대로 구성하면 될 것 같다.