それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

multipass のubuntu で dockerd を動かして外部から接続できるようにする。

multipass に docker を入れる。

multipass を windowsでインストールすると、HyperVの仮想マシンで起動します。

choco install multipass 

windowshyper-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 になるのでめんどくさいんですよ。