15.11.1 运维标准流程与日常巡检
本节建立 Docker 运维的标准流程与日常巡检规范,提供可执行的命令与模板,确保容器平台稳定可控、故障可预防、变更可追溯。
一、运维标准流程(含执行要点与示例)
原理草图:流程闭环
- 需求与评审
- 输出:变更目标、影响面、风险等级、回滚方案。
- 示例:评审表字段(简化)
变更对象: docker-host-01
影响容器: api-gateway, order-service
窗口期: 23:00-01:00
回滚方案: 回滚镜像 tag 到 v1.3.2
- 变更计划
- 明确步骤、验证标准、监控指标。
- 示例:变更计划片段
步骤1: 拉取新镜像 v1.3.3
步骤2: 重建容器并健康检查
步骤3: 观察 30 分钟 CPU/内存/错误率
- 实施与验证(命令示例)
# 1) 拉取新镜像
docker pull registry.local/app/api-gateway:v1.3.3
# 2) 备份当前容器配置(导出启动参数)
docker inspect api-gateway > /var/backup/api-gateway.inspect.json
# 3) 重建容器
docker stop api-gateway
docker rm api-gateway
docker run -d --name api-gateway \
-p 8080:8080 \
-e ENV=prod \
--restart=always \
registry.local/app/api-gateway:v1.3.3
# 4) 验证健康
docker ps --filter "name=api-gateway"
curl -s http://127.0.0.1:8080/health
- 监控与观察期(命令示例)
# 观察资源与重启情况
docker stats --no-stream
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.RunningFor}}"
# 观察事件(5分钟内)
docker events --since 5m
- 记录与归档(模板示例)
变更时间: 2024-06-01 23:05
执行人: ops01
结果: 成功
异常: 无
监控指标: CPU 45%, 内存 60%, 5xx=0
- 复盘与优化
- 若失败,记录触发条件与改进项,形成标准化操作清单。
二、日常巡检维度(含命令与预期结果)
1. 节点与资源
# 负载与资源
uptime
free -m
df -h
df -i
# Docker 守护进程
systemctl status docker
docker version
预期:负载不持续高于 CPU 核心数,磁盘使用率 < 85%,Docker 服务为 active。
2. 容器与服务
# 容器状态与重启次数
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.RestartCount}}"
# 健康检查
docker inspect --format '{{.State.Health.Status}}' api-gateway
预期:业务容器状态为 Up,重启次数不异常,Health 为 healthy。
3. 镜像与仓库
# 镜像版本与大小
docker images --format "table {{.Repository}}\t{{.Tag}}\t{{.Size}}"
# 清理过期镜像(示例:删除<none>)
docker image prune -f
预期:镜像 tag 统一、无过期悬挂镜像。
4. 日志与事件
# 查看近100行日志
docker logs --tail 100 api-gateway
# 事件异常定位
docker events --filter "event=die" --since 1h
预期:无频繁 die/oom 事件,错误关键词可控。
5. 安全与配置
# 容器运行用户
docker inspect --format '{{.Config.User}}' api-gateway
# 端口暴露检查
docker ps --format "table {{.Names}}\t{{.Ports}}"
预期:非必要端口不暴露,容器运行用户非 root(有条件时)。
6. 备份与恢复
# 数据卷备份(示例:/data)
tar -czf /backup/api-gateway_$(date +%F).tar.gz /data
# 恢复验证
tar -tzf /backup/api-gateway_2024-06-01.tar.gz | head
预期:备份可读、可解压、关键目录存在。
三、巡检执行与频率建议(含可执行脚本)
每日:节点资源、容器健康、关键告警
每周:镜像清理、日志容量、事件异常
每月:权限审计、基线核查、灾备演练抽检
一键巡检脚本(可落地)
# /usr/local/bin/docker_daily_check.sh
#!/bin/bash
echo "== Host =="
uptime
free -m | awk 'NR==2{print "MemUsed(MB):",$3,"MemTotal(MB):",$2}'
df -h | awk 'NR>1{print $1,$5,$6}'
echo "== Docker =="
systemctl is-active docker
docker ps --format "table {{.Names}}\t{{.Status}}\t{{.RestartCount}}"
docker events --since 10m --format '{{.Time}} {{.Type}} {{.Action}} {{.Actor.Attributes.name}}' | tail -n 5
四、告警与响应(含排错命令)
阈值建议
CPU/内存 > 80%、磁盘使用率 > 85%、容器重启次数 > 3
排错命令示例
# 1) 资源高:定位最耗资源容器
docker stats --no-stream
# 2) 容器频繁重启:查看退出原因
docker inspect --format '{{.State.ExitCode}} {{.State.OOMKilled}} {{.State.Error}}' api-gateway
docker logs --tail 200 api-gateway
# 3) 网络异常:检查端口与连通性
ss -lntp | grep 8080
curl -s -o /dev/null -w "%{http_code}\n" http://127.0.0.1:8080/health
五、巡检记录模板要素(可复制)
巡检时间: 2024-06-01 09:00
巡检人: ops01
节点/容器: docker-host-01 / api-gateway, order-service
问题: 无
处理动作: 无
结论: 正常
六、常见问题与快速处理
- 容器频繁重启
- 排查:退出码、OOM、日志错误。
docker inspect --format '{{.State.ExitCode}} {{.State.OOMKilled}}' api-gateway
docker logs --tail 100 api-gateway
- 镜像拉取失败
- 排查:仓库可用性与认证。
curl -I http://registry.local/v2/
docker login registry.local
- 磁盘占满
- 排查并清理无用资源。
docker system df
docker system prune -af
七、练习(动手任务)
- 编写并执行
docker_daily_check.sh,输出巡检信息并保存到/var/log/docker_check.log。 - 模拟容器重启:运行一个会退出的容器并排查重启原因。
- 清理悬挂镜像并验证
docker system df变化。 - 设计一份“变更计划”并包含回滚策略(文本即可)。
通过规范化流程与可执行的巡检机制,形成“发现—响应—恢复—复盘”的闭环,降低运维风险并提升平台稳定性。