Swarmへのサービスのデプロイ
Swarmクラスター上でコンテナ化されたアプリケーションをサービスとしてデプロイ・スケーリングし、ライフサイクルを管理します。
「Swarmへのサービスのデプロイ」はCoddyKit上の無料DevOps Bootcampレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはDevOps Bootcamp学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 DevOps Bootcampコースには全4レッスンが含まれています。
Docker Swarm Serviceとは?
Docker Swarmにおけるserviceとは、クラスター全体でコンテナ化されたアプリケーションをどのように実行するかを定義したものです。
個々のコンテナを実行する代わりに、serviceを定義してSwarmに「このイメージのインスタンスを、これらのポートで、これらの設定を使ってX個実行したい」と伝えます。
Swarmは望ましい状態が維持されるようにし、コンテナが失敗した場合は自動的に再起動します。

ServiceとContainerの違い
次のように考えてみてください。
- containerは、アプリケーションの単一のインスタンスです。
- serviceは、Swarm全体で1つ以上の同一コンテナ(tasksと呼ばれます)を実行するための設計図です。
Serviceはタスクを分散し、障害を自動的に処理することで、高可用性とスケーラビリティを実現します。
最初のServiceをデプロイする
docker service createコマンドを使うと、アプリケーションをserviceとしてSwarmクラスターにデプロイできます。簡単なNginx Webサーバーのserviceを作成しましょう。
次の例を実行してみてください。
docker service create \
--name my-web-app \
-p 80:80 \
--replicas 1 \
nginxService作成の仕組みを理解する
先ほど使用したコマンドを詳しく見てみましょう。
--name my-web-app:serviceに覚えやすい名前を付けます。-p 80:80:Swarmノードのポート80を、コンテナ内のポート80に割り当てます。--replicas 1:このserviceの実行中インスタンス(task)を1つ維持するようSwarmに指示します。nginx:serviceのtaskに使用するDockerイメージを指定します。
Serviceを確認する
serviceを作成したら、状態を確認し、実行中のtaskを確認しましょう。次のコマンドを使用します。
docker service ls:Swarm内のすべてのserviceを一覧表示します。docker service ps <service_name>:serviceに関連付けられた個々のtask(コンテナ)を表示します。
docker service ls
docker service ps my-web-appServiceをスケールアップする
Docker Swarmの大きな利点の1つは、簡単にスケーリングできることです。1つのコマンドで、serviceの実行中インスタンス(replicas)の数を増やせます。
my-web-appを3つのreplicasにスケールしましょう。
docker service scale my-web-app=3Serviceをスケールダウンする
同じように簡単にserviceをスケールダウンして、リソース使用量を減らしたり、トラフィックを管理したりできます。Swarmは余分なコンテナを適切に停止し、残りのコンテナは実行し続けます。
my-web-appを1つのreplicaに戻しましょう。
docker service scale my-web-app=1Serviceを更新する
アプリケーションの新しいバージョンをデプロイしたりserviceの設定を変更したりする必要がある場合、docker service updateはローリングアップデートを実行します。Swarmはアプリケーションの可用性を維持しながら、taskを1つずつ更新します。
Nginx serviceを特定のバージョンに更新しましょう。
docker service update --image nginx:1.25 my-web-appServiceを削除する
serviceが不要になったら、Swarmから削除できます。これにより、関連するすべてのtaskが停止し、クラスターからserviceの定義が削除されます。
例として作成したWebアプリのserviceを削除します。
docker service rm my-web-appService管理クイズ
my-backendという名前のserviceが3つのreplicasで実行され、イメージmy-backend:v1を使用しています。これを新しいイメージmy-backend:v2に更新し、replicasも5つに増やす必要があります。
振り返り:Swarm Services
よくできました!Docker Swarmでアプリケーションをserviceとしてデプロイおよび管理するための基本事項を学びました。
- Serviceは、コンテナ化されたアプリケーションの望ましい状態を定義します。
docker service createを使ってserviceを作成する方法を学びました。- Serviceの確認、スケーリング(
docker service scale)、更新(docker service update)について学びました。 - 最後に、
docker service rmでserviceを削除できます。
Serviceは、Swarmクラスターでスケーラブルかつレジリエントなアプリケーションを構築するための基本要素です。
よくある質問
「Swarmへのサービスのデプロイ」レッスンは無料ですか?
はい。「Swarmへのサービスのデプロイ」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、DevOps Bootcampコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 DevOps Bootcampコースには全4レッスンが含まれています。
「Swarmへのサービスのデプロイ」で何を学びますか?
Swarmクラスター上でコンテナ化されたアプリケーションをサービスとしてデプロイ・スケーリングし、ライフサイクルを管理します。 ブラウザで直接実行するハンズオンコードでDevOps Bootcampを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
DevOps Bootcampを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのDevOps Bootcampは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「Swarmへのサービスのデプロイ」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このDevOps Bootcampレッスンでコードを書いて実行できますか?
はい。すべてのDevOps Bootcampレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Docker Swarm入門
- Swarmクラスターのセットアップ
- Swarmへのサービスのデプロイ
- Swarmでのスケーリングとローリングアップデート