docker container run ubuntuで直ちに終了する理由について
Dockerの学習にてUbuntuコンテナを起動する機会があり、そのときのメモです。
概要
docker container run ubuntu
でUbuntuコンテナを起動する際に、-it
オプションを付けないと、なぜ、コンテナが起動して直ちに終了するのか。
疑問
上記runコマンドでは、起動後のコマンドを指定しない場合はDockerイメージに定義されたデフォルトコマンドが、コンテナ起動後に実行される。
Ubuntuイメージのデフォルトコマンドは、/bin/bash
。
ということは、Bashシェルが起動してコンテナはその状態でUpのままになるのでは?
調査結果
runコマンドに-it
オプションがない場合、バックグラウンドでの実行となるが、この場合標準入力が有効になっていない(?)ことになるらしい。
その場合、/bin/bash
でBashシェルが起動するものの、直ちに終了する仕様らしい。
そのため、上記コマンドではコンテナが起動して直ちに終了するみたい。
備考
runコマンドの末尾にコマンドを続けると、デフォルトコマンドの代わりにそのコマンドが実行される。
例えば、pwd
を続けると、カレントディレクトリが出力される。(コンテナ自体はその後直ちに終了する。)
pwd
は、Unix系シェルのコマンドであるが、これが使用できるということは、すなわちUbuntuの場合はBashシェルが起動しているということを意味する。
ということは、Ubuntuコンテナを起動するとBashシェルが自動で起動するようになっているということかも。(調べてないが)