gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 08:51:27 25 4
gpt4 key购买 nike

编辑:

有人将 this question 标记为重复项, 但它根本没有解释底层机制。

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


我是 docker 的新手,我对 --interactive、--attach 标志的用法和涉及的那些概念感到困惑

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


案例一:

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

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

根据document , --interactive 标志用于

Keep STDIN open even if not attached

不明白even if not attached to是什么意思,attached to what?


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

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

请帮忙。

最佳答案

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

  • 附上
  • 执行

--交互式标志

正如你提到的那样

Keep STDIN open even if not attached

根据我的理解,这意味着它将从您的终端/控制台读取输入并使用react或向其呈现输出。如果您运行 docker run --tty alpine/bin/shdocker run --tty --interactive alpine/bin/sh。具有 --interactive 的将对其使用react。

附加

Attach to a running process

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

更深入:如果 docker 容器是使用 /bin/bash 启动的,那么它将成为容器 PID 1 并且 attach 命令将附加你到 PID 1。

执行

Creates new process

如果你想在容器内创建一个新的进程而不是 exec 它使用像 exec 用于在容器内执行 apt-get 命令而不附加到它或运行一个节点或 python 脚本。

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

请参阅此处 -i 用于交互,-t 用于 --tty,即伪 TTY。交互式,以便您可以在此命令提示时输入。

关于docker 使用 --interactive 和 --tty 标志运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59965032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com