Docker Swarmでスタック単位・サービス単位でアプリケーションを管理する

APIバージョンは1.37あたり。スタックとかサービスとか、ちゃんと整理しないと理解がおっつかないのでまとめておきました。

スタック単位での作業

デプロイ

Docker Documentationによるとyamlの内容をcatで渡すことができるようだ。(ということはどこかに上げてあるものをcurlで取ってこさせることもできる。)スタックはデプロイと同時に作成される。--pruneをつけることでreplica数の変更時にゴミコンテナを残さない。

cat docker-compose.yml | docker -H swarm-host stack deploy stack-name --compose-file - --prune

これでイメージが更新されたものはデプロイが走る。スタックの中には様々な依存関係としてのサービスが起動していると思うが、イメージが更新されたものだけがデプロイされるのでRedis等が落ちる事は無い。逆にこれでは特定のサービスを再デプロイ(正しくは再起動)できないと思うかもしれないが、service update--forceをつけることで再起動ができるので、サービスが何かおかしいので再起動したい時はこれを使う。

docker -H swarm-host service update service-name --force

スタックの一覧を見る

スタックが正しく作成されたかどうが、既存のスタックとかぶらないスタック名でアプリケーションをデプロイする時にスタックの一覧を確認するには下記コマンドで良い。

docker -H swarm-host stack ls

メモ

  • たまにstack deployでは正しくサービスがデプロイされないことがあると思うが、そういう場合にもこれを使って強制的に再起動すると良い。)
  • service updateではイメージはpullされないのでデプロイとしては使えない。

コンテナの一覧を見る

docker -H swarm-host stack ps stack-name

サービス単位での作業

コンテナの一覧を見る

docker -H swarm-host service ps stack-name_service-name

ログを見る

docker -H swarm-host service logs stack-name_service-name

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA