おもむろに「WSL 1 to 2」で検索して出てきたページに書いてあったコマンドを実行してみたところ、その前にカーネルコンポーネントを更新しろと怒られた。
PS C:\Users\user> wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください
というわけで https://aka.ms/wsl2kernel を参照して更新する。
- WSL 2 Linux カーネルの更新 | Microsoft Docs から Linux カーネル更新プログラムパッケージ
wsl_update_x64.msi
をダウンロード wsl_update_x64.msi
を実行してインストール- PowerShell を起動
- リトライ
PS C:\Users\user> wsl --set-version Ubuntu 2 変換中です。この処理には数分かかることがあります... WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
- 完了(1時間くらいかかった)
Docker Desktop が「WSL 2 is not installed」と言うので、「Stop Docker」をクリックした後 PowerShell で以下のコマンドを実行
Enable-WindowsOptionalFeature -Online -FeatureName $("VirtualMachinePlatform", "Microsoft-Windows-Subsystem-Linux")
Docker Desktop を起動
sudo しないと Docker デーモンに接続できないというエラーが出ていた。
user@DESKTOP-8PA9IIL ~
$ docker ps
Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?
しばらくググってみたところ、以下のコメントで docker context ls
なるコマンドを知った。
ubuntu running under WSL2 not seeing Docker daemon at unix:///var/run/docker.sock · Issue #5096 · docker/for-win
Which output do you see when running the following statement on powershell/cmd?
docker context ls
user@DESKTOP-8PA9IIL ~
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * Current DOCKER_HOST based configuration tcp://localhost:2375 swarm
Warning: DOCKER_HOST environment variable overrides the active context. To use a context, either set the global --context flag, or unset DOCKER_HOST environment variable.
何か warning が出ている。 unset しろと書いてあるのでしてみる
user@DESKTOP-8PA9IIL ~
$ echo $DOCKER_HOST
tcp://localhost:2375
user@DESKTOP-8PA9IIL ~
$ unset DOCKER_HOST
user@DESKTOP-8PA9IIL ~
$ echo $DOCKER_HOST
user@DESKTOP-8PA9IIL ~
$ docker context ls
NAME DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default * Current DOCKER_HOST based configuration unix:///var/run/docker.sock swarm
お。
user@DESKTOP-8PA9IIL ~
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
いけたー! と思いきや、docker build で以下のエラーが出た。
docker: Error response from daemon: cgroups: cannot find cgroup mount destination: unknown.
以下の記事を参考にコマンドを実行してみたところ解決 Docker でのエラーあれこれ対処法 - ログろいど
$ sudo mkdir /sys/fs/cgroup/systemd
$ sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd