Docker容器启动失败,查看容器日志排查错误
时间:2026-10-8 08:01 作者:emer 分类: 无
前言
Docker容器启动后马上就退出了,不知道为什么。本文讲怎么查看容器日志,排查启动失败的原因。
一、查看容器状态
列出所有容器
docker ps -a
看STATUS列:
Up就是正常运行Exited (1)就是异常退出了
查看指定容器状态
docker ps -a | grep 容器名
二、查看容器日志
基本用法
docker logs 容器名/容器ID
实时查看日志
docker logs -f 容器名
查看最后100行
docker logs --tail 100 容器名
带时间戳
docker logs -t 容器名
查看最近10分钟的日志
docker logs --since 10m 容器名
三、常见启动失败原因
原因1:程序启动就退出
比如你跑的是个命令行程序,执行完就退出了,容器当然也跟着退。
解决: 前台运行程序,别后台跑。
# 错误:后台运行
CMD service nginx start
# 正确:前台运行
CMD nginx -g "daemon off;"
原因2:配置文件错误
比如nginx配置写错了,启动失败。
日志里会有:
nginx: [emerg] unknown directive "xxx"
解决: 根据日志提示改配置。
原因3:端口被占用
宿主机的端口已经被别的程序占了。
日志里会有:
Error starting userland proxy: listen tcp 0.0.0.0:80: bind: address already in use
解决: 换个端口,或者把占用端口的程序关掉。
# 查谁占用了80端口
netstat -tlnp | grep :80
原因4:挂载的文件不存在
-v挂载的宿主机路径不存在。
日志里会有:
no such file or directory
解决: 先创建宿主机目录。
mkdir -p /data/www
原因5:权限问题
挂载的目录权限不对,程序读不了。
日志里会有:
Permission denied
解决: 改目录权限:
chmod 755 /data/www
原因6:环境变量没设
程序需要的环境变量没传进去。
日志里会有:
Environment variable XXX is not set
解决: 启动时传环境变量:
docker run -e MYSQL_ROOT_PASSWORD=123456 mysql
四、排查步骤
第一步:看状态
docker ps -a
确认容器是Exited状态。
第二步:看日志
docker logs 容器名
日志最后几行就是报错原因。
第三步:进容器看
如果日志不够详细,进容器里手动跑:
docker run -it 镜像名 /bin/bash
进去后手动执行启动命令,看报什么错。
第四步:检查配置
挂载的配置文件对不对,环境变量有没有。
五、常用命令汇总
| 命令 | 说明 |
|---|---|
| docker ps -a | 看所有容器状态 |
| docker logs 容器名 | 看日志 |
| docker logs -f 容器名 | 实时看日志 |
| docker logs --tail 100 容器名 | 看最后100行 |
| docker inspect 容器名 | 看容器详细信息 |
| docker exec -it 容器名 /bin/bash | 进运行中的容器 |
| docker run -it 镜像 /bin/bash | 用镜像开个交互式容器 |
六、查看容器详细信息
docker inspect 容器名
能看到挂载、环境变量、网络等所有信息。
只看挂载信息
docker inspect -f '{{.Mounts}}' 容器名
只看启动命令
docker inspect -f '{{.Config.Cmd}}' 容器名
常见坑
坑1:容器启动马上退出,日志是空的
docker logs 容器名
什么都没有。
原因: 程序本身就没输出,或者启动太早就挂了。
解决: 用 docker run -it 镜像 /bin/bash 进去手动跑。
坑2:改了配置不生效
改了挂载的配置文件,重启容器还是不生效。
原因: 容器没真正重启,或者配置文件路径不对。
解决: 强制重启:
docker restart 容器名
坑3:日志一直刷,停不下来
docker logs -f 容器名
日志一直在刷。
解决: 按 Ctrl+C 退出。
坑4:容器删除了日志就没了
容器删了,日志也跟着没了。
解决: 重要日志挂载到宿主机。
坑5:看日志找不到容器ID
容器太多,不知道哪个是哪个。
解决: 启动的时候给容器起个好记的名字:
docker run --name mynginx -d nginx
总结
排查三步:
docker ps -a看容器状态docker logs 容器名看报错- 按日志提示改问题
记住: 容器启动失败别慌,看日志就行,日志里都写了原因。
遇到问题加QQ23979811 协助处理
标签: Docker 容器日志 启动失败 docker logs 排查错误