【问题标题】:wouldn't specifying -t with -i be redundant for docker run?对于 docker run 指定 -t 和 -i 不会是多余的吗?
【发布时间】:2017-08-15 12:19:31
【问题描述】:

这篇文章充实了大部分内容:Confused about Docker -t option to Allocate a pseudo-TTY

但是如果“-i”给了我一个标准输入流并且-t给了我一个完整的终端驱动程序,如果我一起使用它们,-i 不是多余的吗?还是仅使用 -t 我可以 only 通过 ssh 访问它,但如果我添加 -i 我也可以直接从控制台输入管道?

【问题讨论】:

    标签: linux docker containers


    【解决方案1】:

    我记得不久前在文档中读到过它。我看了看,发现:

    对于交互式进程(如shell),必须一起使用-i -t 为了给容器进程分配一个tty。 -i -t 通常是 写成 -it,你会在后面的例子中看到。指定 -t 是 当客户端从管道接收其标准输入时被禁止, 如:

    documentation。我经常使用--ti 并且总是将其写为ti,我想这就是谷歌搜索产生很少结果的原因。文档多次提到it,但一次没有提到ti


    事物的技术方面

    OP让我更详细一点,所以这里是......

    -i 标志表示“交互式”(也可以用 --interactive 替换)。这基本上意味着即使没有任何事情要做,shell 也会保持打开状态。 (例如等待用户输入)。

    交互式 shell 的一个示例是标准终端窗口/命令提示符。它将保持打开状态并等待您的输入(例如交互),在收到输入后它会执行任务。

    非交互式 shell 的一个例子是一个简单的 bash 脚本。该脚本将运行,但不会提供与 shell 的任何交互。 (尽管可以使用 read 语句模拟交互式 shell。

    因此指定 -t 而不指定 -i 意味着 tty 将立即解散,因为它实际上不会“运行”任何东西,并且由于您没有以交互方式启动它,因此它不会等待您的输入。

    更多关于交互式与非交互式的信息可以在here找到。

    【讨论】:

    • 我想这证实了我的想法,但太糟糕了,我认为没有更底层的解释可以提高我对 docker 本身的理解。
    • 稍后再回来查看 ;)
    • ok @red888,你现在可以回来查看:P 我添加了解释 :)
    猜你喜欢
    • 1970-01-01
    • 2016-11-09
    • 2019-04-30
    • 1970-01-01
    • 1970-01-01
    • 2015-05-23
    • 2016-06-03
    • 1970-01-01
    • 2021-06-29
    相关资源
    最近更新 更多