web-dev-qa-db-ja.com

終了したドッカーコンテナの数値の終了ステータスを取得する方法

コンテナが終了すると、docker ps -aは終了コードを示します(スクロール

$ docker run ubuntu bash -c "exit 1"
CONTAINER ID   IMAGE    COMMAND              CREATED        STATUS                     PORTS                     NAMES
c2c769c4b9ef   ubuntu   "bash -c 'exit 1'"   6 seconds ago  Exited (1) 3 seconds ago                             happy_fermat

エラーが発生しやすいgrep- ingおよびcut- ingを使用せずに、プログラムで数値の終了コードを取得する方法

13
Adam Matan

使用する - docker inspect テンプレートあり:

$ docker inspect c2c769c4b9ef --format='{{.State.ExitCode}}'
1
21
Adam Matan

echoを使用できます:

$ docker run debian bash -c "exit 1"
$ echo $?
1

$ docker run debian bash -c "exit 0"
$ echo $?
0
8
noamt

exit status of docker run は、含まれるコマンドの終了ステータスです。ただし、Docker自体に問題がある場合(この場合、ステータスは125)、または含まれるコマンドは呼び出される(この場合、ステータスは126)または呼び出せない(この場合、ステータスは127)。

したがって、docker runを子プロセスとして実行すると、他の子プロセスの場合と同様に終了ステータスを取得できます。

  • waitpid() を使用して、CまたはC++プログラム、またはPOSIX APIへのアクセスを提供する他のプログラミング言語で。
  • シェル(実際にはbashを含むほとんどのUnixシェルを意味します)のようなPOSIXでは、特別な$?変数の直後にdocker runの完了。
  • Javaでは、docker runを実行するために使用したProcessの-​​ Process.exitValue() の値。

Docker APIを使用している場合、終了ステータスへのアクセスを提供する必要があります。

  • Java Spotify Docker client を使用して、ContainerExit.statusCode()によって返されるContainerExitオブジェクトのdocker.waitContainer()の値] 。
4
Raedwald