2016/10/18 21:02:09

docker psでコンテナリストを表示・取得する

dokcer
目次(クリックするとジャンプします)
  • 1:コンテナリストの表示・取得
  • 2:デフォルトの表示
  • 3:最後に起動したコンテナを表示する
  • 4:最後に起動したコンテナから数えてn個のコンテナを表示する
  • 5:すべてのコンテナを表示する
  • 6:起動中のコンテナの省略IDを表示する
  • 7:情報をフル表示させる
  • 8:サイズを確認する
  • 9:フィルタリングする
  • 9.1:名前でフィルタリング
  • 9.2:IDでフィルタリング
  • 9.3:状態でフィルタリング
  • 9.3.1:running
  • 9.3.2:paused
  • 9.4:指定したイメージから作られたコンテナを表示する
  • 9.4.1:イメージ名でフィルタリング
  • 9.4.2:イメージIDでフィルタリング
  • 10:テンプレートを使って表示する
  • 10.1:IDと状態で表示
  • 10.2:区切り文字で整形してみる
  • 10.3:テーブル形式で整形してみる
  • 11:おまけ
  • 11.1:コンテナに一気に処理を行う
  • 11.2:フィルタと組み合わせる
  • 12:後記

コンテナリストの表示・取得

docker psはコンテナリストを表示するコマンドです。

現在起動または存在しているコンテナをpsコマンドのようにリストにしてくれます。調べてみると結構いろんな表示の仕方ができるようで、まとめてみました。

シェルスクリプト等と組み合わせることが結構あるので、しっかり覚えておきたいと思います。

デフォルトの表示

オプション無しの場合は「現在起動しているコンテナ」を表示してくれます。

$ docker ps

CONTAINER ID        IMAGE               COMMAND                            CREATED             STATUS              PORTS   NAMES
4deb6920a8d4        wordpress           "/entrypoint.sh apach"   7 days ago          Up 11 minutes    0.0.0.0:8099->80/tcp   wps
2f531d2c033b        mysql               "/entrypoint.sh mysql"   10 days ago         Up 11 minutes       3306/tcp               db

各項目の意味は以下の様になります。

項目 意味
CONTAINER ID コンテナIDの最初の12桁
IMAGE コンテナの元イメージ
COMMAND 起動時に与えられたコマンド
CREATED コンテナの作成日からの経過
STATUS 起動してからの経過・または停止してからの経過
PORTS バインドしているポート
NAMES コンテナの名前

最後に起動したコンテナを表示する

-lオプションをつけた場合には「最後に起動したコンテナ」を表示してくれます。

$ docker ps -l

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
d7f37176aa03        busybox             "sh"                7 minutes ago       Exited (0) 7 minutes ago                       grave_wozniak

最後に起動したコンテナから数えてn個のコンテナを表示する

-nオプションをつけた場合には「最後に起動したコンテナから指定数分のコンテナ」を表示してくれます。

この場合は2つ。

$ docker ps -n=2

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                      PORTS               NAMES
d7f37176aa03        busybox             "sh"                     19 minutes ago      Exited (0) 19 minutes ago                       grave_wozniak
8a18883e78a5        mysql               "/entrypoint.sh mysql"   3 days ago          Exited (0) 2 days ago                           testdb

すべてのコンテナを表示する

-a、--allオプションをつけた場合は「すべてのコンテナ」を表示してくれます。

