雑念日記

主に技術的なことをつらとらと(書ければいいな)。

WSL2 + Docker Compose で開発環境用意した話

Xubuntuが乗ったThinkPad X230のブートが怪しい感じになってきた1
X230を購入したのが2012年秋頃だったはずなのでかれこれ8年ほど使ってることになる。
そろそろガタが出始めてもおかしくはないのかもしれない。
(忙しいときに限ってこういうことは起こる。)

これが万全に動作するのを前提に開発を進めるのはさすがにちょっと怖いので、ひとまず別で使ってるWindowsマシン(ThinkPad X1 Yoga)を開発用にセットアップすることにした。

WSL2が良さげとのウワサなのでWSL2 + Docker Composeで開発環境構築してみたらわりとすんなり用意できちゃってすごいねえというログ。

WSL2のインストール

公式の手順で問題なくいける。

docs.microsoft.com

LinuxディストリビューションはUnbuntu 20.04を選択した。Windowsターミナルは試してない。

LinuxカーネルをエミュレートしていたWSLと違って、WSL2はVM内で完全なLinuxカーネルを実行するとのこと。 VMといっても立ち上がりは高速で全然ストレスない。しゅごい。

Docker Composeのインストール

WSL1だとDocker for Windowsが必要で、Hyper-Vが必要で、VirtualBoxが共存できなくて…みたいな感じで諦めたんだけど、WSL2ならVMLinuxカーネルが動いてるので普通にDockerが入るらしい。しゅごい。

これも公式の手順で問題なくいける。

docs.docker.com

あとはgit入れて、emacs入れて、とかその他諸々必要なモノを入れたら普通に開発できる環境が整った。しゅごい。

落とし穴がないわけではない

まったく順調に環境が整ったかというとそうでもなくて、いくつか問題はあった。

DNSの設定の問題

Dockerコンテナ側でライブラリのインストール時に名前解決できなくて失敗する、みたいなことが起きるので調べてみたら、WSLが自動で仮想ネットワークのDNS設定を生成しててそれが不調を起こすみたいな話らしかった。 以下の手順で解決した。

WSL2 DNS issues · Issue #5256 · microsoft/WSL · GitHub

systemctl動いてない

systemdがPID 1で動いてないからダメとのこと。 デーモンが動いてくれないのでいろいろ困る。Dockerもいちいち手で sudo service docker start みたいなことしなければならない。

Blockers for systemd? · Issue #994 · microsoft/WSL · GitHub

genieを使うなどの解決方法は提示されてるようだけど、様子見中。

ホスト側のPATHを引き継がせない

デフォルトではWSL側からWindowsのアプリケーションを実行できたりするようになってるのだけど、開発用途には分離できてた方が都合が良かろうと思ったので無効にした。

[interop]
appendWindowsPath = false
enabled = false

docs.microsoft.com

あとはなんだっけ。思い出したら書く。


  1. /がreadonlyでremountされてGUIが立ち上がってこないのでsyslog等を確認するも原因がよくわからず。ログに残ってない出力があったかなと思ってrebootかけてみたら今度は普通に立ち上がる(何もしてないのに直った?)など…。