容器退出后如何退出docker exec?

容器退出后如何退出docker exec?

docker exec -ti当我连接的 docker 退出后,如何使用 正常退出我所连接的 docker 容器?

如果我退出原始容器,运行该命令的 shelldocker exec就会被挂起,而我能找到的退出回其 shell 的唯一方法是docker exec从另一个终端终止该命令。

有没有更优雅的方式?

无论我是否启动容器,都会发生这种情况--rm

我在 Ubuntu 20.04 中的 gnome-terminal 3.26.3 中的 bash 5.0.16 下运行 docker 19.03.12。

答案1

要在不退出 shell 的情况下断开 tty,请使用转义序列CTRL+ ,P然后使用CTRL+ Q。更多详细信息这里

来自此来源的附加信息:

docker run -t -i → 可以使用Ctrl+ P& Ctrl+ Qsequece 分离并使用 docker connect 重新连接

Ctrldocker run -i → 无法与+ P& Ctrl+Q序列分离;会破坏标准输入

Ctrldocker run → 无法使用+ P& Ctrl+分离Q;可以 SIGKILL 客户端;可以使用 docker append 重新连接

希望这可以帮助。

答案2

首先使用以下命令运行容器分离的模式,不是前台:

docker run --name mynginx -p 80:80 -d nginx

然后你可以用docker 执行

docker exec -it mynginx /bin/sh

请记住,如果您想要连接到容器进行检查,则必须指定--interactive , -i--tty , -t选项,因为您的容器已经在您之前的docker run -d命令中在后台运行主进程。这样,当您完成检查容器时,您可以使用或命令
正常退出,就像退出普通 shell 一样ctrl+dlogout

答案3

@Khushal 给了我答案……差不多。就我而言,即使使用调用, Ctrl+ P& Ctrl+Q 仍然不起作用,但普通的+却可以。为了提供一些背景信息,我正在使用 Rancher docker 容器,因此 YMMV。run-tCtrlC

总而言之,使用以下命令创建容器: docker run -t -d --name=thingy ...

照常附加: docker attach thingy

采用传统方式Ctrl+分离C

顺便说一句,-t根据文档,分配一个伪TTY。

相关内容