返回首页

容器运维核心命令参考手册:Docker + K8s 全场景速查

📅 创建于 2026-06-04 🔄 更新于 2026-06-04 📝 1116 字

容器运维核心命令参考手册:Docker + K8s 全场景速查

来源:老郭 | 发布日期:2026-06-02

Docker 容器管理命令速查

目的 命令
列出所有容器(含停止) docker ps -a
查看容器详细信息(JSON) docker inspect <容器名>
查看重启次数 docker inspect -f '{{.RestartCount}}' <容器名>
查看退出码 docker inspect -f '{{.State.ExitCode}}' <容器名>
查看容器 IP docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' <容器名>
查看容器内进程 docker top <容器名>
进入容器(bash) docker exec -it <容器名> /bin/bash
进入容器(精简镜像用 sh) docker exec -it <容器名> /bin/sh
nsenter 进入卡死容器 PID=$(docker inspect --format '{{.State.Pid}}' <容器名>) && nsenter -t $PID -m -u -i -n
查看日志(持续跟踪) docker logs -f <容器名>
查看最近 N 行 docker logs --tail 200 <容器名>
查看某时间后日志 docker logs --since "2024-06-01T03:00:00" <容器名>
查看资源实时占用 docker stats
查看单次资源占用 docker stats --no-stream <容器名>
查看资源限制配置 docker inspect <容器名> \| jq '.[0].HostConfig'
查看端口映射 docker port <容器名>

Docker 镜像管理

目的 命令
列出本地镜像 docker images
拉取镜像 docker pull <镜像名>:<标签>
删除镜像 docker rmi <镜像名或ID>
清理 dangling 镜像 docker image prune
清理所有未使用镜像 docker image prune -a
全量清理(镜像/容器/网络) docker system prune -a
构建镜像 docker build -t <镜像名>:<标签> -f Dockerfile .
查看构建历史 docker history <镜像名>
测试 registry 连通性 curl -I https://registry-1.docker.io/v2/

Docker 存储卷与网络

目的 命令
列出存储卷 docker volume ls
查看卷详情 docker volume inspect <卷名>
查看容器挂载 docker inspect -f '{{.Mounts}}' <容器名>
清理未使用卷 docker volume prune
列出网络 docker network ls
查看网络详情 docker network inspect <网络名>
进入容器排查网络 docker exec -it <容器名> netstat -tunapl

日志轮转配置

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "10",
    "compress": "true"
  }
}

配置于 /etc/docker/daemon.json,修改后 systemctl reload docker

Kubernetes Pod 操作速查

目的 命令
列出 Pod kubectl get pods -n <ns>
Pod 详情(含事件) kubectl describe pod <name> -n <ns>
查看 YAML kubectl get pod <name> -n <ns> -o yaml
查看日志 kubectl logs -f <name> -n <ns>
查看退出的容器日志 kubectl logs <name> -n <ns> --previous
进入 Pod kubectl exec -it <name> -n <ns> -- /bin/bash
资源使用 kubectl top pod <name> -n <ns>
按 CPU/内存排序 kubectl top pods -n <ns> --sort-by='.cpu\|.memory.usage'
删除 Pod kubectl delete pod <name> -n <ns>
强制删除卡住 Pod kubectl delete pod <name> -n <ns> --grace-period=0 --force
移除 finalizer kubectl patch pod <name> -n <ns> -p '{"metadata":{"finalizers":[]}}' --type=merge
查看 Service endpoints kubectl get endpoints <svc> -n <ns>
查看节点详情 kubectl describe node <node>
查看事件(排序) kubectl get events -n <ns> --sort-by='.lastTimestamp'
查看配额 kubectl get resourcequota -n <ns>

Pod 调度排查

# 查看调度结果(Node)
kubectl get pod <name> -n <ns> -o wide
# 查看 Node 资源分配
kubectl describe node <node> | grep -A 10 "Allocatable"
# 查看调度失败原因
kubectl describe pod <name> -n <ns> | grep -A 20 "Events"
# 查看 Node 污点
kubectl describe node <node> | grep -A 5 "Taints"
# 查看 Pod 容忍
kubectl get pod <name> -n <ns> -o jsonpath='{.spec.tolerations}'

五大高频故障排障流程

1. DNS 解析异常

Pod 内能 ping IP 但无法解析服务名:

kubectl exec -it <pod> -n <ns> -- nslookup kubernetes.default
kubectl exec -it <pod> -n <ns> -- cat /etc/resolv.conf
# 检查 CoreDNS
kubectl get pods -n kube-system -l k8s-app=kube-dns
kubectl logs -n kube-system -l k8s-app=kube-dns -c coredns
# 重启 CoreDNS
kubectl rollout restart deployment/coredns -n kube-system

