Docker コンテナ配置戦略 Service編 ~コンテナを自由自在に!~

Service

アプリケーションを構成する一部のコンテナを制御するための単位としてServiceがある。

Serviceの作成

Swamのmanagerを使用。 registryコンテナにpushしてあるイメージを使用。 Serviceはmanagerコンテナ内から実行。

docker container exec -it manager docker service create --replicas 1 --publish 8000:8080 --name test registry:5000/example/test:latest


Serviceの一覧の確認。

docker container exec -it manager docker service ls


Serviceが制御するレプリカ数を増やす。 コンテナの数を複製できるため、スケールアウト(台数を増やすことでシステム全体の性能を向上させる)に役立つ。

docker container exec -it manager docker service scale test=5


Swarmクラスタ上で実行されているコンテナの確認。

docker container exec -it manager docker service ps test | grep Running


NODEの項目を見ると、ServiceによってSwarmクラスタのノードに分散して配置されていることがわかる。 デプロイしたserviceの削除。

docker container exec -it manager docker service rm test



結論

以上のように、Serviceにレプリカ数の制御をするとコンテナを複製し、 複数のノードに適切に配置してくれる。 Serviceは、コンテナを利用したアプリケーションのスケールアウトを容易にする。



参考文献

Docker/Kubernetes 実践コンテナ開発入門

https://www.amazon.co.jp/Docker-Kubernetes-実践コンテナ開発入門-山田-明憲/dp/4297100339