docker run 或 exec 時 -i -t 的分別

一般通常一起用 -it,那 -i -t 有什麼不同呢?

說明是寫:

-i, –interactive
Keep STDIN open even if not attached

-t, –tty
Allocate a pseudo-TTY

可以簡單理解成,-i 可以持續下指令和得到結果,若是人類要互動用的就加 -t,會有命令提示字元,方便人類使用

只下 -i

docker run -i busybox
ls
bin
dev
etc
home
proc
root
sys
tmp
usr
var
cd etc
ls
group
hostname
hosts
localtime
mtab
network
passwd
resolv.conf
shadow

輸入和輸出會混在一起,人類不方便看,但對程式或做 pipeline 會方便,例如: echo hello | docker run -i busybox cat

只加 -t 則沒什麼意義,因為看到命令提示字元,但輸入指令,不會送進去 container 也不會有結果出來

docker run -t busybox
/ # ls

另外看到網路上有文件示範 -idt,則是腦殘,都要 detach 模式到背景執行了,還 it 幹嘛

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *