5.Docker 镜像运行调试
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了5.Docker 镜像运行调试相关的知识,希望对你有一定的参考价值。
参考技术A在第4节讲解了tomcat镜像的制作与优化,在实际操作过程中其实碰到了不少的问题,结合工作中碰到的问题,讲讲自己在遇到这些问题过程中的调试方法,如果有更好的方法也请各位留言补充。
tomcat的启动命令有很多种,在镜像的启动过程中,我最早使用了catalina.sh start 命令,这个命令在linux机器上是可以正常启动的,那为何在镜像中定义entrypoint的时候就不行呢,原来这个命令是以后台的方式运行的,docker就会变成Exit(0) 状态,就自动退出了。docker镜像需要一个前台的进程一直运行才能保证镜像不会退出,那么这时候就需要运行catalina.sh run了,它会让tomcat镜像一直在前台运行。(打个比方,如果你用虚拟机运行,运行这个命令后,命令行无法输入其他命令,只能ctrl+c终止tomcat的运行)
这一招是我目前用来调试最好用的一招,如有更好的招式烦请留言。tomcat启动一开始遇到各种千奇百怪的问题,前面那个启动的问题还好很多人碰到,搜索下就能解决。比如碰到permission deny,文件不存在这种日志提示问题,有什么好的办法排查呢。最直观的方法就是进入镜像里面去看看文件的权限、文件的路径是否存在。
Docker提供了这样的命令,如下
这里-it 和 /bin/bash 就是以终端命令的方式运行镜像,这样跟SSH到远程Linux机器上效果一样,可以查看文件的权限和文件的路径了。这里增加了--rm,这个参数的作用是退出这个镜像后,容器也会自动删除,方便临时运行镜像。
这里由于我制作的tomcat镜像包含最后的entrypoint命令(由于这个命令最早是有问题的),直接运行上面的命令会报错,导致无法进入容器内部。因此这里建议 调试的时候把entrypoint,cmd这里命令先注释掉重新生成镜像,使用上面的命令进入容器内部调试完成之后再开启entrypoint,cmd 。
以上是关于5.Docker 镜像运行调试的主要内容,如果未能解决你的问题,请参考以下文章