$ docker --version
Docker version 19.03.11, build 42e35e61f3
で、docker run でエラーになる。
$ docker run hello-world
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
--set-default デフォルト設定して解決
目的のディストロをデフォルトに設定する。
Win10 側のターミナルでこれだけ。
>wsl --set-default Ubuntu-20.04
デフォルト “*” で選択されているものの VERSION が 2 になってることを確認。
>wsl --list --verbose
NAME STATE VERSION
* Ubuntu-20.04 Running 2
Ubuntu Running 1
docker-desktop Running 2
docker-desktop-data Running 2
この “Download the Linux kernel update package” の節から wsl_update_x64.msi をダウンロード、実行。
更新はウィザードでぽちぽちするだけ。
WSL 2 を使う
(任意)デフォルトで WSL 2 を利用するように
WSL 1 と 2 を併用できます。Microsoft Store とかでダウンロードした Linux ディストロをインストールするときの初期値をそのどちらにするか設定できるようです。
2 にするなら、こう。
> wsl --set-default-version 2
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
利用中の WSL 1 を 2 へ変換
一覧から名前を得て、その名前を対象に更新します。
まずは一覧を表示して、名前を得ます。この例では “Ubuntu” ですね。
> wsl --list --verbose
NAME STATE VERSION
* Ubuntu Stopped 1
この名前 “Ubuntu” を覚えておく。
続いて --set-version します。
> wsl --set-version Ubuntu 2
Conversion in progress, this may take a few minutes...
For information on key differences with WSL 2 please visit https://aka.ms/wsl2
…
数分かかるとのことだが 60 分経っても終わりませんでした。ま、まただましたな!
完了したらバージョンが上がったのを確認。
> wsl --list --verbose
NAME STATE VERSION
* Ubuntu Running 2
使う
あとは普通に使うだけ。やったね。
やっぱり戻す
WSL 側から Windows 側ファイルの監視があやしい。
/mnt/c/User/ginpei 下にプロジェクト配置してるんだけど、どうも watch が怪しい感じがする。かつて普通の VM (VirtualBox) を使ってた頃も同じような問題に直面したような。
Power Shell なり何なりを普通に起動すると、権限を elevate してねと言われます。管理者権限で起動してください。
>dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
Error: 740
Elevated permissions are required to run DISM.
Use an elevated command prompt to complete these tasks.
$ docker run hello-world
docker: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?.
See 'docker run --help'.
Docker デーモンが動いてない? じゃあ動かそう。
$ sudo systemctl start docker
System has not been booted with systemd as init system (PID 1). Can't operate.
Failed to connect to bus: Host is down