プログラムを中心とした個人的なメモ用のブログです。 タイトルは迷走中。
内容の保証はできませんのであしからずご了承ください。

2022/05/27

Portainer を Docker Swarm で動かす

event_note2022/05/27 5:36

以前 Portainer を docker-compose で動かしました。

今回はこの Portainer を Docker Swarm が有効になっている環境で動かしてみます。
クラスタを構成している全ノードが Portainer で管理できるようになります。

環境

  • Docker 20.10.12
  • Portainer 2.13.1

Docker Swarm の有効化

以下のコマンドを実行します。

$ docker swarm init

ちょっと試すだけならばここまでで OK です。
必要なら worker ノードの追加なども行ってください。

Portainer の起動

公式ドキュメントが以下になります。

こちらに yml ファイルの置き場所が記載されているので、Community Edition のほうのファイルをダウンロードします。

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

中身はこんな感じです。

version: '3.2'

services:
  agent:
    image: portainer/agent:2.13.1
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - /var/lib/docker/volumes:/var/lib/docker/volumes
    networks:
      - agent_network
    deploy:
      mode: global
      placement:
        constraints: [node.platform.os == linux]

  portainer:
    image: portainer/portainer-ce:2.13.1
    command: -H tcp://tasks.agent:9001 --tlsskipverify
    ports:
      - "9443:9443"
      - "9000:9000"
      - "8000:8000"
    volumes:
      - portainer_data:/data
    networks:
      - agent_network
    deploy:
      mode: replicated
      replicas: 1
      placement:
        constraints: [node.role == manager]

networks:
  agent_network:
    driver: overlay
    attachable: true

volumes:
  portainer_data:

これを docker stack deploy で起動します。

$ docker stack deploy -c portainer-agent-stack.yml portainer
Creating network portainer_agent_network
Creating service portainer_agent
Creating service portainer_portainer

以上で完了です。
あとは http://localhost:9000 にアクセスすれば OK です。

起動した portainer を停止・削除したい場合は以下のコマンドを実行します。

$ docker stack rm portainer