docker进程前台和后台的选择
侧边栏壁纸
博主昵称
yuc

  • 累计撰写 291 篇文章
  • 累计收到 0 条评论

docker进程前台和后台的选择

yuc
yuc
2024-04-26 / 最后修改: 2024-04-26 06:54 / 0 评论 / 2 阅读 / 正在检测是否收录...
自定义的进程

首先我们明确一个点,那就是 容器 要一直能够运行,需要一个进程始终运行,那么如下这种命令肯定是不行的:

CMD service mysql start

因为这个指令它在终端执行就结束了,它最终确实调用了 mysql 启动,但是它本身无法一直处于运行状态,所以这种指令构建的容器运行一会儿就会停止

解决方法

根据上面的问题,我们可以改善指令如下几种:

  1. 多执行一个 tail 日志的操作,这样的话整个指令不会结束
CMD service mysql start && tail -F /var/log/mysql/error.log
  1. 使用 mysqld_safe 来启动
CMD /usr/bin/mysqld_safe

这是mysql服务的前台启动方式,它也能够一直保持在前台运行状态
3. 使用自定义的脚本

CMD /start.sh

注意自定义脚本也要符合要求,不能够立即退出

前台or后台

其实区别在前面两种中已经展示了,在正常使用没有太多的区别,但是有一些情况下使用前台是比较好的,比如 启动一个 jar 程序或者一个 python 脚本

不过这里又出现了一个问题,如何查看程序的日志? 即使我们已经把 jar 程序 或者 python 脚本的日志输出到了定义的目录中,但是程序难免会出现异常,没有捕获到的异常往往在前台显示,所以应该如何看呢?

这个时候使用 docker exec -it container_id /bin/bash 是不行的,它会进入一个新的终端中,完全看不到启动容器前台的日志,所以需要使用 docker logs -f container_id 由它来打印标准输出的日志

0

评论

博主关闭了当前页面的评论