当前位置: 首页 > article >正文

【Docker】docker启动命令,不执行特定程序,但是让容器保持启动

为了让 Docker 容器在启动后保持运行状态,即使你不需要执行特定的任务或脚本,你可以使用几种不同的方法。以下是几种常见的策略:

总结: 建议使用第一种,使用tail -f /dev/null

1. 使用 tail -f /dev/null (亲测可用)

这种方法非常简单且常用。tail -f /dev/null 会持续监听 /dev/null 文件的变化,但由于 /dev/null 是一个空设备文件,实际上永远不会有任何变化发生,因此这个命令会无限期地阻塞,从而使容器保持运行。

Dockerfile 示例:

FROM your_base_image
# 其他指令...
CMD ["tail", "-f", "/dev/null"]

命令行示例:

docker run -d your_image_name tail -f /dev/null

2. 使用 sleep infinity

另一个简单的办法是让容器执行 sleep infinity 命令。这会让容器休眠直到被手动停止。

Dockerfile 示例:
FROM your_base_image
# 其他指令...
CMD ["sleep", "infinity"]
命令行示例:
docker run -d your_image_name sleep infinity

3. 使用 while true; do sleep 1000; done

这是一种更传统的做法,通过创建一个无限循环来保持容器运行。虽然它也能达到目的,但不如前两种方法优雅。

Dockerfile 示例:
FROM your_base_image
# 其他指令...
CMD ["sh", "-c", "while true; do sleep 1000; done"]
命令行示例:
docker run -d your_image_name sh -c "while true; do sleep 1000; done"

4. 使用后台服务

如果你的容器是为了运行某些服务(如 Web 服务器、数据库等),确保这些服务是在前台运行的。大多数服务默认情况下会在后台运行,但这会导致 Docker 认为该进程已经结束并关闭容器。你可以通过指定参数来让服务在前台运行。

例如,对于 Nginx:

docker run -d nginx:latest nginx -g "daemon off;"

或者在 Dockerfile 中:

FROM nginx:latest
CMD ["nginx", "-g", "daemon off;"]
  1. 使用 Supervisord 或其他进程管理工具
    对于需要同时运行多个进程的情况,可以使用像 supervisord 这样的进程管理工具。它不仅可以管理多个进程,还能确保它们都在前台运行,并在必要时自动重启。

Dockerfile 示例:

FROM your_base_image
RUN apt-get update && apt-get install -y supervisor
COPY supervisord.conf /etc/supervisor/conf.d/supervisord.conf
CMD ["/usr/bin/supervisord"]

最后建议,使用tail -f /dev/null


http://www.kler.cn/a/468855.html

相关文章:

  • 创建型模式2.抽象工厂模式
  • 【学习笔记】数据结构(十)
  • STM32 拓展 电源控制
  • 运算放大电路汇总及电路仿真
  • SQL编程语言
  • Redis两种主要的持久化方式是什么?
  • 微信小程序几种数据通信方式记录
  • C++基础概念复习
  • Prism模块化
  • 华为交换机---自动备份配置到指定ftp/sftp服务器
  • 数仓相关数据读后感
  • 【C++】B2101 计算矩阵边缘元素之和
  • Ubuntu挂载云盘操作步骤
  • 关于 webservice 日志中 源IP是node IP的问题,是否能解决换成 真实的客户端IP呢
  • [深度学习] 大模型学习1-大语言模型基础知识
  • 桌面开发 的变量声明(Variable Declaration)核心知识
  • SpringCloud系列教程:微服务的未来(八)项目部署、DockerCompose
  • Dockerfile进行详细的介绍
  • IDEA 编辑器自动识别 Dockerfile 类型高亮和语法提示
  • Git使用mirror备份和恢复
  • NLP问与答——Deep contextualized word representations
  • 51c嵌入式~单片机~合集4
  • 如何排查香港服务器上的权限问题
  • ros2笔记-2.5.1 面向对象编程
  • 双馈风电DFIG并网系统次转子侧变流器RSC抑制策略研究基于LADRC和重复控制的方法
  • 【视觉SLAM:八、后端Ⅱ】