12億円ほしい人のブログ

メガBIG当たらないかな

docker container run ubuntuで直ちに終了する理由について

Dockerの学習にてUbuntuコンテナを起動する機会があり、そのときのメモです。

概要

docker container run ubuntuUbuntuコンテナを起動する際に、-itオプションを付けないと、なぜ、コンテナが起動して直ちに終了するのか。

疑問

上記runコマンドでは、起動後のコマンドを指定しない場合はDockerイメージに定義されたデフォルトコマンドが、コンテナ起動後に実行される。
Ubuntuイメージのデフォルトコマンドは、/bin/bash
ということは、Bashシェルが起動してコンテナはその状態でUpのままになるのでは?

調査結果

runコマンドに-itオプションがない場合、バックグラウンドでの実行となるが、この場合標準入力が有効になっていない(?)ことになるらしい。
その場合、/bin/bashBashシェルが起動するものの、直ちに終了する仕様らしい。
そのため、上記コマンドではコンテナが起動して直ちに終了するみたい。

備考

runコマンドの末尾にコマンドを続けると、デフォルトコマンドの代わりにそのコマンドが実行される。
例えば、pwdを続けると、カレントディレクトリが出力される。(コンテナ自体はその後直ちに終了する。)
pwdは、Unix系シェルのコマンドであるが、これが使用できるということは、すなわちUbuntuの場合はBashシェルが起動しているということを意味する。
ということは、Ubuntuコンテナを起動するとBashシェルが自動で起動するようになっているということかも。(調べてないが)