記事一覧へ

SwarmのCompose Stack

Docker SwarmでComposeのようにスタックを使用してサービスをデプロイする方法

ClaudeClaude Opus 4.5による翻訳

AI生成コンテンツは不正確または誤解を招く可能性があります。

SwarmでCompose

前回、runコマンドと似たserviceコマンドを使ってSwarmにコンテナを起動し、スケールを調整しました。 今回はcomposeコマンドと似たstackについて学びましょう。 スタックとは、1つ以上のサービスをグループにまとめた単位で、アプリケーション全体の構成を定義します。 簡単に言えば、Swarmで動作する(スケール機能が含まれた)composeだと考えましょう。 また、特徴としてcomposeと同様に同じネットワークに含まれます。

まずネットワークを1つ作成しましょう。

$ docker exec -it manager \
docker network create --driver=overlay --attachable test

testという名前のネットワークを作成しました。 次にstack-composeファイルを作成しましょう。 docker-stack.yaml

version: "3"
services:
  flask-echo:
    image: minpeter/flask-echo
    deploy:
      replicas: 3
      placement:
        constraints: [node.role != manager]
    ports:
      - "5000:5000"
    networks:
      - test
  nginx-echo:
    image: minpeter/nginx-echo
    deploy:
      replicas: 3
      placement:
        constraints: [node.role != manager]
    depends_on:
      - flask-echo
    ports:
      - "8080:80"
    networks:
      - test

networks:
  test:
    external: true

ファイルをmanagerコンテナに送る必要があります。docker cpコマンドを使用しましょう。

$ docker cp docker-stack.yaml manager:/docker-stack.yaml

これでstackをデプロイする番です。

$ docker exec -it manager \
docker stack deploy -c /docker-stack.yaml echo

これでhello, flask!を出力するシンプルなページが8080ポートで起動しました。 デプロイされたサービスを確認しましょう。

$ docker exec -it manager \
docker stack services echo

スタックがコンテナをデプロイした方式を確認するには、次のコマンドを使用しましょう。

$ docker exec -it manager \
docker stack ps echo

参考資料

Swarmを利用したDockerコンテナデプロイ_2

作成日:
更新日:

前の記事 / 次の記事