Docker DesktopからWSL2上のUbuntuのDocker daemonへ

WSL2に移行したら開発用のDockerコンテナが起動しなくなった

WSL2を有効化し、動作が遅くなった問題にも対処の続編。

Ubuntu側にファイルを移したら開発環境のDockerイメージがビルドできなくなってしまい、起動できないと言う問題が発生した。

原因としてはDocker Desktopのファイル共有の設定にWSL上のパスが入っていないので、Dockerのボリュームの作成ができないと言うもの。
そしてファイル共有にWSLのパスを追加できないので、Ubuntu側にソースを置くことにした今、Docker Desktopの環境で使い続けることはできなくなった。

UbuntuでDocker daemonを起動すれば解決

と言うことでWindows版のDocker DesktopはやめてWSLのUbuntuにDockerを入れてDocker daemonを立てることに。

以前はWSL上のUbuntuでDockerを動かすのは、UbuntuのバージョンやDockerのバージョンの組み合わせ次第でうまく動いたり動かなかったりと、なかなか難しかったりしたようだが、今は問題ないようだ。

最新のDockerを入れて起動する

Ubuntuのデフォルトのaptリポジトリから入るDockerは古いので、Docker公式のUbuntuへのインストールドキュメントを参考にDocker公式のaptリポジトリから最新のDockerを入れる。

$ sudo apt-get remove docker docker-engine docker.io containerd runc
$ sudo apt-get update
$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
$ sudo apt-get update
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

インストールが済んだら起動する。

$ sudo service docker start

docker-compose buildするとなんかcgroupなんちゃらとかエラーが出るので以下のコマンドでエラーを回避。

$ sudo mkdir /sys/fs/cgroup/systemd
$ sudo mount -t cgroup -o none,name=systemd cgroup /sys/fs/cgroup/systemd

これで開発環境のDockerイメージのビルド&コンテナ起動も問題なくできるようになった。ヨシヨシ。

Docker Desktopは不要になったのでWindowsのスタートアップから外しておく。