事象
コンテナイメージを利用してコンテナをrunした際に即時でコンテナ終了がする。
原因
docker run -ti
でコンテナを作成していない
以下、補足です。
補足
dockerのマニュアルにもありますが、startは単にコンテナの起動でrunは新規コンテナの立ち上げです。
start : Start a container run : Run a command in a new container
つまり、コマンドの引数は圧倒的にrunが豊富です。
# man docker-run
runのオプションはアルファベット順の頭をいくつか挙げても以下で収まりませんが
attach,add-host,blkio-weight,blkio-weight-device,cap-add,cap-drop,cgroup-par‐ent,cidfile,cpu-count,cpu-percent,cpu-period...
その中でも必須級によく使うオプションは -t と -i です。
このオプションにより、stdinを接続したまま、つまりコンテナ内を操作できます。逆に、一度きりの実行であれば不要です。
-tiオプションを付けた場合
# docker run -ti ubuntu root@790db5d9f507:/# exit exit # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 790db5d9f507 ubuntu "/bin/bash" XX seconds ago Exited (0) XX seconds ago kind_feynman # docker start 790db5d9f507 790db5d9f507 # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 790db5d9f507 ubuntu "/bin/bash" XX seconds ago Up X second kind_feynman
STATUSがUpしています。
-tiオプションを付けない場合
# docker run ubuntu # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2b5746559edb ubuntu "/bin/bash" XX seconds ago Exited (0) XX seconds ago kind_clarke # docker start 2b5746559edb 2b5746559edb # docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 2b5746559edb ubuntu "/bin/bash" XX seconds ago Exited (0) XX seconds ago kind_feynman
STATUSがUpしていません。
コンテナを一度きりのコマンド発行ではなく、環境として利用したい場合はご注意ください。
以上、ご参考になれば幸いです。