美文网首页
5.Docker 镜像运行调试

5.Docker 镜像运行调试

作者: zouhao1985 | 来源:发表于2022-03-10 23:35 被阅读0次

    在第4节讲解了tomcat镜像的制作与优化,在实际操作过程中其实碰到了不少的问题,结合工作中碰到的问题,讲讲自己在遇到这些问题过程中的调试方法,如果有更好的方法也请各位留言补充。

    1.tomcat的启动

    tomcat的启动命令有很多种,在镜像的启动过程中,我最早使用了catalina.sh start 命令,这个命令在linux机器上是可以正常启动的,那为何在镜像中定义entrypoint的时候就不行呢,原来这个命令是以后台的方式运行的,docker就会变成Exit(0) 状态,就自动退出了。docker镜像需要一个前台的进程一直运行才能保证镜像不会退出,那么这时候就需要运行catalina.sh run了,它会让tomcat镜像一直在前台运行。(打个比方,如果你用虚拟机运行,运行这个命令后,命令行无法输入其他命令,只能ctrl+c终止tomcat的运行)

    2.tomcat镜像调试

    这一招是我目前用来调试最好用的一招,如有更好的招式烦请留言。tomcat启动一开始遇到各种千奇百怪的问题,前面那个启动的问题还好很多人碰到,搜索下就能解决。比如碰到permission deny,文件不存在这种日志提示问题,有什么好的办法排查呢。最直观的方法就是进入镜像里面去看看文件的权限、文件的路径是否存在。
    Docker提供了这样的命令,如下

    docker run -it --rm base-tomcat:9.0.54 /bin/bash
    

    这里-it 和 /bin/bash 就是以终端命令的方式运行镜像,这样跟SSH到远程Linux机器上效果一样,可以查看文件的权限和文件的路径了。这里增加了--rm,这个参数的作用是退出这个镜像后,容器也会自动删除,方便临时运行镜像。
    这里由于我制作的tomcat镜像包含最后的entrypoint命令(由于这个命令最早是有问题的),直接运行上面的命令会报错,导致无法进入容器内部。因此这里建议调试的时候把entrypoint,cmd这里命令先注释掉重新生成镜像,使用上面的命令进入容器内部调试完成之后再开启entrypoint,cmd

    相关文章

      网友评论

          本文标题:5.Docker 镜像运行调试

          本文链接:https://www.haomeiwen.com/subject/wdoqdrtx.html