2022
我们一起努力

Docker如何实现退出容器不关闭容器

Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器或Windows机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口(类似iPhone的app)。

在Docker中,当我们使用docker exec -it [container_name] /bin/bash命令进入一个正在运行的容器时,如果想要退出这个容器,我们通常会使用exit命令或者按Ctrl + D,这个操作会结束容器的进程,导致容器被停止,如何实现退出容器但不关闭容器呢?

实际上,Docker已经为我们提供了一种方式来实现这个需求,那就是使用docker exec -it -e TTY=off [container_name] /bin/bash命令,通过将TTY设置为off,我们可以避免为容器分配一个伪终端,这样当我们退出容器时,容器并不会被停止。

这种方式有一个限制,那就是我们无法在容器内部看到任何输出,因为TTY被关闭了,所以容器的标准输出和标准错误输出都无法被显示出来。

除了上述方法外,我们还可以使用docker attach命令来保持容器运行。docker attach命令可以让我们在不停止容器的情况下退出容器的shell,具体操作如下:

1、使用docker exec -it [container_name] /bin/bash命令进入容器。

2、在容器内部启动一个后台进程,sleep 10000

3、使用Ctrl + PCtrl + Q将容器的shell放到后台运行。

4、使用docker attach [container_name]命令连接到容器。

5、在容器内部执行你想要的操作。

6、当你退出容器的shell时,容器并不会被停止,因为后台进程仍然在运行。

需要注意的是,使用docker attach命令连接到容器时,如果容器内部有多个进程在运行,那么Docker可能会将你连接到错误的进程,为了避免这种情况,你可以在启动容器时使用--exec-opt native.cgroupdriver=systemd参数来让Docker使用systemd作为cgroup驱动器,这样就可以保证你连接到正确的进程。

Docker为我们提供了多种方式来实现退出容器但不关闭容器的需求,我们可以根据实际情况选择最适合自己的方式来使用。

赞(0)
文章名称:《Docker如何实现退出容器不关闭容器》
文章链接:https://www.fzvps.com/270638.html
本站文章来源于互联网,如有侵权,请联系管理删除,本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
图片版权归属各自创作者所有,图片水印出于防止被无耻之徒盗取劳动成果的目的。

评论 抢沙发

评论前必须登录!