一、Docker启动异常表现:
背景:images:keywords_exact:v1和启动container的命令如下:
$ cat docker_run.sh
docker run --network host \
--name keywords_exact \
--restart=always \
-d keywords_exact \
bash run.sh
$ cat run.sh
#!/bin/bash
gunicorn -c gunicorn.py run:app
$ cat gunicorn.py
workers = 3
threads = 3
timeout = 100
bind = '0.0.0.0:7339'
pidfile = './log/gunicorn.pid'
loglevel = 'info'
max_requests = 50000
max_requests_jitter = 2
状态反复restaring,用命令docker container ls -a查看
$ docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS
NAMES
6aaf2018609d keywords_exact:v1 "bash urn.sh" 6 seconds ago Restarting (1) Less than a second ago keywords_exact
二、如何定位问题出在了哪里
这个举一个我操作过程中遇见的问题:缺少文件夹log。
去看Docker日志:$docker logs [容器名/容器ID]
$docker logs 6aaf2018609d
[2021-04-29 20:32:42 +0800] [1] [INFO] Starting gunicorn 20.0.4
Error: ./log doesn't exist. Can't create pidfile.
[2021-04-29 20:32:43 +0800] [1] [INFO] Starting gunicorn 20.0.4
Error: ./log doesn't exist. Can't create pidfile.
这里说你所构建的镜像中,没有log这个文件夹。当container的状态是Restarting时,无法通过$ docker exec -it [containerid] bash来进入容器内部,进不去,就没办法mkdir log,也就无法docker commit -m 'add log file' [containerid] [imageid:tag]。
解决办法:最简单的方式创建一个容器,并进入容器内:
$ docker run -it keywords_exact:v1 /bin/bash
[root@6aaf2018609d log]# mkdir log
# 按住contrl + p + q,退出容器,然后提交修改给镜像,
$ docker commit -m 'add log file' 6aaf2018609d keywords_exact:v1
sha256:40bc7daabf66ff786e4a2ebaeba187e13c464756e51700849d6451754fb8476a
$
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
keywords_exact v1 40bc7daabf66 7 seconds ago 5.29GB
# 然后kill掉这个容器,
$ docker kill 6aaf2018609d
$ docker rm 6aaf2018609d
# 再重新启动一个容器,此时重启成功
$ bash docker_run.sh
其它可能的原因:
1.内存不够:找内存
Docker 启动至少需要2G内存,首先执行free -mh命令查看剩余内存是否足够。
$free -mh
total used free shared buff/cache available
Mem: 15G 14G 627M 195M 636M 726M
Swap: 0B 0B 0B
2.端口冲突:换端口
该docker监听端口已经被其他进程占用,一般此种问题容易出现在新部署的服务,或在原有机器上部署新的后台服务,所以在部署之前应该执行命令检查端口是否已经被占用,如果上线后发现占有则应改为可用端口再重启之。
检查命令:
$netstat -nltp|grep [规划的端口号]
参考:
1.https://blog.csdn.net/u010716706/article/details/69524863
2.docker常见错误:http://www.360doc.com/content/20/0810/09/29585900_929446809.shtml