Docker:重新连接到“docker exec”进程

时间:2016-01-28 18:27:33

标签: docker

如果我使用docker exec启动shell,

docker exec -ti <CONTAINER> /bin/bash

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

2 个答案:

答案 0 :(得分:4)

可悲的是,这还不可能;见this issue on GitHub。我也想要这个功能,但目前似乎没有直接的方法可以做到这一点。

已经提出了一种解决方法,以处理您通过ssh访问某个方框并在远程方框上运行docker exec的情况(或者,对于您的终端的情况)模拟器不稳定并且可能会崩溃):Always run your docker exec commands inside screen or tmux.如果您这样做,每当您从screen / tmux会话中分离时,您可以稍后重新附加它并仍然具有您的docker exec命令可访问。 (这与suggested by @vodolaz095略有不同,因为它涉及在容器外部运行screentmux ,使其适合与容器一起使用#39;运行screen / tmux作为主要流程)

答案 1 :(得分:3)

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

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

运行容器(进程)

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

然后

docker attach <CONTAINER>

分离 Ctrl + p + Ctrl + q

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