Pi 部屬 Docker SWARM 讓多台Pi Docker協同作業

設定並安裝好PI系統後

先執行

sudo raspi-config

將各台pi的ssh功能打開

並規劃好各台pi的hostname以利之後辨識

例如  nod1 ... nod2....nod3



安裝 docker

curl -sSL https://get.docker.com | sh

sudo usermod -aG docker $(whoami)

sudo reboot

重開機後確認docker是否正確安裝完成

docker version

docker info

各台pi設定好ssh key登入 並且妥善保存privatekey檔案

第一台docker master主機ip為 192.168.1.50執行指令

docker swarm init --advertise-addr 192.168.1.50 --listen-addr 192.168.1.50:2377

記錄保存產生的token

Swarm initialized: current node (yf7zmwyrwhefanq5t30ip30lm) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join --token $(TOKEN) 192.168.1.50:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

第二台pi 執行指令
docker swarm join --token $(TOKEN) 192.168.1.50:2377

完成後於第一台主機下指令
docker node ls
確認是否連結兩台pi

ID                            HOSTNAME   STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
yf7zmwyrwhefanq5t30ip30lm *   nod1       Ready     Active         Leader           20.10.3
p3tqjujamcwam1lc2arxf0xcs     nod2       Ready     Active                          20.10.3


建立 Swarm Visualizer服務


docker service create \
        --name viz \
        --publish 8080:8080/tcp \
        --constraint node.role==manager \
        --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
        alexellis2/visualizer-arm:latest

建立  Portainer Agent

curl -L https://downloads.portainer.io/portainer-agent-stack.yml -o portainer-agent-stack.yml

部屬 Portainer stack

docker stack deploy --compose-file=portainer-agent-stack.yml portainer

開啟網頁 http://192.168.1.50:9000 開始設定Portainer

往後有需要多台pi連動容器
需要從 docker run 的指令  變更為 docker service create

我們先嘗試建立一個 自動更新容器的WatchTower

docker service create \
  --name WatchTower \
  --mount type=bind,src=/var/run/docker.sock,dst=/var/run/docker.sock \
  -e WATCHTOWER_CLEANUP=true \
  -e WATCHTOWER_REMOVE_VOLUMES=true \
  -e TZ=Asia/Taiepi \
  containrrr/watchtower:latest

建立後  會發現 swarm 自動把他利用NOD2機器去建立這個容器服務

留言

這個網誌中的熱門文章

chmod 指令- 修改檔案目錄權限

Ubuntu 設定timesyncd時間同步、時區、 NTP同步對時

Linux 安全性自動更新的 unattended 套件