答案来自这个问题 https://stackoverflow.com/questions/21928691/how-to-continue-a-docker-which-is-exited不工作。
docker 容器总是先于我退出attach
或不会接受-t
旗帜。我可以列出我尝试过的所有命令,但它是以下命令的组合start
exec
attach
与各种-it
旗帜和/bin/bash
.
如何将现有容器启动到 bash 中?为什么这么难?这是 Docker 的“不当”使用吗?
编辑:
我用以下命令创建了容器docker run ubuntu
。容器的相关信息:60b93bda690f ubuntu "/bin/bash" About an hour ago Exited (0) 50 minutes ago ecstatic_euclid
首先,容器不是虚拟机。容器是运行进程的隔离环境。容器的生命周期与其内部运行的进程绑定在一起。当进程退出时,容器也退出,隔离环境就没有了。 “附加到容器”或“进入容器”的含义实际上意味着你进入了容器的隔离环境。运行过程,所以如果你的进程已经退出,你的容器也已经退出,因此没有容器可供你使用attach
or enter
。所以命令docker attach
, docker exec
目标是running容器。
当您docker run
配置在一个Dockerfile
并内置到 docker 镜像中。拍摄图像ubuntu
举个例子,如果你运行docker inspect ubuntu
,您将在输出中找到以下配置:
"Cmd": ["/bin/bash"]
这意味着当您运行时该过程就开始了docker run ubuntu
is /bin/bash
,但是您没有处于交互模式,也没有为其分配 tty,因此进程立即退出,容器也退出。这就是为什么你没有办法再次进入容器的原因。
启动容器并输入bash
, 你试一试:
docker run -it ubuntu
然后你将被带入容器外壳。如果您打开另一个终端并docker ps
,你会发现容器正在运行,你可以docker attach
到它或docker exec -it <container_id> bash
再次输入。
您还可以参考这个链接 https://stackoverflow.com/a/43303258/1000254了解更多信息。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)