在Docker 1.1.2(最新版本)中,从容器中分离而不停止容器的正确方法是什么?
例如,如果我试着:
Docker运行-i -t foo /bin/bash或 Docker附加foo(用于已经运行的容器)
两者都把我带到集装箱中的一个终端,我如何在不停止它的情况下退出集装箱的终端?
exit和CTR+C都停止容器。
在Docker 1.1.2(最新版本)中,从容器中分离而不停止容器的正确方法是什么?
例如,如果我试着:
Docker运行-i -t foo /bin/bash或 Docker附加foo(用于已经运行的容器)
两者都把我带到集装箱中的一个终端,我如何在不停止它的情况下退出集装箱的终端?
exit和CTR+C都停止容器。
当前回答
从交互式容器分离的默认方法是Ctrl+P Ctrl+Q,但是当运行新容器或使用——detach-keys标志附加到现有容器时,可以覆盖它。
其他回答
如果你在windows上使用docker,你可以使用组合'CTRL + D'
我认为Ashwin的答案是最正确的,我以前的答案如下。 我想在这里添加另一个选项,即如下所示运行容器
docker run -dti foo bash
然后可以进入容器并运行bash
docker exec -ti ID_of_foo bash
不需要安装sshd:)
在Docker容器中至少必须运行一个进程,然后只有容器将运行Docker映像(ubuntu,httd..等等,不管它是什么)在后台没有退出
例如,在ubuntu docker image中,
要创建一个带有分离模式的新容器(至少在进程上运行后台),
docker run -d -i -t f63181f19b2f /bin/bash
它将为这个映像(ubuntu)创建一个id为f63181f19b2f的新包含。容器将以分离模式运行(在后台运行),同时一个小进程tty bash shell将在后台运行。因此,容器将继续运行,直到bash shell进程被杀死。
若要附加到运行的后台容器,请使用
docker attach b1a0873a8647
如果您想从容器中分离而不退出(不杀死bash shell), 默认情况下,您可以使用ctrl-p,q。它将从容器中出来而不退出容器(运行后台。这意味着不杀死bash shell)。
您可以在附加到容器时传递自定义命令,
docker attach --detach-keys="ctrl-s" b1a0873a8647
这一次,ctrl-p,q转义序列不起作用。相反,ctrl-s将用于从容器中退出。您可以传递任何键,例如,(ctrl-*)
从交互式容器分离的默认方法是Ctrl+P Ctrl+Q,但是当运行新容器或使用——detach-keys标志附加到现有容器时,可以覆盖它。
如果你只想看到容器中运行的进程的输出,你可以做一个简单的docker container logs -f <容器id>。
使用-f标志可以实时跟踪和更新容器的输出。对于调试或监视非常有用。