Docker:重新连接到`docker exec`进程

如果我使用docker exec来启动一个shell,

docker exec -ti <CONTAINER> /bin/bash

我可以使用Ctrl + p Ctrl + q来分离这个shell进程。 然后这个shell仍然在容器内部运行,但是我怎样才能重新连接到那个特定的shell(由docker exec启动,而不是docker run )?


可悲的是,这还不可能; 在GitHub上看到这个问题。 我也想要这个功能,但目前看起来没有直接的方法来做到这一点。

已经提出了一个解决方法,以处理您通过ssh访问一个盒子并在远程盒子上运行docker exec的情况(或者,在终端模拟器不稳定并且可能会崩溃的情况下):始终运行您的docker exec命令在screentmux 。 如果你这样做,只要你从screen / tmux会话中分离出来,你可以在以后重新连接它,并且仍然可以访问你的docker exec命令。 (这与@ vodolaz095建议的有点不同,因为它涉及在容器外部运行screentmux ,使其适用于不运行screen / tmux作为其主流程的容器)


docker exec专门用于在已经启动的容器中运行新事物,无论是shell还是其他进程。

docker attach用于连接到正在运行的进程,因此您只能使用一个shell实例。

运行你的容器(进程)

docker run -tid --name <CONTAINER> <IMAGE>:<TAG> bin/bash

然后

docker attach <CONTAINER>

分离Ctrl + p + Ctrl + q

通过这种方式,您可以仅使用一个shell实例连接和分离多次

链接地址: http://www.djcxy.com/p/90093.html

上一篇: Docker: reattach to `docker exec` process

下一篇: Joda time: DateTimeComparator. What is similar in Java 8 Time Api?