docker compose images コマンドでイメージを一覧表示する方法

DockerBeginner
オンラインで実践に進む

はじめに

この実験では、docker-compose.ymlファイルで定義されたサービスが使用する Docker イメージをリスト表示するdocker compose imagesコマンドの使用方法を学びます。まずシンプルなdocker-compose.ymlファイルを準備し、docker compose upコマンドでサービスを起動します。

その後、イメージをリスト表示するさまざまな方法を探求します。作成されたコンテナが使用するすべてのイメージをリスト表示する方法、quiet オプションを使用してイメージ ID のみを表示する方法、JSON 形式で表示して解析しやすくする方法などを学びます。この実践的な経験を通じて、Docker Compose プロジェクト内でイメージを管理する実用的なスキルを習得できます。

シンプルな docker-compose.yml ファイルを準備する

このステップでは、シンプルなdocker-compose.ymlファイルを準備します。開始前に、Docker Compose をインストールする必要があります。Docker Compose は、マルチコンテナの Docker アプリケーションを定義および実行するためのツールです。Compose では、YAML ファイルを使用してアプリケーションのサービスを設定します。その後、単一のコマンドで設定からすべてのサービスを作成および起動できます。

まず、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 version v2.20.2のような出力が表示されるはずです。

次に、プロジェクト用のディレクトリを作成し、その中に移動します。

mkdir ~/project/my-docker-app
cd ~/project/my-docker-app

ここで、nanoエディタを使用してdocker-compose.ymlファイルを作成します。このファイルは、nginxイメージを使用したシンプルな Web サービスを定義します。

nano docker-compose.yml

nanoエディタで、以下の内容を貼り付けます:

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

このdocker-compose.ymlファイルを分解してみましょう:

  • version: '3.8'は Compose ファイルフォーマットのバージョンを指定します
  • services:はアプリケーションのサービスを定義します
  • web:はサービスの名前です
  • image: nginx:latestはこのサービスで使用する Docker イメージを指定します。この場合、最新バージョンのnginxイメージを使用しています
  • ports:はホストとコンテナ間のポートをマッピングします。"80:80"はホストのポート 80 をコンテナのポート 80 にマッピングします

Ctrl + X、次にY、そしてEnterを押してファイルを保存します。

サービスを起動する前に、nginx:latestイメージをプルする必要があります。

docker pull nginx:latest

このコマンドは、Docker Hub からnginx:latestイメージをダウンロードします。

docker-compose.yml ファイルで定義されたサービスを起動

このステップでは、docker-compose.ymlファイルで定義されたサービスを起動します。サービスのビルド、作成、起動にはdocker-compose upコマンドを使用します。

docker-compose.ymlファイルを作成した~/project/my-docker-appディレクトリにいることを確認してください。

cd ~/project/my-docker-app

次に、以下のコマンドを実行してサービスをデタッチドモード(バックグラウンド)で起動します。

docker-compose up -d

-dフラグはコンテナをデタッチドモードで実行し、バックグラウンドで動作させてターミナルを占有しないようにします。

webサービスが作成・起動されていることを示す出力が表示されるはずです。

コンテナが実行中かどうかを確認するには、docker psコマンドを使用します。

docker ps

nginxイメージを使用したmy-docker-app-web-1(またはプロジェクトディレクトリ名に応じた類似名)という名前のコンテナが表示され、ステータスがUpになっているはずです。

また、curlを使用してポート 80 のlocalhostにアクセスすることで、Web サーバーがアクセス可能かどうかを確認できます。

curl http://localhost:80

ターミナルに Nginx のデフォルトウェルカムページの HTML 出力が表示されれば、Web サーバーが正常に動作してアクセス可能であることが確認できます。

作成済みコンテナで使用されているイメージを一覧表示

このステップでは、現在システム上にある Docker イメージ、特に先ほど作成したコンテナで使用されているイメージを一覧表示します。イメージの一覧表示にはdocker imagesコマンドを使用します。

以下のコマンドを実行して全てのイメージを一覧表示します。

docker images

REPOSITORYTAGIMAGE IDCREATEDSIZEといった情報を含むテーブルが表示されます。ここにnginxイメージが表示されているはずです。

この出力は、システム上に pull またはビルドされたイメージを表示します。nginxイメージは前のステップで pull され、現在実行中のコンテナで使用されています。

quiet オプションを使用してイメージ ID のみを一覧表示

このステップでは、docker imagesコマンドに quiet オプションを指定してイメージ ID のみを一覧表示する方法を学びます。これはスクリプト作成などの目的でイメージ ID のリストを取得する際に便利です。

quiet オプションは-qフラグで指定します。

以下のコマンドを実行してイメージ ID のみを一覧表示します。

docker images -q

イメージ ID が 1 行ずつ表示されるはずです。この出力はdocker imagesの完全な出力よりも簡潔です。

このオプションは、古いイメージを削除する場合など、プログラムでイメージリストを処理したい場合に特に有用です。

JSON 形式でイメージを一覧表示

このステップでは、Docker イメージを JSON 形式で一覧表示する方法を学びます。jqなどのツールを使ってプログラムで出力を解析したい場合に便利です。

docker imagesコマンドに--formatオプションを指定して出力形式を設定できます。JSON 形式で出力するにはjsonキーワードを使用します。

以下のコマンドを実行して JSON 形式でイメージを一覧表示します。

docker images --format json

イメージ情報が構造化された JSON 形式で表示されます。各イメージは JSON 配列内の JSON オブジェクトとして表現されます。

この形式は、JSON データを処理できるスクリプトやアプリケーションに Docker イメージ情報を統合するのに最適です。

このステップを完了したら、必要に応じて実行中のコンテナを停止し、プロジェクトディレクトリを削除できます。

コンテナを停止するには、~/project/my-docker-appディレクトリに戻って次のコマンドを実行します:

cd ~/project/my-docker-app
docker-compose down

このコマンドはdocker-compose upで作成されたコンテナ、ネットワーク、ボリュームを停止して削除します。

プロジェクトディレクトリを削除するにはrmコマンドを使用します:

cd ~/project
rm -rf my-docker-app

まとめ

この実験では、docker-compose.ymlファイルで定義されたサービスが使用するイメージを一覧表示するdocker compose imagesコマンドの使用方法を学びました。まず、nginxイメージを使用した Web サービスを定義するシンプルなdocker-compose.ymlファイルを準備し、Docker Compose のインストールと必要なファイル構造の作成を行いました。

その後、docker-compose.ymlファイルで定義されたサービスを起動しました。最後に、作成されたコンテナが使用するイメージを一覧表示するさまざまな方法を確認しました。これには、すべてのイメージ詳細を表示する方法、quiet オプションを使用してイメージ ID のみを表示する方法、JSON 形式でイメージを表示する方法が含まれます。