Docker で停止しているコンテナーのみを一覧表示する
- Docker Hub から Nginx イメージをプルする
- Docker イメージを一覧表示する
- Nginx イメージからコンテナーを実行する
- 実行中のコンテナを一覧表示する
- 実行中のコンテナを停止する
-
docker ps
コマンドを使用して、停止したコンテナーを一覧表示する -
docker container ls
コマンドを使用して、停止したコンテナーを一覧表示する - まとめ
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
フラグがあり、特定の条件に基づいてコンテナーをフィルタリングするためのキーと値のペアを受け入れます。
David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.
LinkedIn GitHub