我刚刚阅读了关于Docker的 THIS 文章,该文章介绍了如何将一个简单的应用程序停靠。执行以下命令:
$ docker run -t -i ubuntu:14.04 /bin/bash,
然后,给出以下解释:
这里我们再次指定了docker run命令并启动了一个 ubuntu:14.04图片。但是我们也传递了两个标志:-t和-i。该 -t标志在我们的新容器中分配一个伪tty或终端,-i标志允许我们通过抓取来建立一个交互式连接 容器(STDIN)中的标准。
我不明白的意思:
-i flag allows us to make an interactive connection by grabbing the standard in (STDIN)
谢谢。
答案 0 :(得分:11)
Docker的def __init__(self):
self.root = Tk()
self.title = Frame(self.root, width = 500, height = 35)
self.title.pack(side = TOP, expand = True)
self.frame = Frame(self.root, width = 574, height = 574)
self.frame.grid(columnspan = 30, rowspan = 31)
self.label = Label(self.title, width = 300, height = 30)
self.label.pack()
self.root.mainloop()
/ -i
允许您通过标准输入(“STDIN”)向容器发送命令,这意味着您可以“交互式”地将命令输入到由创建的伪tty /终端。 --interactive
开关。
答案 1 :(得分:8)
explained here -i
,--interactive
保持STDIN处于打开状态(即使未连接也是如此),如果您根本不想键入任何命令,则需要使用它。
这对管道很有帮助:
$ echo hello | docker run -i busybox cat
hello
含义:-i
does not always need -t (tty
),带有tty
being the text-terminal。
答案 2 :(得分:2)
来自docs:
对于交互式进程(如shell),必须同时使用
-i -t
为了为容器进程分配 tty 。-i -t
通常 就像在后面的示例中看到的那样,写成-it
。指定-t
为 客户端从管道接收其标准输入时禁止使用, 如:
$ echo test | docker run -i busybox cat
-t标志是Unix / Linux处理终端访问的方式。从历史上看,终端是硬线连接,带有真正的硬件。
但是,今天使用的是伪终端驱动程序。
-i
标志,您将获得一个 stdin (标准输入)流,该流接受文本作为输入。在没有-t
的情况下运行-i
意味着您将拥有终端,但是您的输入将不会连接到终端输入。