如果我使用docker exec
启动shell,
docker exec -ti <CONTAINER> /bin/bash
我可以使用Ctrl + p Ctrl + q来分离此shell进程。然后这个shell仍然在容器内部运行,但是如何重新连接到那个特定的shell(由docker exec
启动而不是docker run
)?
答案 0 :(得分:4)
已经提出了一种解决方法,以处理您通过ssh
访问某个方框并在远程方框上运行docker exec
的情况(或者,对于您的终端的情况)模拟器不稳定并且可能会崩溃):Always run your docker exec
commands inside screen
or tmux
.如果您这样做,每当您从screen
/ tmux
会话中分离时,您可以稍后重新附加它并仍然具有您的docker exec
命令可访问。 (这与suggested by @vodolaz095略有不同,因为它涉及在容器外部运行screen
或tmux
,使其适合与容器一起使用#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实例多次附加和分离