docker stack ls コマンドを使ってスタックを一覧表示する方法

DockerDockerBeginner
今すぐ練習

💡 このチュートリアルは英語版からAIによって翻訳されています。原文を確認するには、 ここをクリックしてください

はじめに

この実験では、docker stack ls コマンドを使用して Docker スタックを一覧表示する方法を学びます。まず、複数コンテナのアプリケーションをスタックとして定義およびデプロイするために不可欠な Docker Compose をインストールします。次に、docker-compose.yml ファイルを使用して簡単な Web サービススタックをデプロイし、一覧表示するスタックを用意します。

デプロイ後、docker stack ls を使用してスタックを一覧表示するさまざまな方法を探索します。これには、実行中のすべてのスタックを一覧表示すること、特定の情報を表示するためにカスタム出力形式でスタックを一覧表示すること、およびプログラムによる処理のために JSON 形式でスタックを一覧表示することが含まれます。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker/ContainerOperationsGroup -.-> docker/ls("List Containers") subgraph Lab Skills docker/ls -.-> lab-555235{{"docker stack ls コマンドを使ってスタックを一覧表示する方法"}} end

すべてのスタックを一覧表示する

このステップでは、システム上で実行中のすべての Docker スタックを一覧表示する方法を学びます。Docker スタックとは、一緒にデプロイされるサービスの集合です。スタックを一覧表示する前に、複数コンテナの Docker アプリケーションを定義して実行するために使用される Docker Compose をインストールする必要があります。

まず、Docker Compose をインストールしましょう。Docker Compose のバイナリをダウンロードし、実行可能にします。

sudo curl -L "https://github.com/docker/compose/releases/download/v2.20.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose

最初のコマンドは、公式の GitHub リポジトリから Docker Compose のバイナリをダウンロードします。$(uname -s)$(uname -m) は、マシンのオペレーティングシステムとアーキテクチャを取得するために使用され、正しいバイナリをダウンロードすることを保証します。2 番目のコマンドは、ダウンロードしたファイルを実行可能にします。

これで Docker Compose がインストールされました。バージョンを確認することで、インストールを検証しましょう。

docker-compose --version

出力には、インストールされた Docker Compose のバージョンが表示されるはずです。

スタックの一覧表示をデモンストレーションするために、簡単なスタックをデプロイする必要があります。簡単な Web サービスを定義する docker-compose.yml ファイルを作成します。

nano ~/project/docker-compose.yml

次の内容を docker-compose.yml ファイルに貼り付けます。

version: "3.8"
services:
  web:
    image: nginx:latest
    ports:
      - "80:80"

この docker-compose.yml ファイルは、nginx:latest イメージを使用し、ホストのポート 80 をコンテナ内のポート 80 にマッピングする web という名前の単一のサービスを定義しています。

では、docker stack deploy コマンドを使用してこのスタックをデプロイしましょう。スタックには mywebstack という名前を付けます。

docker stack deploy -c ~/project/docker-compose.yml mywebstack

-c フラグは使用する Compose ファイルを指定し、mywebstack はスタックに付ける名前です。サービスが作成されてデプロイされていることを示す出力が表示されます。

スタックをデプロイした後、docker stack ls コマンドを使用して実行中のすべてのスタックを一覧表示できます。

docker stack ls

このコマンドは、デプロイされたすべてのスタックの一覧を表示します。これには、スタックの名前、サービスの数、および各サービスの希望するレプリカ数と現在のレプリカ数が含まれます。出力に mywebstack が表示されるはずです。

カスタム形式でスタックを一覧表示する

前のステップでは、デフォルトの出力形式を使用してデプロイされたすべての Docker スタックを一覧表示する方法を学びました。このステップでは、docker stack ls コマンドの出力形式をカスタマイズして、必要な情報のみを表示する方法を学びます。

docker stack ls コマンドは --format フラグをサポートしており、これを使用すると出力を整形するための Go テンプレートを指定できます。特定の情報を抽出したり、出力を他のツールと統合したりする場合に便利です。

まず、スタック名と各スタック内のサービス数を一覧表示しましょう。これには {{.Name}}{{.Services}} のテンプレートフィールドを使用できます。

docker stack ls --format "{{.Name}}: {{.Services}}"

