🖥

Docker 初心者 | サービスについて > docker-compose と docker stack ( 公式チュートリアル part

2023/08/26に公開

Get Started, Part 3: Services - Docker Documentation より

この章で扱うこと

  • ロードバランサーでアプリケーションをスケールさせる
  • スタック > サービス(今ここ) > コンテナ

サービスとは

  • アプリケーションの各部分は「サービス」と呼び方をする。
    • たとえば動画共有サイトなら、DBを扱うサービスとか、動画本体を扱うサービスとか、フロントエンドのサービスとかいう風に分かれるはず。
  • サービスは複数のコンテナによってなる。
  • サービスは1個のイメージから実行される。
  • スケーリングのためには、1個のイメージをどんなポートで、何個のコンテナで走らせるか、とかいう設定が必要だ。
  • 喜んでほしい。 docker-compose.yml を書けば、そんなこと朝飯前さ。

docker-compose.yml

公式チュートリアル part2 で作ったイメージを指定して compose ファイルを作る。

version: "3" # この compose ファイルのバージョン
services:
  web:
    image: yumainaura/get-started # 自分のレポジトリのイメージ # python で Web サーバーを起動する
    deploy:
      replicas: 5 # 起動するプロセスの数
      resources:
        limits:
          cpus: "0.1" # CPUの上限値
          memory: 50M # メモリの上限
      restart_policy:
        condition: on-failure
    ports:
      - "80:80" # localの80番ポート:dockerの80番ポート をつなげる
    networks: # ネットワーク設定 (トップレベルに指定したものから選ぶ)
      - webnet
networks: # トップレベルのネットワーク設定
  webnet:

swarm

このコマンドを打っておく。意味については今後の章で明らかにされるらしい。

$ docker swarm init

アプリケーションを起動

getstartedlab というアプリケーション名を与えてデプロイする。
( 実行ではなくデプロイという扱い )

$ docker stack deploy -c docker-compose.yml getstartedlab

コンテナの確認

同じくアプリケーション名を与えてプロセスを確認する。

docker stack ps getstartedlab

docker-compose.ymlreplicas: 5 に設定してあるため、コンテナが5個起動している。
この replicas の設定を増やすだけで、スケールさせることが出来る。

ID            NAME                 IMAGE                          NODE  DESIRED STATE  CURRENT STATE           ERROR  PORTS
4hyp9xra2dmt  getstartedlab_web.1  yumainaura/get-started:latest  moby  Running        Running 45 seconds ago         
60ns7v9asl31  getstartedlab_web.2  yumainaura/get-started:latest  moby  Running        Running 46 seconds ago         
9o8clta8fpq9  getstartedlab_web.3  yumainaura/get-started:latest  moby  Running        Running 46 seconds ago         
w3tlfu97uffx  getstartedlab_web.4  yumainaura/get-started:latest  moby  Running        Running 46 seconds ago         
ybvi20wefg95  getstartedlab_web.5  yumainaura/get-started:latest  moby  Running        Running 46 seconds ago         

アクセスしてみる

http://localhost/ を見てみる。

ページを更新するたびにサーバーのホスト名が変わり、全部で五種類あるのが分かると思う。

image

image

アプリケーション終了

アプリケーション名を指定して rm する。

$ docker stack rm getstartedlab

参考

チャットメンバー募集

何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。

https://line.me/ti/g2/eEPltQ6Tzh3pYAZV8JXKZqc7PJ6L0rpm573dcQ

Twitter

https://twitter.com/YumaInaura

公開日時

2017-05-21

Discussion