/home/amgsk

LinuxでDockerコンテナとVirtualBoxの仮想OSを同時に起動する

· amgsk

LinuxでDocker(Desktop)とVirtualboxを同時に使用する場合の話。

事象

Dockerコンテナを起動中にVirtualBoxで仮想OSを立ち上げようとすると、以下のようにエラーが表示され起動が出来なかった。
逆にDockerDesktopのサービスを落としVirtualBoxを起動するとDockerコンテナの方が立ち上がらなくなる。

VirtualBox can't enable the AMD-V extension. Please disable the KVM kernel extension, recompile your kernel and reboot (VERR_SVM_IN_USE).
$ docker compose up
Cannot connect to the Docker daemon at unix:///home/{user}/.docker/desktop/docker.sock. Is the docker daemon running?

解決方法

どうやらLinux版のDockerDesktopはKVMを利用していている事が原因で、VirtualBoxもKVMを利用しており複数のハイパーバイザが同時にKVMを利用することはできない。
以下のようにContextを変更することで、DockerDesktopをアンインストールすることなくDockerとVirtualBoxの両方の起動が出来るようになった。

$ docker context list
NAME            DESCRIPTION                               DOCKER ENDPOINT                                ERROR
default *       Current DOCKER_HOST based configuration   unix:///var/run/docker.sock
desktop-linux   Docker Desktop                            unix:///home/{user}/.docker/desktop/docker.sock

既存のcontextを確認。*がついている箇所がカレント。
以下コマンドでdocker contextを変更する。

$ docker context use default
default
Current context is now "default"