Docker启动问题排查
当docker镜像被制作之后,通过sudo docker images
命令可以查看到镜像已经被制作。正常情况下已经在Dockerfile中配置启动命令,因此container容器也已经被启动。但是当镜像内部发生问题时,容器是启动不成功的,可以通过sudo docker ps -a
查看所有容器,其中失败容器的status是不正常的。
方式一:通过查看logs日志来排查问题
通过命令sudo docker logs ${container_id}
来指定具体id号的日志信息。
当发现问题需要重新制作镜像时,通过以下步骤进行排查:
1. 需要删除之前已经创建的镜像和据此镜像未启动的容器。步骤是先删除对应的子容器,再删除父镜像。
+ 查看容器命令:sudo docker ps -a
找到失败容器ID
$ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
32928ee6451a longsl/chatproxy:1.0 “/usr/app/chatprox…” 33 hours ago Exited (1) 33 hours ago KP_CHAT_PROXY
删除对应容器:
sudo docker rm KP_CHAT_PROXY
查看镜像命令:
sudo docker images
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
longsl/chatproxy 1.0 9281da534c00 33 hours ago 723 MB
longsl/chatserver 1.0 171344fa3b34 35 hours ago 579 MB删除对应镜像:
sudo docker rmi longsl/chatproxy:1.0
当所有清除工作完成后,开始构建新的镜像及容器
- 创建镜像:
docker build -t longsl/chatproxy:1.0 .
- 最后启动容器
方式二:通过用初始化命令启动容来排查问题
通过/usr/sbin/init
命令替换原项目程序来启动容器命令:
sudo docker run -d \
--user=kpgame \
-m=512m \
-e "TZ=Asia/Singapore" \
-e 'XMXSIZE=409m' \
...
longsl/chatproxy:1.0 \
/usr/sbin/init
启动成功后,通过sudo docker container exec KP_CHAT_PROXY_90 ls -al /usr/app/chatproxy/log
命令进入出错的目录进行查看,发现仍然报 ls: cannot open directory /usr/app/chatproxy/log: Permission denied
最后发现是centos77中的安全模块selinux把权限禁掉了,通过在运行容器的时候,给容器加特权,及加上 --privileged=true
参数可以解决,在文章最后的参考链接中,有更详细的说明。修改docker 容器的启动命令如下:
sudo docker run -d \
--user=kpgame \
-m=512m \
-e "TZ=Asia/Singapore" \
-e 'XMXSIZE=409m' \
...
-v /data/kpdeploy/logs/KP_CHAT_PROXY_90:/usr/app/chatproxy/log \
--name KP_CHAT_PROXY_90 \
--privileged=true \
longsl/chatproxy:1.0 \
/usr/sbin/init
搞定! 挂载文件可以被访问了,排查完成。
参考链接
[1] https://blog.csdn.net/rznice/article/details/52170085
上一篇: mybatis入门案例
推荐阅读
-
解决IDEA 启动Tomcat控制台乱码问题
-
解决maven启动Spring项目报错的问题
-
MySQL redo死锁问题排查及解决过程分析
-
ThinkPHP框架搭建及常见问题(XAMPP安装失败、Apache/MySQL启动失败)
-
解决eclipse启动时报错Failed to create the Java Virtural Machine.问题的方法
-
mysql 启动错误1067 问题及解决方法
-
Mysql启动中 InnoDB: Error: log file ./ib_logfile0 is of different size 0 5242880 bytes 的问题
-
Android编程中activity启动时出现白屏、黑屏问题的解决方法
-
解决Android应用冷启动时出现的白屏问题的方法
-
解决maven启动Spring项目报错的问题