はじめに
この実験では、Docker Compose プロジェクトをリスト表示および管理するためにdocker compose lsコマンドを効果的に使用する方法を学びます。まず、サンプルの Compose プロジェクトをセットアップします。必要な場合には Docker Compose のインストール、docker-compose.ymlファイルの作成、そしてプロジェクトの起動を含みます。
プロジェクトのセットアップ後、docker compose lsを使用して Compose プロジェクトをリスト表示するさまざまな方法を探求します。これには、実行中のプロジェクトのみをリスト表示する方法、停止中のプロジェクトも含むすべてのプロジェクトをリスト表示する方法、プロジェクト名のみを表示する方法、特定の条件に基づいてプロジェクトをフィルタリングする方法が含まれます。この実験の終わりまでに、Compose 環境を可視化するためにdocker compose lsを使用することに習熟しているでしょう。
サンプル Compose プロジェクトを起動
このステップでは、サンプルの Compose プロジェクトを開始する方法を学びます。Docker Compose を使用する前に、まずインストールする必要があります。LabEx VM 環境には 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
インストール後、Docker Compose のバージョンを確認することでインストールを検証できます。
docker-compose --version
コンソールにバージョン情報が表示され、Docker Compose が正しくインストールされたことが確認できます。
次に、簡単な Compose プロジェクトを作成しましょう。プロジェクト用のディレクトリを作成し、その中にdocker-compose.ymlファイルを作成します。このファイルはアプリケーションのサービスを定義します。
まず、my-compose-appという名前のディレクトリを作成します。
mkdir ~/project/my-compose-app
cd ~/project/my-compose-app
次に、nanoエディタを使用して~/project/my-compose-appディレクトリ内にdocker-compose.ymlファイルを作成します。
nano docker-compose.yml
以下の内容をdocker-compose.ymlファイルに追加します。このファイルはnginxイメージを使用するwebという単一のサービスを定義しています。
version: "3.8"
services:
web:
image: nginx:latest
ports:
- "80:80"
ファイルを保存し、nanoエディタを終了します(Ctrl + X、次にY、そしてEnterを押します)。
サービスを開始する前に、nginx:latestイメージがローカルで利用可能であることを確認する必要があります。docker pullコマンドを使用してイメージをプルできます。
docker pull nginx:latest
docker-compose.ymlファイルと必要なイメージが用意できたので、docker-compose upコマンドを使用して Compose プロジェクトを開始できます。-dフラグはサービスをデタッチモードで実行し、バックグラウンドで動作させます。
docker-compose up -d
このコマンドは、docker-compose.ymlファイルで定義されたwebサービスを作成して開始します。サービスが作成され、開始されていることを示す出力が表示されるはずです。
サービスが実行中であることを確認するには、docker psコマンドを使用して実行中のコンテナをリスト表示します。webサービスのコンテナが表示されるはずです。
docker ps
また、Web ブラウザを開いて LabEx VM の IP アドレスにアクセスすることで、Nginx Web サーバーにアクセスできます。コンテナのポート 80 をホストのポート 80 にマッピングしたため、デフォルトの Nginx ウェルカムページが表示されるはずです。
docker compose ls で実行中の Compose プロジェクトを一覧表示
前のステップでは、my-compose-appという名前のサンプル Compose プロジェクトを開始しました。ここでは、docker compose lsコマンドを使用して実行中の Compose プロジェクトをリスト表示する方法を学びます。
docker compose lsコマンドは、すべての Compose プロジェクトをリスト表示するために使用されます。デフォルトでは、実行中のプロジェクトのみが表示されます。
docker-compose.ymlファイルが配置されている~/project/my-compose-appディレクトリにいることを確認してください。
cd ~/project/my-compose-app
次に、docker compose lsコマンドを実行します。
docker compose ls
以下のような出力が表示されるはずです:
NAME STATUS CONFIG FILES
my-compose-app running docker-compose.yml
この出力は、my-compose-appという名前の実行中の Compose プロジェクトが 1 つ存在し、docker-compose.yml設定ファイルを使用していることを示しています。
docker compose lsコマンドは、現在アクティブでコンテナが実行されている Compose プロジェクトを素早く確認する方法です。
docker compose ls -a で停止中の Compose プロジェクトも含めて一覧表示
前のステップでは、実行中の Compose プロジェクトをリスト表示しました。デフォルトでは、docker compose lsは少なくとも 1 つのコンテナが実行中のプロジェクトのみを表示します。停止中のプロジェクトも含む全ての Compose プロジェクトを表示するには、-aフラグを使用する必要があります。
まず、最初のステップで開始したmy-compose-appプロジェクトを停止しましょう。~/project/my-compose-appディレクトリにいることを確認してください。
cd ~/project/my-compose-app
次に、docker-compose downコマンドを使用してプロジェクトを停止します。このコマンドは、docker-compose upで作成されたコンテナ、ネットワーク、ボリュームを停止して削除します。
docker-compose down
サービスとリソースが停止・削除されていることを示す出力が表示されるはずです。
プロジェクトが停止した状態で、デフォルトのdocker compose lsコマンドを使用して再度 Compose プロジェクトをリスト表示してみましょう。
docker compose ls
今回は、my-compose-appプロジェクトが停止しているため、リストに表示されないはずです。
では、docker compose ls -aコマンドを使用して、停止中のプロジェクトも含む全ての Compose プロジェクトをリスト表示します。
docker compose ls -a
以下のような出力が表示されるはずです:
NAME STATUS CONFIG FILES
my-compose-app exited docker-compose.yml
この出力は、my-compose-appプロジェクトが存在し、その状態がexited(停止中)であることを示しています。-aフラグは、現在の状態に関わらず、システム上で定義された全ての Compose プロジェクトを確認するのに便利です。
docker compose ls -q でプロジェクト名のみを一覧表示
前のステップでは、Compose プロジェクトをステータスや設定ファイルと共にリスト表示しました。スクリプトで使用する場合など、プロジェクト名のリストのみが必要な場合があります。docker compose ls -qコマンドを使用すると、これを実現できます。
-qフラグは"quiet"(簡潔表示)を意味し、プロジェクト名以外の出力を抑制します。
~/project/my-compose-appディレクトリにいることを確認してください。
cd ~/project/my-compose-app
次に、docker compose ls -qコマンドを実行します。
docker compose ls -q
コンソールには Compose プロジェクトの名前のみが表示されます:
my-compose-app
これは、余分な情報なしにプロジェクト名のクリーンなリストを取得したい場合に便利です。-qフラグは-aフラグと組み合わせて、停止中のプロジェクトも含む全ての Compose プロジェクト名をリスト表示することもできます。
試してみましょう:
docker compose ls -a -q
以下のように表示されます:
my-compose-app
これは、-qフラグがプロジェクトの実行状態に関わらずプロジェクト名のみを出力することを確認しています(-aフラグと組み合わせた場合でも同様です)。
docker compose ls --filter で Compose プロジェクトをフィルタリング
この最終ステップでは、docker compose lsの出力を--filterフラグでフィルタリングする方法を説明します。多くの Compose プロジェクトがある場合に特定の条件でプロジェクトを検索する際に便利です。
--filterフラグでは、key-value ペアを指定して結果をフィルタリングできます。一般的なフィルタとしてstatusによるフィルタがあります。
まず、my-compose-appプロジェクトが停止していることを確認しましょう。前のステップで停止させましたが、確認するのが良い習慣です。
cd ~/project/my-compose-app
docker-compose down
次に、--filterフラグを使用して実行中の Compose プロジェクトのみをリスト表示します。プロジェクトは停止中なので、このコマンドでは何も表示されないはずです。
docker compose ls --filter status=running
実行中の Compose プロジェクトがないため、出力は表示されません。
では、--filterフラグを使用して停止中の Compose プロジェクトのみをリスト表示しましょう。
docker compose ls --filter status=exited
以下のような出力が表示されます:
NAME STATUS CONFIG FILES
my-compose-app exited docker-compose.yml
これはmy-compose-appプロジェクトのステータスがexitedであるため表示されています。
nameなど他の条件でもフィルタリングできます。my-compose-appという名前のプロジェクトをフィルタリングしてみましょう。
docker compose ls --filter name=my-compose-app
これでもmy-compose-appプロジェクトが表示されます:
NAME STATUS CONFIG FILES
my-compose-app exited docker-compose.yml
--filterフラグは、特に多くの Compose ファイルで定義されたアプリケーションがある環境で、Compose プロジェクトを管理・表示する強力な方法を提供します。
まとめ
この実験では、Docker Compose プロジェクトをリスト表示するdocker compose lsコマンドの使用方法を学びました。まず Docker Compose をインストールし、docker-compose.ymlファイルとdocker-compose up -dコマンドを使用してサンプルの Compose プロジェクトを作成・起動しました。
その後、docker compose lsコマンドの様々なオプションを検討しました。実行中のプロジェクトをリスト表示するdocker compose ls、停止中のプロジェクトも含む全てのプロジェクトをリスト表示するdocker compose ls -a、プロジェクト名のみをリスト表示するdocker compose ls -q、特定の条件でプロジェクトをフィルタリングするdocker compose ls --filterを使用しました。これらの手順により、Compose プロジェクトを管理・検査するためのdocker compose lsコマンドの多様性が実証されました。



