栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

运行Docker容器时如何自动启动服务?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

运行Docker容器时如何自动启动服务?

首先,有一个 问题, 在您的

Dockerfile

RUN service mysql restart && /tmp/setup.sh

Docker映像不会保存正在运行的进程。因此,您的

RUN
命令仅在
dockerbuild
阶段执行,并在构建完成后停止。相反,您需要使用
CMD
ENTRYPOINT
如下所示的命令在启动容器时指定命令:

CMD mysql start

其次,docker容器需要一个进程(最后一个命令)来保持运行,否则该容器将退出/停止。因此,普通

service mysqlstart
命令不能直接在Dockerfile中使用。

保持进程运行的典型方法有三种:

  • 使用
    service
    命令并在其后附加非结束命令
    tail -F
    CMD service mysql start && tail -F /var/log/mysql/error.log

当您运行单个服务时,这通常是首选的,因为这会使输出的日志可供docker访问。

  • 或使用前台命令执行此操作
    CMD /usr/bin/mysqld_safe

仅当存在类似的脚本时,此方法才有效

mysqld_safe

  • 或将您的脚本打包
    start.sh
    并放在最后
    CMD /start.sh

如果命令必须执行一系列步骤(最好再次

/start.sh
保持运行状态),则最好。

注意

对于初学者

supervisord
,不建议使用。老实说,这太过分了。最好对容器使用单个服务/单个命令。

顺便说一句:请检查https://registry.hub.docker.com以获取现有的mysql
docker镜像以供参考



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/401234.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号