docker运行--interactive和--tty标志

问题描述 投票:0回答:1

编辑:

有人标记了this question的重复项,但根本没有解释其潜在机制。

但是相反,this stack overflow解决了我在案例I中的困惑,但不是案例II


[我是docker的新手,对--interactive,--attach标志以及所涉及的那些概念的使用感到困惑

我将在docker hub中使用busybox显示我的困惑。


案例I

当我使用以下命令运行容器时。 docker run --interactive --tty busybox sh

一个容器正在运行并接受输入enter image description here

根据document,-interactive标志用于

即使未连接,也请保持打开STDIN

我不理解即使不附加是什么,附加在什么内容上?


案例II:然后我退出容器并尝试使用启动它docker start --attach abdd796820b1

终端似乎也接受输入,但是当我键入ls或echo时,它不会给出响应。enter image description here--attach标志做了什么?

请帮助。

docker containers interactive flags
1个回答
0
投票

可以通过三种方式与正在运行的容器进行交互

  • 附加
  • exec

-交互式标志

您已经说过它已经说过

即使未连接,也请保持打开STDIN

据我所知,它将从终端/控制台读取输入,并对它做出反应或呈现输出。如果运行docker run --tty alpine /bin/shdocker run --tty --interactive alpine /bin/sh。具有--interactive的人将对此做出反应。

attach

附加到正在运行的进程

如果docker容器是使用/bin/bash命令启动的,则可以使用attach访问它,否则,您需要执行命令以使用exec在该容器内创建一个bash实例。

深入了解:如果使用/bin/bash启动Docker容器,则它将成为容器PID 1,并且attach命令将您附加到PID 1。

exec

创建新流程

[如果您想在容器内创建一个比exec更新的进程,则它像exec一样用于在容器内执行apt-get命令而不附加它或运行节点或python脚本。

例如:docker exec -it django-prod python migrate

请参见此处-i用于交互,-t用于伪TTY的--tty。交互式的,以便您可以输入此命令是否提示某些内容。

© www.soinside.com 2019 - 2024. All rights reserved.