常见原因:CoreDNS 异常、resolv.conf 错误、NetworkPolicy 阻止 UDP 53。

2. 镜像拉取失败(ImagePullBackOff)

kubectl describe pod <name> -n <ns> | grep -A 10 "Events"

常见原因及修复:

  • 镜像名拼写错误 — 检查正确名称
  • 私有仓库未配置 Secret — 创建 imagePullSecrets: bash kubectl create secret docker-registry <name> --docker-server=<registry> --docker-username=<user> --docker-password=<pass> -n <ns> 在 Pod 或 ServiceAccount 中引用该 Secret

  • 认证过期 — 更新 Secret

  • Tag 不存在 — 避免用 latest
  • 网络不通 — 检查 registry 连通性

3. 容器启动后立即退出(CrashLoopBackOff)

kubectl logs <name> -n <ns> --previous
kubectl describe pod <name> -n <ns> | grep -A 20 "State:"

常见原因:启动命令错误、配置缺失/路径错、健康检查失败、依赖服务不可达、权限问题。

4. 存储卷挂载异常(ContainerCreating)

kubectl get pvc -n <ns>              # PVC 状态
kubectl get pv                        # PV 状态
kubectl describe pvc <name> -n <ns>   # PVC 详情
kubectl get storageclass              # StorageClass 存在?

常见原因:SC 不存在、accessMode 不匹配、云盘未挂载、reclaimPolicy=Delete 误删 PV。

5. 内存 OOM(OOMKilled)

kubectl describe pod <name> -n <ns> | grep -A 5 "Last State"
kubectl get pod <name> -n <ns> -o jsonpath='{.status.containerStatuses[*].lastState.terminated.reason}'
# Node 上查 kubelet 日志
journalctl -u kubelet | grep -i oom

常见原因:内存泄漏、JVM -Xmx 超容器 limits、业务增长未调 limits。

Pod 健康检查(Probe)配置参考

livenessProbe:                     # 存活检查——失败重启容器
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 60         # 等待应用启动
  periodSeconds: 15               # 每 15 秒检查
  timeoutSeconds: 5               # 超时 5 秒
  failureThreshold: 3             # 连续 3 次失败才重启
readinessProbe:                   # 就绪检查——失败摘除流量
  httpGet:
    path: /ready
    port: 8080
  initialDelaySeconds: 10
  periodSeconds: 5
  timeoutSeconds: 3
  failureThreshold: 2
startupProbe:                     # 启动探针(1.20+)——给慢启动应用更多时间
  httpGet:
    path: /healthz
    port: 8080
  failureThreshold: 30
  periodSeconds: 10               # = 最多 5 分钟启动时间

initialDelaySeconds 过短是最常见错误。应用启动 30 秒但探针设 5 秒 → 容器不断重启。

QoS 等级与驱逐优先级

QoS 条件 驱逐顺序
Guaranteed requests == limits(CPU+内存) 最后被驱逐
Burstable 至少一个容器设了 requests,但不等同 limits 中等
BestEffort 未声明任何 resources 最先被驱逐

Deployment 回滚

kubectl rollout history deployment/<name> -n <ns>    # 查看版本
kubectl rollout undo deployment/<name> -n <ns>        # 回滚到上一版
kubectl rollout undo deployment/<name> -n <ns> --to-revision=<N>  # 回滚指定版本
kubectl rollout status deployment/<name> -n <ns>      # 确认状态

生产风险提醒

高危操作 风险 建议
docker exec 进生产容器 消耗宿主机资源,加剧负载 优先 docker logs
docker system prune -a 删除所有未使用镜像/容器/网络 确认重要镜像已打 tag
kubectl delete pod --force 直接释放资源,可能数据丢失 确认数据已同步
删除 PVC(reclaimPolicy=Delete) 自动删 PV 和底层存储,不可恢复 确认已备份
livenessProbe 设太激进 容器不断重启,业务起不来 initialDelaySeconds 大于启动时间

验证方法

# Docker:确认容器 Up
docker ps | grep <name>
docker exec -it <name> netstat -tlnp | grep <port>
docker logs --tail 50 <name> | grep -i error

# K8s:确认 Pod Running + Ready 1/1
kubectl get pods -n <ns> | grep <name>
kubectl exec -it <pod> -n <ns> -- netstat -tlnp
kubectl logs -f <pod> -n <ns> | grep -i error

关联页面

页面关联点
docker-production-pitfallsDocker 生产环境踩坑指南
pod-troubleshootingPod 排障
container-networking-troubleshooting容器网络排障
k8s-resource-limits-configuration资源限制配置
storage-troubleshooting存储排障
k8s-scheduling-strategy-guidePod 调度策略
linux-essential-commands-referenceLinux 命令速查