このコマンドでは、--format "{{.Name}}: {{.Services}}" が Docker に対して、各スタックの名前の後にコロンとサービス数を出力するよう指示しています。{{.Name}}{{.Services}} は、各スタックの実際の値に置き換えられるプレースホルダーです。

mywebstack: 1 のような出力が表示され、スタック名とそれに含まれるサービス数が示されるはずです。

フォーマット文字列に他のフィールドを含めることもできます。たとえば、スタック名と希望するレプリカ数を一覧表示しましょう。

docker stack ls --format "Stack Name: {{.Name}}, Desired Replicas: {{.Desired}}"

ここでは、{{.Desired}} フィールドを使用して、スタック内のサービスに対する希望するレプリカ数を表示しています。

--format フラグは非常に柔軟で、異なるフィールドを組み合わせたり、カスタムテキストを追加したりすることができます。利用可能なフィールドの一覧は、docker stack ls コマンドの Docker ドキュメントで確認できます。

もう 1 つの例を試してみましょう。スタック名と現在のレプリカ数を一覧表示します。

docker stack ls --format "Stack: {{.Name}}, Current Replicas: {{.Current}}"

このコマンドは、{{.Current}} フィールドを使用して、スタック内のサービスに対する現在実行中のレプリカ数を表示します。

--format フラグを使用することで、docker stack ls の出力を特定のニーズに合わせて調整でき、デプロイされたスタックに関する情報を処理および分析しやすくなります。

JSON 形式でスタックを一覧表示する

前のステップでは、デフォルト形式とカスタム形式を使用して Docker スタックを一覧表示する方法を学びました。このステップでは、JSON 形式で Docker スタックを一覧表示する方法を学びます。これは、出力をプログラムで解析したり、他のシステムと統合したりする必要がある場合に特に有用です。

docker stack ls コマンドは、他の多くの Docker コマンドと同様に、結果を JSON 配列として出力する --format json オプションをサポートしています。

デプロイされたスタックを JSON 形式で一覧表示しましょう。

docker stack ls --format json

このコマンドは JSON 配列を出力します。配列内の各要素は Docker スタックを表し、スタックの名前、サービス、希望するレプリカ数、現在のレプリカ数などの情報が含まれます。

出力は次のようになります(正確な内容はデプロイしたスタックによって異なります)。

[
  {
    "Name": "mywebstack",
    "Services": "1",
    "Desired": "1",
    "Current": "1"
  }
]

この JSON 出力は構造化されており、スクリプト言語や他のツールを使用して解析しやすいです。たとえば、jq のようなツールを使用して、JSON 出力から特定のフィールドを抽出することができます。

軽量で柔軟なコマンドライン JSON プロセッサである jq をインストールしましょう。

sudo apt-get update
sudo apt-get install -y jq

これで jq がインストールされました。JSON 出力からデプロイされたスタックの名前のみを抽出するために使用しましょう。

docker stack ls --format json | jq '.[].Name'

このコマンドでは、docker stack ls --format json の JSON 出力を jq にパイプしています。'.[].Name' は、JSON 配列内の各オブジェクトから Name フィールドを選択する jq フィルターです。

出力として、デプロイされたスタックの名前 mywebstack が表示されるはずです。

JSON 形式でスタックを一覧表示することで、スタック情報にアクセスする構造化された方法が提供され、自動化や統合の目的に不可欠です。

まとめ

この実験では、docker stack ls コマンドを使用して Docker スタックを一覧表示する方法を学びました。実験ではまず、Docker スタックを扱うための前提条件である Docker Compose のインストールを案内し、そのインストールを確認しました。次に、基本的な Web サービスを定義するシンプルな docker-compose.yml ファイルを作成し、docker stack deploy を使用して mywebstack という名前のスタックとしてデプロイしました。

続くステップでは、提供された内容では完全に詳細が記載されていませんが、docker stack ls を使用してデプロイされたすべてのスタックを一覧表示し、特定の情報を表示するように出力形式をカスタマイズし、プログラムで処理するために JSON 形式でスタックを一覧表示することがカバーされていました。この実践的な経験を通じて、docker stack ls コマンドとその様々なオプションを使用して Docker スタックを管理および調査する実用的な知識を得ることができました。