如果我docker exec用来点燃一个shell,
docker exec -ti <CONTAINER> /bin/bash
Run Code Online (Sandbox Code Playgroud)
我可以使用Ctrl + p Ctrl + q来分离这个shell进程.然后这个shell仍然在容器内部运行,但是我怎样才能重新连接到那个特定的shell(开头的那个docker exec,不是docker run)?
可悲的是,这还不可能。在GitHub上看到这个问题。我也想要此功能,但目前看来尚无直接方法。
提出了一种解决方法,以解决您通过远程盒子访问ssh并docker exec在其上运行盒子的情况(或者,对于您的终端仿真器不稳定并且可能崩溃的情况):始终在docker exec内部运行命令screen或tmux。如果这样做,无论何时与screen/ tmux会话分离,都可以稍后重新连接到该会话,并且仍然可以docker exec访问命令。(这与@ vodolaz095的建议有所不同,因为它涉及在容器中运行screen或在容器tmux 外部运行,使其适用于不运行容器screen/ tmux作为其主要过程的容器)
docker exec 专门用于在已启动的容器中运行新事物,无论是外壳还是其他进程。
docker attach 用于附加到正在运行的进程,因此您只能使用一个shell实例。
运行容器(过程)
docker run -tid --name <CONTAINER> <IMAGE>:<TAG> bin/bash
Run Code Online (Sandbox Code Playgroud)
然后
docker attach <CONTAINER>
Run Code Online (Sandbox Code Playgroud)
为了分离Ctrl+ p+ Ctrl+q
这样,您可以仅使用一个shell实例多次附加和分离
| 归档时间: |
|
| 查看次数: |
1397 次 |
| 最近记录: |