Debian(WSL2)+Dockerの環境構築


WSL 2上にDebianをインストールした際の淡々とした記録です。

アプリインストール

$ sudo apt update && sudo apt dist-upgrade
$ sudo apt install wget curl make git vim
$ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
$ echo 'eval "$(/home/linuxbrew/.linuxbrew/bin/brew shellenv)"' >> ~/.profile
$ curl https://get.volta.sh | bash
$ source ~/.profile
$ brew install tfenv
$ tfenv install latest
$ tfenv use latest
$ volta install node@lts
$ volta install pnpm

Docker Desktop for Windowsとの連携

  1. Settings | Resources | WSL INTEGRATION
  2. Enable integration with additional distros: で使いたいディストロをON

一番やりたかったDocker Desktop for Windowsを使ったWSL上での呼び出し。

ディストロが1つしか入っていない場合、デフォルトのディストロには自動でWSLインテグレーションシステムが発動する。

しかし、2つ以上の場合は、指定してONにしないとDocker Desktopとの連携が取れない。

この設定をすればWSL2上で docker コマンドが使えるようになる。

Docker on WSL2

Docker Desktopが有料化したことを受け、DockerをWSL2のDebianへインストールする。

まずは公式通りに。Docker Composeはこちらから。そして、そのままでは docker run できない。WSL2側で動作しないので、追加で下記作業する。

$ touch /etc/fstab
$ update-alternatives --set iptables /usr/sbin/iptables-legacy
$ service docker start

Docker on WSL2とPhpStormを接続する

DockerへはTCP接続できそうな感じだけど、設定をしても繋がらなかった。そこでいったん手軽にSSHで接続する。

$ sudo apt install openss-server
$ sudo vim /etc/ssh/sshd_config
# 適当にポートやセキュリティ設定を変える
$ sudo service ssh start

何かしらオーバーヘッドはありそうだが、とりわけ接続が遅いなどは感じられないので大丈夫そう。

あとはPhpStormの File | Settings | Build, Execution, Deployment | Docker からDockerへの接続にSSHを選択。

Docker on WSL2とPhpStormのtcp接続

上で繋がらなかったと書いたけれど、追跡調査して繋がるようになった。

$ mkdir /etc/systemd/system/docker.service.d
$ sudo vim /etc/systemd/system/docker.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375
$ sudo vim /etc/docker/daemon.json
{"hosts": ["tcp://127.0.0.1:2375", "unix:///var/run/docker.sock"]}
$ sudo service docker restart

最後に、PhpStormの File | Settings | Build, Execution, Deployment | Docker から TCP Socker を選択。

Engine API URL には http://localhost:2375 を設定。

正直なにをやっているかサッパリ分からない……。ひとまずSSHでいいかな。

以上

今後また何かあれば随時更新予定。