容器化开发_02_Docker判断程序是否起来?Docker定位容器错误?
Posted 毛奇志
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了容器化开发_02_Docker判断程序是否起来?Docker定位容器错误?相关的知识,希望对你有一定的参考价值。
文章目录
问题:虚拟化如何测试linux某个程序是否起来了?
问题:虚拟化如何测试linux某个程序是否起来了?
回答:
(1) 查看进程 ps -ef | grep 程序名
(2) 查看端口占用 netstat -nlpt | grep 端口号
(3) curl http://127.0.0.1:端口号/
问题:docker容器化如何测试容器中某个程序是否起来了?
问题:docker容器化如何测试容器中某个程序是否起来了?
回答:
(1) docker容器内,执行进程 ps -ef | grep 程序名
(2) docker容器内,执行curl http://127.0.0.1:端口号/
(3) linux上,执行curl http://127.0.0.1:映射linux端口号/
注意1:docker容器里面可能无法使用 netstat 命令查看端口占用
注意2:docker run 命令中 -p linux端口号:容器端口号
问题:当docker容器能起来,如何定位容器错误?
问题:当docker容器能起来,docker容器化报错排查方式?如何定位容器错误?
回答:
(1) docker ps | grep xxx 第一列就是 container-id,然后 docker logs container-id 查看日志
(2) docker exec -it container-id bash/sh 进入容器,先查看的文件或脚本是否都存在指定docker容器中的指定目录,然后单独调用执行需要启动的 脚本(如./start.sh)或jar包(如 java -jar xxx.jar) 包,看是否能执行,看执行之后的日志。
问题:当docker容器起不来,既没有有效日志(docker logs container-id),又无法进入容器单独调用执行(因为docker没起来,所以无法docker exec -it xxx bash进入),如何定位容器错误?
问题:当docker容器起不来,既没有有效日志(docker logs container-id),又无法进入容器单独调用执行(因为docker没起来,所以无法docker exec -it xxx bash进入),如何定位容器错误?
回答:找到dockerfile启动脚本,在 脚本 最后添加一行 while true; do echo “hello”; done; 这样,即使脚本无法起来,但是有这个死循环在,容器还是可以保持运行
注意1:是在启动脚本start.sh 最后加上这个,不是在dockerfile里面加这个,否则没完没了,镜像都做不出来了 RUN while true; do echo “hello”; done;
注意2:仅仅适用于 脚本sh ,不适用于 jar 包
以上是关于容器化开发_02_Docker判断程序是否起来?Docker定位容器错误?的主要内容,如果未能解决你的问题,请参考以下文章
容器化开发_01_Docker镜像到哪里去下载?Docker镜像下载不下来四种原因?Docker镜像占满磁盘了?