0Pricing
DevOps Bootcamp · レッスン

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は望ましい状態が維持されるようにし、コンテナが失敗した場合は自動的に再起動します。

Swarmへのサービスのデプロイ — イラスト1

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 \
  nginx

Service作成の仕組みを理解する

先ほど使用したコマンドを詳しく見てみましょう。

  • --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-app

Serviceをスケールアップする

Docker Swarmの大きな利点の1つは、簡単にスケーリングできることです。1つのコマンドで、serviceの実行中インスタンス(replicas)の数を増やせます。

my-web-appを3つのreplicasにスケールしましょう。

docker service scale my-web-app=3

Serviceをスケールダウンする

同じように簡単にserviceをスケールダウンして、リソース使用量を減らしたり、トラフィックを管理したりできます。Swarmは余分なコンテナを適切に停止し、残りのコンテナは実行し続けます。

my-web-appを1つのreplicaに戻しましょう。

docker service scale my-web-app=1

Serviceを更新する

アプリケーションの新しいバージョンをデプロイしたりserviceの設定を変更したりする必要がある場合、docker service updateはローリングアップデートを実行します。Swarmはアプリケーションの可用性を維持しながら、taskを1つずつ更新します。

Nginx serviceを特定のバージョンに更新しましょう。

docker service update --image nginx:1.25 my-web-app

Serviceを削除する

serviceが不要になったら、Swarmから削除できます。これにより、関連するすべてのtaskが停止し、クラスターからserviceの定義が削除されます。

例として作成したWebアプリのserviceを削除します。

docker service rm my-web-app

Service管理クイズ

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フィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. Docker Swarm入門
  2. Swarmクラスターのセットアップ
  3. Swarmへのサービスのデプロイ
  4. Swarmでのスケーリングとローリングアップデート
← DevOps Bootcampに戻る