使用 Docker 在后台连续运行容器
Docker在后台执行时会自动退出一个容器; 但是,在某些情况下,我们需要确保尽管进程已完成,实例仍会继续运行。 本文将讨论如何在后台继续运行 docker 容器。
在后台运行 Docker 容器
如果我们想简化运行容器的方式,我们应该在后台运行我们的容器,如下所示:
$ docker run -d image sample
而不是使用下面的运行:
$ docker run -i -t image sample
推荐使用 -d,因为我们可以只用一个命令运行我们的容器,我们不需要通过按 Ctrl+P + Q 来分离容器的终端。
但是,**-d** 参数有问题。 结果,除非命令不在前台运行,否则我们的容器会立即停止。
让我们用一个我们想在容器上运行 Apache 服务的案例来解释这一点。 这样做的直观方法是:
$ docker run -d apache-server apachectl start
但是,启动的容器会立即停止,因为一旦分离 Apache 守护进程,apachectl 就会退出。
Docker 不喜欢这样。 Docker 要求我们的命令一直在前台运行; 否则,它认为我们的应用程序停止并关闭了容器。
在前台运行容器
我们可以通过使用前台选项直接运行 apache 可执行文件来解决这个问题。
$ docker run -d apache-server /usr/sbin/apache2 -D NO_DETACH -D FOREGROUND
在这里,我们手动执行 apachectl 为我们执行的操作并运行 apache 可执行文件。 通过这种方法,apache 一直在前台运行。
同样,请记住每个基于 Unix 的映像的过程都不同。
问题是某些应用程序不在前台运行。 另外,我们还需要做一些额外的工作,比如我们自己导出环境变量。
在这种情况下,我们可以将 tail -f /dev/null
添加到您的命令中。 我们的容器不会停止,因为 tail 一直在前台运行。
我们可以在之前的案例中使用这种技术。
$ docker run -d apache-server apachectl start && tail -f /dev/null
由于 tail -f /dev/null
不会对我们造成伤害,我们可以将此解决方法用于任何应用程序。
无限期地运行容器
在 daemon -d
模式下使容器无限期保持活动状态的另一种简单方法是运行 sleep infinity 作为容器的参数。 这与执行奇怪的操作无关,例如在守护进程模式下分配 TTY。
虽然这个命令很奇特,比如让 sleep 成为你的默认命令。
$ docker run -d apache-server sleep infinity
此外,-t 参数分配一个伪 tty,也应该可以解决问题。 这会操纵 bash 继续运行,因为它认为它已连接到交互式 TTY。
$ docker run -t -d apache-server
相关文章
在 Linux 中托管 Docker Internal
发布时间:2023/04/18 浏览次数:139 分类:Docker
-
Docker 允许开发人员通过将应用程序包装在称为容器的标准化单元中来高效地构建、测试和部署应用程序。 在使用 Docker 容器时,您可能会遇到需要将容器与主机连接的场景。
在 Docker 中设置工作目录
发布时间:2023/04/18 浏览次数:82 分类:Docker
-
在 Docker 中,我们可以通过编辑 Dockerfile 并添加密钥 WORKDIR 来设置我们的工作目录。本文将讨论在 Docker 中更改我们当前和默认的工作目录。
在 Docker 容器中公开多个端口
发布时间:2023/04/18 浏览次数:143 分类:Docker
-
Docker 容器使用端口来实现万维网上不同设备之间的通信。 在本篇文章中,我们将学习如何使用 Nginx 应用程序在 Docker 容器中公开多个端口。
将用户添加到 Docker 容器
发布时间:2023/04/18 浏览次数:187 分类:Docker
-
在本文中,我们将学习如何通过实现返回产品数组的 Express 应用程序将用户添加到 Docker 容器。
使用 Docker 网络主机命令
发布时间:2023/04/18 浏览次数:112 分类:Docker
-
在本文中,我们将学习如何使用 --network 命令将容器添加到主机网络。 如果我们不使用此命令指定网络,我们还将了解如何将容器添加到默认网络。
清除 Docker 容器日志
发布时间:2023/04/18 浏览次数:181 分类:Docker
-
本文介绍了我们可以用来清除 docker 容器中日志的不同方法。日志是应用程序在特定事件或状态发生时记录的信息,它们帮助我们监控应用程序并采取必要的措施。
Dockerfile 中 COPY 和 ADD 命令的区别
发布时间:2023/04/18 浏览次数:158 分类:Docker
-
在 Dockerfile 中,我们可以使用 COPY 或 ADD 命令复制这些文件。 这些命令在功能上是相同的; 但是,存在一些差异。本文介绍了 Dockerfile 中 COPY 和 ADD 命令之间的区别。