Skip to content

Instantly share code, notes, and snippets.

@nahcnuj
Last active June 27, 2020 04:02
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nahcnuj/9f501ee87a7d95a9970a4499988976b0 to your computer and use it in GitHub Desktop.
Save nahcnuj/9f501ee87a7d95a9970a4499988976b0 to your computer and use it in GitHub Desktop.
WSL 1 to 2

おもむろに「WSL 1 to 2」で検索して出てきたページに書いてあったコマンドを実行してみたところ、その前にカーネルコンポーネントを更新しろと怒られた。

PS C:\Users\user> wsl --set-version Ubuntu 2
変換中です。この処理には数分かかることがあります...
WSL 2 を実行するには、カーネル コンポーネントの更新が必要です。詳細については https://aka.ms/wsl2kernel を参照してください

というわけで https://aka.ms/wsl2kernel を参照して更新する。

  1. WSL 2 Linux カーネルの更新 | Microsoft Docs から Linux カーネル更新プログラムパッケージ wsl_update_x64.msi をダウンロード
  2. wsl_update_x64.msi を実行してインストール
  3. PowerShell を起動
  4. リトライ
    PS C:\Users\user> wsl --set-version Ubuntu 2
    変換中です。この処理には数分かかることがあります...
    WSL 2 との主な違いについては、https://aka.ms/wsl2 を参照してください
  5. 完了(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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment