Docker Swarmとは、複数のコンテナを管理するためのツールのことです。
いわゆるコンテナオーケストレーションツールで、Kubernetesなどが主流なようですが、Docker SwarmはDockerの標準機能で使えるので手頃というメリットがあります。
簡単に図にすると以下のような構成になります。
まず、コンテナはサーバーの上で動いていますが、このサーバーのことをworkerやnodeといいます。workerの集まりをクラスタと言います。1台だけmasterというworkerが存在し、クラスタはこのmasterから操作します。
serviceをデプロイすると、指定した数だけコンテナをworkerにデプロイしてくれます。デプロイされるworkerは自動で決まります。
serviceは同じ種類のコンテナをデプロイするだけですが、例えば図のようにコンテナAを3台デプロイするserviceと、コンテナBを3台デプロイするserviceを同時にデプロイしたい場合を考えます。
その際にstackというものが使用できます。stackは複数のserviceをまとめてデプロイするために使えます。