$ docker ps -a

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                  NAMES
d7f37176aa03        busybox             "sh"                     9 minutes ago       Exited (0) 9 minutes ago                          grave_wozniak
8a18883e78a5        mysql               "/entrypoint.sh mysql"   3 days ago          Exited (0) 2 days ago                             testdb
649ffa5ac962        peco/testunit       "/bin/bash /app"         3 days ago          Exited (126) 3 days ago                           furious_fermi
4deb6920a8d4        wordpress           "/entrypoint.sh apach"   7 days ago          Up 21 minutes              0.0.0.0:8099->80/tcp   wps
6c6aece1d119        busybox             "sh"                     7 days ago          Created                                           unskilleds
68ff33192210        wordpress           "/entrypoint.sh apach"   10 days ago         Exited (0) 7 days ago                             wp
2f531d2c033b        mysql               "/entrypoint.sh mysql"   10 days ago         Up 21 minutes              3306/tcp               db
0458141158a7        busybox             "sh"                     10 days ago         Created                                           unskilled
eaea95226b5d        busybox             "sh"                     2 weeks ago         Created                                           dc02
508f42b2ba6b        busybox             "sh"                     2 weeks ago         Exited (0) 2 weeks ago                            dc01

起動中のコンテナの省略IDを表示する

-q、--quietオプションをつけた場合は「起動しているコンテナのIDのみ」を表示してくれます。表示されるIDは省略IDです。

$ docker ps -q

4deb6920a8d4
2f531d2c033b

情報をフル表示させる

--no-truncオプションをつけた場合には「情報を省略しないで」表示してくれます。IDはフルIDとなります。

$ docker ps --no-trunc

CONTAINER ID                                                       IMAGE               COMMAND                               CREATED             STATUS              PORTS                  NAMES
4deb6920a8d493205f6a9ce3a2d03072319ae736018c1b0d6c0aeb63bbffa51e   wordpress           "/entrypoint.sh apache2-foreground"   7 days ago          Up 36 minutes       0.0.0.0:8099->80/tcp   wps
2f531d2c033bb06307e5ed84a691b10b9e23959dff62804f7284128a9eb46b09   mysql               "/entrypoint.sh mysqld"               10 days ago         Up 36 minutes       3306/tcp               db,wp/mysql,wps/mysql

サイズを確認する

-s、--sizeオプションをつけた場合には「コンテナのサイズ」を表示してくれます。

例ではSIZE2B4Bと表示されていますが、2バイト、4バイトという意味です。

容量がかなり少ない様に思えますが、これはイメージ (virtualで表示されている)との差分容量のようです。コンテナの中でファイルを作ったり、アプリケーションをインストールするなどすると直ぐに増えるかと思います。

$ docker ps -s

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES               SIZE
4deb6920a8d4        wordpress           "/entrypoint.sh apach"   7 days ago          Up 41 minutes       0.0.0.0:8099->80/tcp   wps                 2 B (virtual 510.8 MB)
2f531d2c033b        mysql               "/entrypoint.sh mysql"   10 days ago         Up 41 minutes       3306/tcp               db                  4 B (virtual 358.5 MB)

フィルタリングする

-f--filterオプションはフィルタリングです。

単一のフィルタの場合は以下のようなります。

--filter key=value

複数のフィルタの場合は以下の様にオプションを並べます。

--filter key=value --filter key=value --filter key=value

フィルタに使えるkeyは以下です。

Key 意味
id コンテナのID
name コンテナの名前
label コンテナのLabel
status コンテナの状態
exited 終了コード
ancestor 祖先(イメージ)
since 指定したIDまたは名前がついたコンテナ以降のコンテナ
before 指定したIDまたは名前がついたコンテナ以前のコンテナ

名前でフィルタリング

$ docker ps --f name=db

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2f531d2c033b        mysql               "/entrypoint.sh mysql"   10 days ago         Up About an hour    3306/tcp            db

IDでフィルタリング

$ docker ps -f id=4deb6920a8d4

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
4deb6920a8d4        wordpress           "/entrypoint.sh apach"   8 days ago          Up About an hour    0.0.0.0:8099->80/tcp   wps

状態でフィルタリング

状態でフィルタリングするときに使えるvalueは以下です。

状態 意味
created 作られただけで起動されてないコンテナ
restarting 再起動したコンテナ
running 起動中のコンテナ
paused 一時停止中のコンテナ
exited 停止中のコンテナ
dead 異常終了した(落ちた)コンテナ

running

runningでは起動中のコンテナを表示できます。

