Dockerは、開発や本番環境でコンテナを管理するための非常に便利なツールです。その中でも、現在動作しているコンテナの情報を確認するための基本中の基本となるのが「docker ps
」コマンドです。この記事では、docker ps
の基本的な使い方から、便利なオプション、よくあるトラブルとその解決方法まで丁寧に解説します。Dockerを学び始めたばかりの方も、すでに使っている方も、あらためてコマンドの使い方を確認しておきましょう。
「docker ps
」は、現在実行中のDockerコンテナの一覧を表示するためのコマンドです。LinuxやMac、WindowsのDocker環境でも共通して使えるコマンドで、今どのコンテナが動いているのかを確認したいときに最も使われる基本コマンドの一つです。
たとえば、以下のようなコマンドをターミナルに入力します。
docker ps
これにより、以下のような出力が得られます。
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c1a2b3d4e5f6 nginx:latest "/docker-entrypoint.…" 10 minutes ago Up 10 minutes 0.0.0.0:80->80/tcp web_server
出力結果には以下の情報が表示されます。
これだけで、今何が動いていて、どのポートで公開されているかまでがひと目で分かります。
docker ps
は**「実行中のコンテナのみ」**を表示しますが、停止済みのコンテナも含めてすべてを表示したい場合は、-a
オプションを付けます。
docker ps -a
このコマンドを使うことで、すでに終了したコンテナや、エラーで停止したコンテナなども含めて一覧表示されます。
実行例:
CONTAINER ID IMAGE COMMAND STATUS NAMES
a1b2c3d4e5f6 ubuntu "/bin/bash" Exited (0) 3 hours ago test_container
c1a2b3d4e5f6 nginx:latest "/docker-entrypoint.…" Up 2 hours web_server
このように、ステータス欄で「Exited」などが表示されていれば、それはすでに停止しているコンテナです。
docker ps
は、さまざまなオプションと組み合わせることで、より柔軟な表示が可能になります。代表的なオプションをいくつかご紹介します。
docker ps --format "{{.ID}}: {{.Names}}"
このように書くと、IDとコンテナ名だけが表示されます。スクリプトで使うときや、特定の情報だけを抽出したいときに便利です。
実行中のnginxコンテナだけを表示したい場合:
docker ps --filter "ancestor=nginx"
あるいは、特定の名前を含むコンテナだけを見たい場合:
docker ps --filter "name=web"
このように、柔軟にフィルターをかけることで必要な情報だけを取得できます。
docker ps
で表示されたコンテナIDは、他のDockerコマンドと組み合わせて使う場面が多くあります。
たとえば:
docker exec -it <CONTAINER_ID> /bin/bash
docker stop <CONTAINER_ID>
docker rm <CONTAINER_ID>
IDの先頭数文字(ユニークであれば)だけでも十分に使えるため、コピー&ペーストで操作を素早く行える点も便利です。
「コンテナを起動したのにdocker ps
で表示されない」という場合、実はすでにコンテナが終了してしまっていることがあります。そのようなときはdocker ps -a
で確認しましょう。
表示項目が多くて横に長くなってしまうこともあります。そんなときは、--format
オプションを使って必要な情報だけに絞るのがコツです。
実は、docker ps
とdocker container ls
はほぼ同義で、出力結果にも違いはありません。どちらも現在実行中のコンテナを表示します。好みに応じてどちらを使っても問題ありません。
例:
docker container ls
ただし、docker container
というサブコマンドは、新しいDockerのCLI設計に従った書き方のため、今後の学習や他のサブコマンドとの一貫性を保ちたい方にはこちらがおすすめです。
たとえば、開発環境でWebサーバーとデータベースサーバーを同時にコンテナで立ち上げている場合、それぞれが正しく動作しているかどうかを確認する際にdocker ps
が大活躍します。
docker ps
結果:
c123456789ab nginx:latest "nginx -g 'daemon of…" Up 1 hour 0.0.0.0:8080->80/tcp web_server
d23456789abc mysql:5.7 "docker-entrypoint.s…" Up 1 hour 3306/tcp db_server
このように、WebアプリとDBが問題なく立ち上がっていることを確認できます。
docker ps
は、Dockerで作業する上で基本中の基本のコマンドです。コンテナの状態を素早く確認できるため、トラブルシューティングや管理作業の第一歩として重宝されます。
docker ps
docker ps -a
--filter
--format
Docker操作に慣れる第一歩として、docker ps
をマスターすることはとても大切です。ぜひ日常の作業に役立ててください!