标志 -i 和 -t 在 docker 运行方面是什么意思?



我对Docker和Unix/Linux世界都很陌生。我一直在使用 docker 来构建我的映像并启动一些容器,并且确实很好地理解了容器化的概念。但是,有时我确实看到有些人使用诸如以下的标志来启动容器:

docker run -i -t imagename

我试图理解它的价值,并在这里遇到了 docker 文档:https://docs.docker.com/v1.13/engine/reference/run/

它有一些非常晦涩的解释,比如

-i: Keep STDIN open even if not attached

-t: Allocate a pseudo-tty

这甚至意味着什么?

https://docs.docker.com/engine/reference/run/#foreground

-a=[] : 附加到STDINSTDOUT和/或STDERR
-t : 分配伪 tty
--sig-proxy=true: 将所有接收到的信号代理到进程(仅限非 TTY 模式(
-i : 即使未连接,也保持 STDIN 打开

如果不指定 -a,则 Docker 将同时附加到标准输出和标准输出。您可以指定要连接到三个标准流(STDIN、STDOUT、STDERR(中的哪一个,如下所示:

$ docker run -a stdin -a stdout -i -t ubuntu /bin/bash

对于交互式进程(如 shell(,必须一起使用 -i -t 才能为容器进程分配 tty。
-i -t 通常写为 -it,如后面的示例所示。
当客户端从管道接收其标准输入时,禁止指定 -t。

最新更新