15.2.8 安装验证与基础故障排查
安装完成后需立即进行验证,确保服务可用与基础功能正常。本节包含验证流程、原理草图、常见故障排查与练习。
原理草图(验证链路):
一、基础验证清单与命令说明
1)服务状态与版本信息
# 查看服务是否运行
systemctl status docker --no-pager
# 查看客户端版本
docker --version
# 查看服务端信息:存储驱动、数据根目录、cgroup 驱动等
docker info
预期效果:
- systemctl status docker 显示 active (running)
- docker info 不报错,能看到 Storage Driver、Docker Root Dir 等字段
2)功能性验证(镜像拉取与容器运行)
# hello-world 仅用于验证拉取+运行链路
docker run --rm hello-world
# 使用 busybox 进入容器,验证交互与基础网络
docker run -it --rm busybox sh
# 进入容器后执行:
ip a
ping -c 2 8.8.8.8
exit
预期效果:
- hello-world 输出欢迎信息
- busybox 容器内能看到 eth0 地址并可 ping 通公网(视网络策略而定)
3)镜像与容器状态检查
# 查看镜像列表
docker images
# 查看容器列表(含已退出)
docker ps -a
4)镜像加速器验证(如已配置)
# 通过拉取公共镜像验证加速器
docker pull nginx:alpine
预期效果:
- 拉取速度明显提升或日志中显示使用镜像加速器域名
二、基础故障排查(含命令解释与修复示例)
1)服务启动失败
症状:docker info 报错或 systemctl status docker 为 failed
排查与修复:
# 查看日志,定位配置或权限问题
journalctl -u docker -xe --no-pager
# 常见配置文件
cat /etc/docker/daemon.json
可能原因:
- 配置 JSON 语法错误
- 数据目录权限不足
- 旧版本残留
修复示例(修正 JSON 并重启):
# 修正配置文件(示例)
cat > /etc/docker/daemon.json <<'EOF'
{
"log-driver": "json-file",
"log-opts": { "max-size": "100m", "max-file": "3" }
}
EOF
systemctl daemon-reload
systemctl restart docker
2)拉取镜像失败
症状:docker pull 超时或 DNS 解析失败
排查与修复:
# 检查 DNS
cat /etc/resolv.conf
# 检查代理环境(如有)
env | grep -i proxy
# 检查镜像加速器配置
cat /etc/docker/daemon.json
修复示例(配置镜像加速器):
cat > /etc/docker/daemon.json <<'EOF'
{
"registry-mirrors": ["https://<your-mirror>.mirror.aliyuncs.com"]
}
EOF
systemctl restart docker
3)容器无法联网
症状:容器内 ping 不通
排查与修复:
# 检查 docker0 是否存在
ip link show docker0
# 检查转发参数
sysctl net.ipv4.ip_forward
# 检查防火墙规则(iptables/nftables)
iptables -L -n | head -n 20
修复示例(开启转发):
sysctl -w net.ipv4.ip_forward=1
# 持久化
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
4)权限不足(permission denied)
症状:非 root 用户执行 docker 命令报错
修复示例:
# 将用户加入 docker 组
usermod -aG docker <用户名>
# 使组权限立即生效
newgrp docker
# 验证
docker ps
三、安装验证小结
最小验证清单:
- 服务状态正常
- hello-world 运行成功
- 能拉取镜像
- 容器网络可用
- 日志无明显报错
四、练习(含明确目标)
1)验证本机 Docker 状态并记录关键字段(Storage Driver、Docker Root Dir)
2)拉取 nginx:alpine 并启动一个临时容器,访问容器内 /etc/os-release
docker run --rm nginx:alpine cat /etc/os-release
3)模拟权限不足:使用普通用户执行 docker ps,修复后再次验证
4)关闭 ip_forward(sysctl -w net.ipv4.ip_forward=0)后进入容器测试网络,再恢复并验证
docker run -it --rm busybox sh
# 内部测试
ping -c 2 8.8.8.8