HKI*_*KIT 4 flags containers interactive docker
编辑:
有人标记了这个问题的重复项,但它根本没有解释底层机制。
但相比之下,这个堆栈溢出解决了我在 Case I 中的困惑,但没有解决 Case II。
我是 docker 的新手,我对 --interactive、--attach 标志的使用以及所涉及的概念感到困惑
我将在 docker hub 中使用busybox来展示我的困惑。
案例一:
当我使用以下命令运行容器时。docker run --interactive --tty busybox sh
根据该文档, --interactive 标志用于
即使未连接,也保持 STDIN 打开
我不明白即使不附着是什么意思,附着什么?
情况二:然后我退出容器并尝试使用
docker start --attach abdd796820b1.
终端似乎也接受输入,但是当我输入 ls 或 echo 时,它没有给出响应。
--attach 标志做了什么?
Rat*_*yya 10
您可以通过两种方式与正在运行的容器进行交互
--交互式标志
正如你提到的,它已经说过了
即使未连接,也保持 STDIN 打开
根据我的理解,这意味着它将从您的终端/控制台读取输入并对其做出反应或呈现输出。如果你跑docker run --tty alpine /bin/sh并且docker run --tty --interactive alpine /bin/sh. 一个人--interactive会对此做出反应。
附
附加到正在运行的进程
如果 docker 容器是使用/bin/bash命令启动的,则可以使用 Attach 访问它,如果没有,则需要执行命令以使用exec.
更深入:如果 docker 容器开始使用,/bin/bash那么它将成为 PID 1 的容器,并且attach命令会将您附加到 PID 1。
执行
创建新进程
如果你想在容器内创建一个新进程,而不是使用 exec,它就像exec用于在容器内执行apt-get命令而不附加到它或运行节点或 python 脚本。
例如:docker exec -it django-prod python migrate
请参阅此处-i用于交互式,-t用于--tty伪 TTY。交互式,以便您可以在该命令出现提示时输入。
| 归档时间: |
|
| 查看次数: |
16726 次 |
| 最近记录: |