$ docker ps -f status=running

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
4deb6920a8d4        wordpress           "/entrypoint.sh apach"   8 days ago          Up About an hour    0.0.0.0:8099->80/tcp   wps
2f531d2c033b        mysql               "/entrypoint.sh mysql"   10 days ago         Up 41 seconds       3306/tcp               db

paused

pausedではpauseコマンドで一時停止中のコンテナを表示できます。

$ docker run -i -t -d  --name test busybox
$ docker pause test
$ docker ps -f status=paused

CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
ac0e10831d45        busybox             "sh"                36 seconds ago      Up 35 seconds (Paused)                       test

指定したイメージから作られたコンテナを表示する

ancestorでは指定したイメージから作られたコンテナを表示することができます。

指定にはimageimage:tagimage:tag@digest省略IDフルIDが使えます。

イメージ名でフィルタリング

$ docker ps -f ancestor=wordpress

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
4deb6920a8d4        wordpress           "/entrypoint.sh apach"   8 days ago          Up 2 hours          0.0.0.0:8099->80/tcp   wps

イメージIDでフィルタリング

$docker ps -f ancestor=f2c489928dc3

CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                  NAMES
4deb6920a8d4        wordpress           "/entrypoint.sh apach"   8 days ago          Up 2 hours          0.0.0.0:8099->80/tcp   wps

テンプレートを使って表示する

docker psではテンプレートをつかって表示を整形することができます。

プレースホルダ 意味
.ID コンテナID
.Image イメージID
.Command コマンド
.CreatedAt コンテナが作成された日時
.RunningFor コンテナが起動してからの経過時間
.Ports バインドしているポート
.Status コンテナの状態
.Names コンテナの名前
.Labels コンテナに割り当てられたすべてのラベル
.Label 特定のラベル

IDと状態で表示

デフォルトでは項目名は出力されないようです。

$ docker ps --format "{{.ID}} {{.Status}}"

b14e79aed553 Up 36 minutes
ac0e10831d45 Up 44 minutes (Paused)
8a18883e78a5 Up 39 minutes
4deb6920a8d4 Up 2 hours
2f531d2c033b Up 49 minutes

区切り文字で整形してみる

項目の区切り文字を指定することができます。

$ docker ps --format "{{.ID}} | {{.Status}}"

b14e79aed553 | Up 38 minutes
ac0e10831d45 | Up 46 minutes (Paused)
8a18883e78a5 | Up 41 minutes
4deb6920a8d4 | Up 2 hours
2f531d2c033b | Up 50 minutes

テーブル形式で整形してみる

tabletをつかってきっちり整形することができます。tableにすると項目名が出力されます。tは項目名と項目の頭を揃えてくれます。

$ docker ps --format "table {{.ID}}t{{.Status}}"

CONTAINER ID        STATUS
b14e79aed553        Up 40 minutes
ac0e10831d45        Up 48 minutes (Paused)
8a18883e78a5        Up 43 minutes
4deb6920a8d4        Up 2 hours
2f531d2c033b        Up 52 minutes

おまけ

-qオプションがIDしか表示しないので結構便利だったりします。-qオプションをつけた場合にはこんな感じでIDを取得することができます。配列的な感じでしょうか?

$ conid=$(docker ps -q)
$ echo $conid
b14e79aed553 ac0e10831d45 8a18883e78a5 4deb6920a8d4 2f531d2c033b

コンテナに一気に処理を行う

一気にコンテナを削除したい場合には以下の様にすると便利デス。(停止中のコンテナ全部消えるので注意)

$ docker rm $(docker ps -q)

フィルタと組み合わせる

-fオプションと組み合わせると特定のコンテナに絞って削除することもできます。例ではwordpressイメージから作ったコンテナを削除しマス。

$ docker rm $(docker ps -q -f ancestor=wordpress)

後記

docker psのまとめをしてみました。結構いろんなオプションがあり、いろんな表示のさせ方ができるものだなと思いました。