确认Docker服务是否正在运行,是排查故障的第一步。使用以下命令查看服务状态:
sudo systemctl status docker
若服务未启动,可通过以下命令启动:
sudo systemctl start docker
启动后再次检查状态,确保服务处于“active (running)”状态。
日志是故障排查的核心依据,可通过以下命令获取详细错误信息:
<container_id>或<container_name>):docker logs <container_id> # 查看指定容器日志
docker logs -f <container_id> # 实时跟踪日志输出
journalctl -u docker.service # 查看Docker服务日志
sudo tail -f /var/log/syslog # 查看系统日志(含Docker相关错误)
日志中的“Error”“Failed”等关键字能快速定位问题根源(如镜像拉取失败、端口冲突等)。Docker的主配置文件/etc/docker/daemon.json若存在语法错误或无效配置,会导致服务启动失败。
sudo nano /etc/docker/daemon.json
示例正确配置(开启调试模式):{
"debug": true,
"log-level": "info"
}
sudo systemctl restart docker
若配置文件有误,可通过journalctl -u docker.service查看具体报错。资源不足(CPU、内存、磁盘空间)是Docker容器启动失败的常见原因:
top # 实时查看CPU、内存占用
df -h # 检查磁盘空间(确保根分区有足够空间)
<container_id>):docker stats <container_id> # 实时查看容器CPU、内存、网络使用率
若资源耗尽,需清理无用容器(docker rm <container_id>)、镜像(docker rmi <image_id>)或扩容磁盘。容器无法访问外部网络或宿主机与其他容器通信异常时,可通过以下步骤排查:
ping google.com # 检查是否能访问外网
docker network ls # 查看网络列表
docker network inspect <network_name> # 检查网络详情(如IP段、网关)
<container_id>):docker port <container_id> # 查看容器端口映射是否正确(如宿主机8080映射到容器80)
若端口冲突,可修改docker run命令中的-p参数(如-p 8081:80)。若出现“Permission denied”错误(如无法访问/var/run/docker.sock),通常是因为当前用户无权访问Docker守护进程:
docker组:sudo usermod -aG docker $USER
newgrp docker # 临时切换至docker组
docker ps -a # 应能正常列出容器
注意:加入docker组相当于赋予用户root权限,请谨慎操作。Docker依赖overlay(常用)或aufs等内核模块,若模块未加载,会导致容器无法启动:
lsmod | grep overlay # 检查overlay模块
lsmod | grep aufs # 检查aufs模块(部分旧版本Docker使用)
sudo modprobe overlay
sudo modprobe aufs
linux-image-extra-$(uname -r))。Docker缓存或旧容器/镜像过多可能导致磁盘空间不足或冲突:
docker system prune -a --volumes
docker container prune
docker image prune
清理后释放的磁盘空间可避免因空间不足导致的故障。对于临时性故障(如进程卡死、资源泄漏),重启Docker服务往往能快速恢复:
sudo systemctl restart docker
重启后检查服务状态(sudo systemctl status docker)及容器运行情况(docker ps -a)。
若容器因镜像损坏或配置错误无法启动,可尝试重建:
<image_name>、<container_name>):docker rm <container_name> # 删除旧容器
docker run -d --name <container_name> <image_name> # 重新创建容器
docker build -t <image_name> . # 重新构建镜像
重建前需检查Dockerfile语法及依赖是否正确。以上方法覆盖了Debian系统上Docker的常见故障场景,可根据具体错误信息逐步排查。若问题仍未解决,建议查看Docker官方文档或在社区(如Docker Hub、Stack Overflow)提交详细错误日志寻求帮助。