千家信息网

如何编写docker file使得运行bash脚本时容器不退出

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关如何编写docker file使得运行bash脚本时容器不退出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。docker file的编写
千家信息网最后更新 2026年11月02日如何编写docker file使得运行bash脚本时容器不退出

这篇文章将为大家详细讲解有关如何编写docker file使得运行bash脚本时容器不退出,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。

docker file的编写,需要掌握一些基础知识:

关键字 1:FROM 指定基础镜像

所谓定制镜像,那一定是以一个镜像为基础,在其上进行定制。就像我们运行一个 nginx 镜像的容器,再进行修改一样,基础镜像是必须指定的。而 FROM 就是指定 基础镜像,因此一个 Dockerfile 中 FROM 是必备的指令,并且必须是第一条指令

关键字2:ENTRYPOINT

ENTRYPOINT 的格式和 RUN 指令格式一样,分为 exec 格式和 shell 格式。

ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数。ENTRYPOINT 在运行时也可以替代。

当指定了 ENTRYPOINT 后,CMD 的含义就发生了改变,不再是直接的运行其命令,而是将 CMD 的内容作为参数传给 ENTRYPOINT 指令。

关键字3:CMD

Docker 不是虚拟机,容器就是进程。既然是进程,那么在启动容器的时候,需要指定所运行的程序及参数。CMD 指令就是用于指定默认的容器主进程的启动命令的。

CMD命令执行脚本的原理,本质上是用了 /bin/sh -c 这一命令来执行用户脚本,所以当前容器的主进程其实是/bin/sh,而不是用户的脚本。

/bin/sh执行完用户脚本后就退出了,作为主进程,当其退出后,Docker容器也随之退出了,这一点是容器的特别之处,也是不同于虚拟机的地方。

我们通常说容器是单进程的,不仅仅指容器里面只应当运行一个主进程,实际上,我们可以认为整个容器就是我们的主进程,也就是说不要把容器想像成一个虚拟机,而应当把容器看作是一个可执行文件。

因此当我们执行一个脚本后,要想容器不退出,那么可以在ENTRYPOINT中设置"/bin/bash",确保容器不会退出。

例如下面的dockerfile:

FROM ccccccccccc
CMD ["/data/main.sh"]
ENTRYPOINT ["/bin/bash"]

然后通过docker build命令构建镜像:

docker build -t test:v1 .

关于"如何编写docker file使得运行bash脚本时容器不退出"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。

容器 进程 脚本 运行 镜像 基础 指令 命令 就是 格式 关键 关键字 参数 用户 篇文章 内容 更多 知识 程序 不错 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网和科技创新 互联网科技深圳 工业互联网科技新基建 金诺互联网科技 没上市的科技互联网公司 互联网的科技创新 互联网科技公司发展 世界互联网领先科技成果 滨湖区互联网智能科技产品供应 上海电发互联网科技有限公司 深圳市运趣互联网科技有限公司 重庆互联网医院沙龙医盟信息科技 工业互联网等科技实现智能化赋能 互联网科技如何创业 互联网科技实习生岗位 广东工业互联网大赛深圳学泰科技 江苏互联网智能科技产品出厂价 云南互联网科技学费 美国五大互联网科技公司市值多少 河南商务圈互联网科技有限公司 新华互联网科技 科技平台互联网 互联网科技公司的优势 厦门中拓互联网络科技有限公司 美国互联网科技巨头监管 国大互联网教育科技有限公司工作 元气玛特互联网科技公司是外包吗 领航科技大厦互联网公司 宇信科技在杭州互联网排第几 35岁以上互联网科技行业
0