Pi Zero 2 W で動く Docker をリモートから利用

Pi Zero 2 W で Docker を稼働させてみています。やはり重たくてキツイですが、ちょっと軽く Docker コンテナーを動かしてみたい時に便利です。もちろん、リモートから利用。

dockerd はすでにインストール済みだとします。
最初に Pi Zero 2 W で daemon.json の用意。

$ cat /etc/docker/daemon.json 
{
  "hosts": [
    "fd://",
    "tcp://0.0.0.0:2375"
  ]
}

次に /etc/systemd/system/multi-user.target.wants/docker.service の修正。
`-H` にホストの指定は daemon.json にもあるとエラーになるので、こちらのものを削除してあります。

$ cat /etc/systemd/system/multi-user.target.wants/docker.service | grep Exec | grep cont
ExecStart=/usr/bin/dockerd --containerd=/run/containerd/containerd.sock
$ sudo systemctl reload-daemon
$ sudo systemctl restart docker
$ sudo systemctl status docker

ExecStart で `-H fd:// -H tcp://0.0.0.0:2375` と指定するなら、/etc/docker/daemon.json は用意しなくても良い。

ちなみに、`systemctl edit` を使ったが、うまくファイルが保存されなかったので、ここで紹介している方法にしました。後で調べたいところ。

以上で準備完了。

次は Pi Zero 2 W を利用するマシンからの操作方法についてです。

DOCKER_HOST には名前解決ができるホスト名の指定が必要です。
mDNS 用のものは VS Code では解決できないようなので IP アドレスで指定することにしました。
/etc/hosts へ登録するなり DNS へ登録すれば、IP アドレスでなくても良いはずです。
IP アドレスの確認は下記。Pi Zero 2 W のホスト名が ubuntu-202207.local だとしています。
ubuntu-202207.local 側で hostname -I コマンドを実行して確認でも良い。
hostname コマンドを使うと Docker ネットワークの IP アドレスも表示されるので注意。

$ avahi-resolve -4 -n ubuntu-202207.local
ubuntu-202207.local 192.168.1.100
$ ssh ubuntu@ubuntu-202207.local hostname -I
192.168.1.100 172.17.0.1 172.18.0.1

これで、DOCKER_HOST を指定して docker コマンドを実行。

DOCKER_HOST=tcp://192.168.1.100:2375 docker ps -a

VS Code の起動もいける。ただ、重すぎるので、コンテナー接続はきつかった。

DOCKER_HOST=tcp://192.168.1.100:2375 code .
同じタグの記事: Docker
同じカテゴリの記事: Linux