HOWTO · Docker

Docker で停止しているコンテナーのみを一覧表示する

この記事では、Docker で停止されたコンテナーのみを一覧表示する方法を読者に説明します。

このページの内容

Docker は、イメージとコンテナーを管理するために使用できる便利なコマンドを提供しますが、一部のコマンドは明確ではありません。 たとえば、Docker コマンド docker ps を使用して、実行中のコンテナーのリストを表示したり、docker コマンド docker ps -a を使用して、停止中または実行中のすべてのコンテナーのリストを表示したりできます。

明白ではない機能の 1つは、停止したコンテナーのみのリストを表示することです。 このチュートリアルでは、Docker で停止しているコンテナーのみのリストを表示する方法を学習します。

Docker Hub から Nginx イメージをプルする

このチュートリアルでは、Nginx イメージを使用してコンテナーを実行し、これらのコンテナーを使用してこの記事の目的を達成します。

コンピューターでキーボード ショートカット ALT+F12 を使用して新しいターミナル ウィンドウを開き、次のコマンドを使用して docker hub から Nginx イメージを取得します。

~$ docker pull nginx

tag を指定していないため、このコマンドは Nginx の最新バージョンをプルします。 以下に示すように、端末ウィンドウでダウンロードの詳細を表示できます。

Using default tag: latest
latest: Pulling from library/nginx
e9995326b091: Pull complete
71689475aec2: Pull complete
f88a23025338: Pull complete
0df440342e26: Pull complete
eef26ceb3309: Pull complete
8e3ed6a9e43a: Pull complete
Digest: sha256:943c25b4b66b332184d5ba6bb18234273551593016c0e0ae906bab111548239f
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest

Docker イメージを一覧表示する

ダウンロードが完了したら、すべてのイメージを一覧表示する次のコマンドを使用して、Nginx イメージがダウンロードされたことを確認できます。

~$ docker image ls

以前に他のイメージがインストールされていた場合は、このコマンドを使用してすべて一覧表示されます。 この例では、このチュートリアルで使用した画像を表示して、画像がダウンロードされたことを確認しました。

画像の詳細は次のとおりです。

REPOSITORY                        TAG       IMAGE ID       CREATED       SIZE
nginx                             latest    76c69feac34e   2 days ago    142MB

Nginx イメージからコンテナーを実行する

テスト目的で、それぞれ container-one と container-two という名前の 2つのコンテナーのみを実行します。 同じターミナル ウィンドウで、次のコマンドを順番に実行して、nginx イメージを使用して 2つのコンテナーを実行します。

container-one の実行:

~$ docker run --name container-one -d -p 3000:80 nginx

出力:

9e70a29947c373df2abd4748271d252f297c6a06669f7cffb04fe95ee5fca671

container-two の実行:

~$ docker run --name container-two -d -p 5000:80 nginx

出力:

43cd017b94062e47c6c3f868ed74fb5ca7920522e870eceb58115e388e9d43a5

最初のコンテナは、ホストのポート 3000 を公開してコンテナのポート 80 をリッスンし、2 番目のコンテナはホストのポート 5000 を公開して、前のコンテナと同じポートをリッスンすることに注意してください。

実行中のコンテナを一覧表示する

前のセクションでは、container-one と container-two という名前の 2つのコンテナーを実行しました。 これらのコンテナーが実行されているかどうかを確認するには、実行中のすべてのコンテナーを一覧表示する次のコマンドを使用できます。

~$ docker ps

出力:

CONTAINER ID   IMAGE     COMMAND                  CREATED          STATUS          PORTS                  NAMES
43cd017b9406   nginx     "/docker-entrypoint.…"   4 minutes ago    Up 4 minutes    0.0.0.0:5000->80/tcp   container-two
9e70a29947c3   nginx     "/docker-entrypoint.…"   24 minutes ago   Up 24 minutes   0.0.0.0:3000->80/tcp   container-one

実行中のコンテナを停止する

停止したコンテナーを一覧表示する前に、コンテナーを停止する必要があります。次のコマンドを使用して、その名前を使用してコンテナーを停止できます。 複数のコンテナを自由に実行および停止できます。

~$ docker stop container-one

出力:

container-one

docker ps コマンドを実行すると、container-two のみが実行されていることがわかります。 次のセクションでは、このチュートリアルの主な目的である、停止したコンテナーのみを一覧表示する方法を学習します。

docker ps コマンドを使用して、停止したコンテナーを一覧表示する

docker ps コマンドには、条件に基づいてコンテナをフィルタリングするために指定できる --filter フラグがあります。 --filter フラグの値は、出力を提供するために使用される条件を想定しています。

同じターミナル ウィンドウで、次のコマンドを使用して、ステータスが exited のコンテナーをフィルター処理します。

~$ docker ps --filter "status=exited"

出力:

CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS                      PORTS                    NAMES
9e70a29947c3   nginx                   "/docker-entrypoint.…"   48 minutes ago   Exited (0) 18 minutes ago                            container-one

docker container ls コマンドを使用して、停止したコンテナーを一覧表示する

このコマンドの構文は、前の例と同じです。 docker container ls コマンドには、条件に基づいてコンテナーをフィルター処理するために指定できる --filter フラグがあります。 --filter フラグは同じなので、以下に示すように、exited のステータスのコンテナをフィルタリングする条件を指定するだけで済みます。

~$ docker container ls --filter "status=exited"

出力:

CONTAINER ID   IMAGE                   COMMAND                  CREATED          STATUS                      PORTS                    NAMES
9e70a29947c3   nginx                   "/docker-entrypoint.…"   48 minutes ago   Exited (0) 18 minutes ago                            container-one

--filter フラグは key-value ペアの形式で指定する必要があることに注意してください。複数のフィルターがある場合は、複数のフラグが指定されていることを確認してください。

このチュートリアルでは、status という名前のフィルターを使用して、ステータスに基づいてコンテナーをフィルター処理しました。 ただし、docker documentation には、コンテナをフィルタリングするために活用できる他の戦略が記載されています。

まとめ

このチュートリアルでは、Nginx コンテナーを利用して、Docker で停止したコンテナーのみを一覧表示する方法を学習しました。 これを行うための 2つのアプローチには、ps コマンドを使用して停止したコンテナーを一覧表示する方法と、container ls コマンドを使用して停止したコンテナーを一覧表示する方法が含まれます。

2つのコマンドには --filter フラグがあり、特定の条件に基づいてコンテナーをフィルタリングするためのキーと値のペアを受け入れます。