patorashのブログ

方向性はまだない

WSL2 + Docker Desktop for WindowsでDockerが動かない件を直した

Docker Desktop for WindowsならWSL IntegrationがあるのでWSL2でDockerが動くと聞いたのでやってみようとしたのですが、うんともすんとも言わないので、一旦WSL2のUbuntuをアンインストールして入れ直しました。

ということで、入れ直したら動いたので、まぁなんか調子悪かったんやなと思ってたのですが、後日WSL2上のUbuntuからdocker-composeを実行したらまた動かない…。

全く原因が分からないので色々ググってはDockerを再起動したり、WSL Integrationを無効・有効を繰り返したりとかしてみたんですが、全くダメ。

そして、GitHubのIssueを見てみたら全く同じような症状の人たちが結構いるみたいだったので、ずーっと読んでいってたら、解決策がありました!

github.com

WSL Integrationを有効にすると、docker-desktop-proxyが上手いこと繋げてくれてるらしい…。

qiita.com

上記のQiitaの記事を引用すると、

$ ps -ef | grep docker
root        41    40  0 13:04 pts/0    00:00:00 /mnt/wsl/docker-desktop/docker-desktop-proxy --distro-name Ubuntu --docker-desktop-root /mnt/wsl/docker-desktop

Technical Preview版では WSL 2の Ubuntuで dockerデーモンが動作していましたが、backend版では docker-desktop-proxyという Docker機能のプロキシーのようなプロセスが確認できます。 また Windows Hyper-Vマネージャーの表示では、Docker DesktopVMは動作していない状態ですが、WSL 2の UbuntuWindowsコマンドプロンプトからの両方から Docker機能を利用できそうです。

とのことなのだが、私の環境でやってみると、どうなるか…。

$ ps -ef | grep docker
patorash     14873 10929  0 03:02 pts/2    00:00:00 grep --color=auto docker

そんなプロセスはいない!ということで、GitHubのissueを参考に、このdocker-desktop-proxyを直接動かしてみます。

$ sudo /mnt/wsl/docker-desktop/docker-desktop-proxy --distro-name Ubuntu --docker-desktop-root /mnt/wsl/docker-desktop

パスワードを聞かれるので、打ちます。その後はうんともすんとも言わないけれど、プロセスが動いてます。

そこで、別タブでターミナルを開いて、docker-compose psと打ってみたところ、結果が表示されました!

そして、docker-desktop-proxyを実行しているタブではログがどんどん流れていきました。

$ sudo /mnt/wsl/docker-desktop/docker-desktop-proxy --distro-name Ubuntu --docker-desktop-root /mnt/wsl/docker-desktop
[sudo] password for patorash:
INFO[0010] proxy >> GET /v1.30/containers/json?all=1&limit=-1&filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dsampleproject%22%2C+%22com.docker.compose.on
eoff%3DFalse%22%5D%7D&trunc_cmd=0&size=0

INFO[0010] proxy << GET /v1.30/containers/json?all=1&limit=-1&filters=%7B%22label%22%3A+%5B%22com.docker.compose.project%3Dsampleproject%22%2C+%22com.docker.compose.on
eoff%3DFalse%22%5D%7D&trunc_cmd=0&size=0 (3.5251ms)

INFO[0010] proxy >> GET /v1.30/containers/ec0324ce627586321377c9b651240975e448314423a29fed2213f30124d0c19e/json

動いてるっぽい。大丈夫そうなので、docker-compose up -dを実行したら、ちゃんとWSL2上のUbuntuでdockerのコンテナが立ち上がりました👍

ようやくまともにWindowsRailsの開発ができそうです!✌✌✌