Ubuntu Docker故障排查指南
systemctl status docker
查看Docker服务是否处于active (running)
状态。若未运行,执行sudo systemctl start docker
启动服务;若启动失败,继续查看服务日志(journalctl -u docker.service
)定位具体原因(如依赖缺失、配置错误)。docker ps -a
查看所有容器(包括已停止的),重点关注Exited(异常退出)或Created(创建但未启动)状态的容器。记录容器ID或名称,用于后续日志分析。journalctl -u docker.service
查看Docker服务的详细日志,可获取服务启动、容器运行期间的系统级错误(如端口冲突、磁盘空间不足、镜像拉取失败)。docker logs <container_id>
,查看容器内应用的输出日志(如应用崩溃、配置文件缺失、依赖未安装)。若容器已停止,可通过--tail
和-f
参数查看最近日志或实时跟踪(例如docker logs --tail 50 -f <container_id>
)。Entrypoint
或CMD
错误无法启动,可通过docker inspect <container_id>
查看配置,或用docker run -it --entrypoint /bin/sh <image_name>
以交互模式进入容器,手动执行启动命令(如/app/start.sh
),定位具体错误(如命令不存在、参数错误)。ss -tulpn | grep <端口号>
或netstat -tuln | grep <端口号>
查看宿主机端口占用情况。若端口已被占用,修改docker run
命令中的-p
参数(例如将-p 80:80
改为-p 8080:80
)或停止占用端口的服务。docker stats
查看容器CPU、内存使用情况,若资源耗尽,调整docker run
中的--memory
(内存限制)、--cpus
(CPU限制)参数,或清理无用容器(docker rm <container_id>
)、镜像(docker rmi <image_id>
)释放资源。docker inspect <container_id>
查看容器的网络模式(如bridge
、host
)、IP地址、网关设置。若使用自定义网络,执行docker network inspect <network_name>
确认网络配置正确(如子网、网关)。ping 8.8.8.8
(测试外网连通性)、ping www.baidu.com
(测试DNS解析),若宿主机无法联网,先解决宿主机网络问题(如网线松动、Wi-Fi断开、路由器配置错误)。sudo ufw status
查看Ubuntu防火墙状态,若开启,添加允许Docker端口的规则(例如sudo ufw allow 80/tcp
允许HTTP流量);临时关闭防火墙测试(sudo ufw disable
),确认是否为防火墙导致。/etc/docker/daemon.json
中的dns
配置(例如{"dns": ["8.8.8.8", "8.8.4.4"]}
),修改后重启Docker(sudo systemctl restart docker
);或在启动容器时通过--dns
参数指定DNS(例如docker run --dns 8.8.8.8 <image_name>
)。docker pull <image_name>
失败,检查网络连接(如代理设置、DNS解析),或更换镜像源(修改/etc/docker/daemon.json
中的registry-mirrors
,例如{"registry-mirrors": ["https://registry.docker-cn.com"]}
),然后重启Docker。docker build
命令报错),检查Dockerfile语法(如RUN
、COPY
指令路径是否正确)、依赖是否安装完整(如apt-get update
后未安装所需软件包),或使用docker build --no-cache
重新构建(避免缓存导致的问题)。docker exec -it <container_id> /bin/bash
(或/bin/sh
,取决于容器内Shell类型)进入容器,手动执行命令(如ls
查看目录、cat /etc/hosts
查看主机名解析、ping
测试网络),模拟应用运行环境,定位问题。sudo systemctl restart docker
)重建默认网络(如bridge
网络);或删除并重新创建自定义网络(docker network rm <network_name>
→ docker network create <network_name>
)。error
、failed
)。