Docker DesktopからWSL2上のUbuntuのDocker daemonへ
WSL2に移行したら開発用のDockerコンテナが起動しなくなった
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のスタートアップから外しておく。