multipass に docker を入れる。
multipass を windowsでインストールすると、HyperVの仮想マシンで起動します。
choco install multipass
windows の hyper-V で起動したubuntu に docker を入れる。
sudo snap install docker
mutipass な ubuntu の docker(dockerd) が外部接続を受けるようにする。
dockerd の起動設定を変える。
[Service] # ExecStart=/usr/bin/snap run docker.dockerd ExecStart=/usr/bin/snap run docker.dockerd -H tcp://0.0.0.0:2375 -H unix:///var/run/docker.sock
書き換えコマンド。
sudo vim /etc/systemd/system/snap.docker.dockerd.service # または # sudo systemctl edit snap.docker.dockerd.service
リロード
sudo systemctl daemon-reload sudo systemctl status snap.docker.dockerd.service
外部(Windows/Mac)からmultipass のdocker に接続する。
multipass の仮想マシンが tcp://172.17.231.118:2375
でlisten しているので、そこへ接続する。
DOCKER_HOST=tcp://172.17.231.118:2375 /usr/bin/docker run --rm hello-world
docker コマンドをインストールする。
dockerd を除いた、docker コマンドだけをインストールするには
wsl v1 のDeibanの場合。
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \ $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update ## sudo apt install docker-ce-cli
windows内に複数の仮想環境が乱立するが、TCP経由でdockerd を使うと選択肢が多く、比較的インストールがスムーズに終わることがわかる。
Windows内部の構造を単純に考えると次のようになる。
windows 内部 - multipass - ubuntu - wsl - v1 - debian
docker-desktop でお手軽なんだけど、docker-desktop 版をいれるとwslv2 になるのでめんどくさいんですよ。