【问题标题】:What does "attach to standard streams" mean in docker?docker中的“附加到标准流”是什么意思?
【发布时间】:2017-06-15 17:21:15
【问题描述】:

我正在阅读run 命令的规范并查看以下内容:

-i : 即使没有附加,也保持 STDIN 打开

-a=[] : 附加到STDINSTDOUT 和/或STDERR

您可以指定要连接到三个标准流(STDIN、STDOUT、STDERR)中的哪一个

但我缺乏理解:“将容器连接到标准流”是什么意思? 有人可以解释一下吗? 例如-i 参数有什么作用?

【问题讨论】:

    标签: docker stdout


    【解决方案1】:

    嗯,STDIN(标准输入)、STDOUT(标准输出)、STDERR(标准错误)是三个标准流。

    通常,STDIN 表示键盘,STDOUT 和 STDERR 表示直接屏幕显示。

    因此,如果您想通过键盘为容器提供一些输入,则需要将其连接到 STDIN。如果你想让你的容器在屏幕上打印结果,你可能需要将它连接到 STDOUT 和 STDERR。

    否则,您的容器可以在后台运行。输入可能来自网络,输出可能存储在日志文件中。

    【讨论】:

    • 你能告诉我,“保持标准输入打开”是什么意思吗?在这种情况下“依附”是什么意思?为什么它会影响流 STDIN ?
    【解决方案2】:

    如果您想在正在运行的容器 tty 上执行任何命令,您需要为输入、输出或错误(STDIN、STDOUT、STDERR)附加标准流。

    因此,即使未附加流,您也可以使用 -i 命令保持 tty 的吸引力。

    或者可以直接使用 -it {running container id} /bin/bash 执行附加

    【讨论】:

    • 但这对can keep the tty intractive .. if stream is not attached 的人们意味着什么,当 tty 是交互式的并且没有附加流时,我该怎么办?当 tty 是交互式的并且流 已附加 时会发生什么变化? tty 交互方式 - 我可以通过exec 将命令传递给容器,它会被重定向到容器 tty?
    • yuppp,你是对的.... tty 交互方式 - 我可以通过 exec 将命令传递给容器,它将被重定向到容器 tty。它使 tty 保持交互,因此您可以传递多个命令并在容器的 tty 上执行它。
    猜你喜欢
    • 1970-01-01
    • 2016-09-08
    • 1970-01-01
    • 2018-12-17
    • 2012-05-20
    • 2014-02-07
    • 2014-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多