Get Started, Part 3: Services - Docker Documentation より
この章で扱うこと
- ロードバランサーでアプリケーションをスケールさせる
- スタック > サービス(今ここ) > コンテナ
サービスとは
- アプリケーションの各部分は「サービス」と呼び方をする。
- たとえば動画共有サイトなら、DBを扱うサービスとか、動画本体を扱うサービスとか、フロントエンドのサービスとかいう風に分かれるはず。
- サービスは複数のコンテナによってなる。
- サービスは1個のイメージから実行される。
- スケーリングのためには、1個のイメージをどんなポートで、何個のコンテナで走らせるか、とかいう設定が必要だ。
- 喜んでほしい。 docker-compose.yml を書けば、そんなこと朝飯前さ。
docker-compose.yml
公式チュートリアル part2 で作ったイメージを指定して compose ファイルを作る。
docker-compose.yml
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.yml
で replicas: 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/ を見てみる。
ページを更新するたびにサーバーのホスト名が変わり、全部で五種類あるのが分かると思う。
アプリケーション終了
アプリケーション名を指定して rm
する。
$ docker stack rm getstartedlab
参考
チャットメンバー募集
何か質問、悩み事、相談などあればLINEオープンチャットもご利用ください。