Docker中it的含义

我们经常使用docker exec -it。it参数的含义是什么呢?

我们看一下帮助:

docker exec --help
 -i, --interactive          Keep STDIN open even if not attached
      --privileged           Give extended privileges to the command
 -t, --tty                  Allocate a pseudo-TTY

-i表示保持STDIN打开,-t表示分配一个TTY

-i参数

我们经常听说标准输入STDIN和标准输出STDOUT。标准输入输出是个抽象的概念,Linux程序执行,都需要输入和输出,在现实生活中,输入和输出是五花八门的,程序输出可能是屏幕,可能是打印机,今天还有可能是输出到网络等等。为了让程序的设计变得简单 ,Linux把输入输出抽象化,利用Linux中stream和fd的概念,把标准输入定义为fd为0的流(stream)。把标准输出定义为fd为1的流(stream)。

有了标准输入输出,程序的工作就简单了,需要输入的时候,直接从STDIN读取,同理,输出直接写到STDOUT。而不用去担心输入和输出的具体物理形式:

Real Input-->STDINPUT-->Program-->STDOUTPUT-->Real output

在Docker中,当我们运行一个程序,比如运行sh程序:

docker run ubuntu sh

上述程序是马上退出的,因为docker运行程序的时候,默认只打开了程序的STDOUT, 而关闭了程序的STDIN。sh命令没有输入的话,马上就会退出的。

因此-i参数登场了,-i参数的作用,就是打开docker要执行程序中的STDIN。

# docker run -i ubuntu sh

ls
boot
dev
etc
home

上述命令加入了-i, 现在sh不会退出了,因为STDIN被打开,它就会一直等待输入。我们在上面例子中输入ls, 可以看到列出了ls的结果,如boot, dev, etc,home等

-t参数

如果你仔细观察-i参数的运行效果,你会发现它的输入和输出是光秃秃的 ,而我们常见的ls命令都是这个样子,有一串漂亮的提示符”~#”,输出也是整整齐齐的按行排列:

root@iZ8vb4hv9rh422360tk6dbZ:~# ls /
bin  boot  dev  etc  home  lib  lib32

而不是前面光秃秃的这样:

ls
boot
dev
etc
home

二者的区别在于,我们常见的ls,是在console控制台下执行的

console控制台,其本质是tty。前面我们提到,linux程序的输入是五花八门的,被抽象成为STDIN。在Linux的历史上,linux服务器从物理上是被设计为C/S模式的,后台一台机器装着操作系统,前台是各种输入终端,可以插到操作系统上,一个操作系统往往上插着多台输入终端,大家都可以同时实用该系统。

有一种常见的输入终端是teletypewriter,打字机,缩写就是tty,把tty往机器接口上一插,就可以开始操作Linux。估计是tty太普遍了,以至于成了个抽象概念,所有的终端,都叫做tty。甚至后来还发展出了软件tty,叫做虚拟TTY(pseudo-TTY)。今天大家登陆linux打开的一个个shell终端,其实就是pseudo tty。

简单的说,tty就是一个软件或者硬件的输入工具,用于连接到Linux系统。用户向linux系统发起指令,一般都需要tty,我们常见的console,就是软件tty

docker中-t参数,就是分配一个tty,-t 参数往往和-i参数一起使用,意思是给系统分配一个tty,并且打开程序的STDIN,把tty的输入结果传递给程序的STDIN

当然,-t参数也可以单独使用,这时候系统分配了一个终端,并不会退出。但由于没有打开程序的STDIN,程序是接受不到输入的

# docker run -t ubuntu sh
# ls

在这个例子中,我们打开tty。出现了提示符”#”,然后我们输入ls, 会发现sh没有任何反应,因为sh的STDIN是关闭的,它并没有接收到任何输入

仅仅使用-t的意义,可能就在于使系统不退出。比如我想sh程序后台执行,但是又不退出,就可以这样:

# docker run -td ubuntu sh

和-d结合使用,可以通过docker ps看到,sh并没有退出。这样我们就相当于后台运行了一个ubuntu虚拟机,可以登陆虚拟机执行各种操作

Ref



《 “Docker中it的含义” 》 有 6 条评论

  1. You are exposed to them by all types of electronic appliances clomid for women buy Brett tulHBtDcRl 6 4 2022

  2. levitra dulcolax pastillas dosis I wasn t bored so much as baffled cost cheap cytotec without insurance

  3. Nutr Neurosci 2009 Jun; 12 3 135 40 Willis et al Blueberry supplementation attenuates microglial activation in hippocampal intraocular grafts to aged hosts priligy 30mg price Serious Use Alternative 1 dronedarone will increase the level or effect of olaparib by affecting hepatic intestinal enzyme CYP3A4 metabolism

  4. Poor Chromium Standing May Contribute To Impaired Glucose Tolerance And Type 2 Diabetes Researchers Have Hypothesized That Chromium Supplements Enhance Lean Muscle Mass And Promote Fats Loss, But Research Results Have Been Equivocal Some Analysis Signifies That These Supplements May Also Scale Back Food Consumption, Hunger Ranges, And Fats ketogenic diet facts weight loss vibrating Cravings, Though Information On These Effects Are Sparse Caffeine Is A Methylxanthine That Stimulates The Central Nervous System, Heart, And Skeletal Muscle Tissue It Additionally Will Increase Gastric And Colonic Exercise And Acts As A ketogenic diet facts weight loss vibrating Diuretic Caffeine Has A Half Life Of About 6 Hours Blood Levels Increase Within 15 45 Minutes Of Consumption, And So They Peak At Around 60 Minutes priligy tablet I chugged water and grabbed another test strip

  5. 解释的非常好!感谢!

  6. 讲得太好了,看半天csdn上的复制粘贴过来的东西没看懂,你这一篇给我弄懂了!!!!

回复 how to get cytotec without rx 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

About Me

一位程序员,会弹吉他,喜欢读诗。
有一颗感恩的心,一位美丽的妻子,两个可爱的女儿
mail: geraldlee0825@gmail.com
github: https://github.com/lisuxiaoqi
medium: https://medium.com/@geraldlee0825