Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/docker/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么要用-t运行Docker容器?_Docker_Terminal - Fatal编程技术网

为什么要用-t运行Docker容器?

为什么要用-t运行Docker容器?,docker,terminal,Docker,Terminal,Docker Run参考说明使用-t -t:分配一个伪tty 但是,只有使用-i运行它,用户才能通过终端与集装箱化进程进行交互。因此,我想知道“分配伪tty”的含义是什么,因为即使在没有-t的情况下运行,进程写入STDOUT的内容也会传递到终端(进程将有一个管道作为STDOUT而不是tty) 我读到,你可以运行docker run-t来获得“终端支持”,比如文本着色等。我已经做了以下实验: // Dockerfile FROM ubuntu:latest CMD ["echo&qu

Docker Run参考说明使用
-t

-t:分配一个伪tty

但是,只有使用
-i
运行它,用户才能通过终端与集装箱化进程进行交互。因此,我想知道“分配伪tty”的含义是什么,因为即使在没有
-t
的情况下运行,进程写入
STDOUT
的内容也会传递到终端(进程将有一个管道作为STDOUT而不是tty)

我读到,你可以运行
docker run-t
来获得“终端支持”,比如文本着色等。我已经做了以下实验:

// Dockerfile

FROM ubuntu:latest

CMD ["echo", "-e", "\u001b[31mHello World"]

并在没有
-t
的情况下运行此图像。因为我在终端上运行它(
docker run
总是在某个终端上运行,不是吗?),我可以看到一个红色的“Hello World”。所以我仍然不明白为什么单独使用
-t
运行…

您的测试显示颜色代码仍然有效,但缺少的是,没有
-t
许多程序将停止尝试发送颜色代码

许多程序通过C或shell脚本检查它们是否连接到TTY。如果是这样的话,他们将启用诸如颜色和线条编辑等交互功能,使体验更加愉快


您可以通过Bash之类的shell和Vim之类的文本编辑器看到这一点。像ls、grep和git这样的程序有“自动”颜色模式,只交互使用ANSI颜色代码。如果您省略
-t
,它们将恢复为纯文本。

帮助的第二部分是否有帮助?请尝试
docker run-i--rm ubuntu bash
并注意到缺少提示。安装并尝试在该外壳中没有
-t
的情况下使用vim。按向上箭头返回上一个命令。这很有趣,谢谢!当您使用
-I
时,我可以看到使用
-t
的必要性,我的问题更多的是为什么在不使用
-I
时使用
-t
一些命令在创建其输出时会检查tty。例如,没有任何技术原因表明bash无法在没有tty的情况下输出提示,但他们会根据应用程序是否存在来检查和更改应用程序的行为。