$ docker run --help | grep -e "-i," -e "-t,"
-i, --interactive Keep STDIN open even if not attached
-t, --tty Allocate a pseudo-TTY
・-iはアタッチされていなくても(コンテナの)標準入力を開いたままにしておく
・-tは擬似 TTY を割り当てる??
-itあり
cmdを/bin/bashで上書きしてbashを起動する。-itを付けるとコンテナの中に入っていbashを使って操作できる。
$ docker run -it --rm centos:centos8 /bin/bash
[root@fe990f80d393 /]# aa
bash: aa: command not found
[root@fe990f80d393 /]# echo hoge
hoge
[root@fe990f80d393 /]# exit
-itなし
コンテナが起動して直ぐに/bin/bashが終了し、--rmによってコンテナが削除される。
--rmなしでやるとコンテナが削除されず直ぐに停止したことがわかる。
$ docker run --rm centos:centos8 /bin/bash
$
$ docker run centos:centos8 /bin/bash
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
7a9cf7a97800 centos:centos8 "/bin/bash" 6 seconds ago Exited (0) 6 seconds ago admiring_goldstine
-tあり
-tを付けると擬似ttyが開きコンテナ内で操作できそうだけどコマンドを打っても応答がない。
exitも効かない。閉じれなくなる。
$ docker run --rm -t centos:centos8 /bin/bash
[root@bb3ad19806ed /]# echo hgoe
-iあり
実行すると応答が返ってこないように見える。
しかしコマンドを打つとレスポンスが返ってくるし、exitで抜けられる
$ docker run -i --rm centos:centos8 /bin/bash
echo hoge
hoge
echo hoge
hoge
exit
-iを付けることでコンテナの標準入力に入力できる。
-iと--rmと組み合わせると一回だけコンテナを起動して結果だけ受けとることができる。
$ echo "echo hoge" | docker run -i --rm centos:centos8 /bin/bash
hoge
$
まとめ
-t を付けると[root@bb3ad19806ed /]#
のようなプロンプトが表示される。
-i を付けるとコマンドを打った時にレスポンスが返ってくる。