Docker操作命令完全指南:从基础到高阶实践

一、Docker命令体系概览

Docker命令按照功能可分为三大类:镜像操作、容器管理和系统维护。理解这些命令的层级关系对高效使用Docker至关重要:

图1

二、镜像操作命令详解

1. 镜像生命周期管理

# 从仓库拉取镜像(支持多平台)
docker pull nginx:1.23 --platform=linux/amd64

# 构建镜像(多阶段构建示例)
docker build -t myapp:v1 -f Dockerfile .

# 给镜像打标签(用于版本管理)
docker tag myapp:v1 registry.example.com/myapp:prod

# 推送镜像到私有仓库
docker push registry.example.com/myapp:prod

# 删除本地镜像(强制删除正在使用的镜像)
docker rmi -f nginx:1.23

实践建议

  • 使用明确的版本标签而非latest
  • 构建时添加--no-cache避免缓存问题
  • 定期清理无用镜像(docker image prune -a)

2. 镜像查询与检查

# 列出镜像(显示摘要信息)
docker images --digests

# 查看镜像构建历史
docker history nginx:1.23

# 检查镜像元数据
docker inspect nginx:1.23 | jq '.[].Config.ExposedPorts'

# 保存/加载镜像归档文件
docker save -o nginx.tar nginx:1.23
docker load -i nginx.tar

三、容器操作命令精要

1. 容器生命周期管理

# 运行容器(带资源限制)
docker run -d --name web \
  -p 8080:80 \
  --memory=512m \
  --cpus=1.5 \
  -v /data:/var/www \
  nginx:1.23

# 启停容器(批量操作)
docker stop web && docker start web

# 删除容器(清理匿名卷)
docker rm -v web

# 进入运行中容器(推荐exec方式)
docker exec -it web bash

关键参数解析

  • -d:后台守护模式
  • -it:交互式终端
  • --restart=always:自动重启策略
  • --network=my_net:指定自定义网络

2. 容器状态监控

# 查看容器列表(显示完整命令)
docker ps -a --no-trunc

# 实时资源监控(只显示CPU/MEM)
docker stats --format "table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}"

# 查看容器日志(带时间戳和尾部跟踪)
docker logs -ft --tail 100 web

# 检查容器详细信息(网络/IP等)
docker inspect web | jq '.[].NetworkSettings.Networks'

调试技巧

  • 使用docker pause/unpause冻结容器状态
  • docker diff web查看文件系统变更
  • docker top web查看容器内进程

四、系统维护命令

1. 系统信息与清理

# 查看Docker系统信息(显示存储驱动等)
docker info

# 查看Docker版本(客户端和服务端)
docker version --format '{{.Server.Version}}'

# 清理无用资源(谨慎使用!)
docker system prune --volumes --all

# 查看磁盘使用详情
docker system df -v

2. 高级监控方案

# 输出容器指标到Prometheus
docker run -d --name=cadvisor \
  -p 8080:8080 \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  google/cadvisor:v0.47.0

生产建议

  • 设置--log-opt max-size=10m限制日志大小
  • 使用docker events监听系统事件
  • 结合Grafana实现可视化监控

五、命令组合实战案例

案例1:批量更新所有容器

# 停止所有运行中的容器
docker stop $(docker ps -q)

# 删除所有已停止容器
docker rm $(docker ps -aq)

# 更新所有镜像并重新运行
docker images | grep -v REPOSITORY | awk '{print $1":"$2}' | xargs -I{} docker pull {}

案例2:容器健康检查

# 运行带健康检查的容器
docker run -d \
  --name=healthcheck \
  --health-cmd="curl -f http://localhost || exit 1" \
  --health-interval=5s \
  nginx:1.23

# 查看健康状态
docker inspect --format='{{json .State.Health}}' healthcheck

六、常见问题排查流程

图2

通过掌握这些核心命令组合,您可以高效管理Docker全生命周期操作。建议在日常使用中:

  1. 善用--help查看命令帮助
  2. 使用命令补全工具提高效率
  3. 将常用命令封装为脚本或别名
  4. 定期查阅官方文档获取更新

添加新评论