1. Docker命令体系全景概览作为现代应用容器化的核心工具Docker的命令行接口(CLI)是开发者日常操作的直接入口。经过多年实战积累我将Docker命令体系划分为六个功能模块生命周期管理容器创建/启停、镜像操作构建/推送、网络配置连接/隔离、数据持久化卷管理、系统监控日志/统计以及集群编排Swarm/Compose。掌握这套体系后你会发现90%的容器操作都能在30秒内完成。重要提示所有命令都支持--help参数获取详细说明这是比任何文档都及时的帮助系统2. 容器生命周期管理实战2.1 容器启停的黄金组合# 启动新容器-d后台运行 -p端口映射 -v卷挂载 -e环境变量 docker run -d -p 8080:80 -v /宿主机路径:/容器路径 -e KEYVALUE nginx:latest # 优雅停止容器发送SIGTERM信号 docker stop 容器ID # 强制立即停止发送SIGKILL信号 docker kill 容器ID # 重启策略配置崩溃自动重启 docker run --restartalways myapp参数选择逻辑端口映射遵循主机端口:容器端口格式卷挂载建议使用绝对路径避免权限问题生产环境推荐使用--restartunless-stopped2.2 容器状态管理三板斧# 查看运行中容器-a显示全部 docker ps -a --format table {{.ID}}\t{{.Names}}\t{{.Status}} # 进入容器终端推荐exec方式 docker exec -it 容器ID /bin/bash # 删除已停止容器-f强制删除运行中 docker rm -f 容器ID避坑经验使用exec而非attach进入容器避免主进程退出导致容器停止docker ps的--format参数可自定义输出字段批量清理停止的容器docker container prune3. 镜像操作深度解析3.1 镜像构建的艺术# 标准构建命令-t指定标签 docker build -t myimage:v1 . # 多阶段构建减少最终镜像体积 FROM golang:1.18 AS builder WORKDIR /app COPY . . RUN go build -o app . FROM alpine:latest COPY --frombuilder /app/app . CMD [./app]构建优化技巧合理编排Dockerfile指令顺序利用缓存加速构建.dockerignore文件排除无关文件多阶段构建可缩减镜像体积达80%3.2 镜像仓库管理# 登录私有仓库 docker login registry.example.com # 打标签并推送 docker tag local-image:v1 registry.example.com/project/image:v1 docker push registry.example.com/project/image:v1 # 拉取特定架构镜像ARM平台示例 docker pull --platformlinux/arm64 nginx安全建议生产环境避免使用latest标签私有仓库配置HTTPS证书定期扫描镜像漏洞docker scan myimage4. 网络与存储配置4.1 网络模式对比实践模式命令示例适用场景bridgedocker run --netbridge默认隔离网络hostdocker run --nethost高性能网络需求overlaydocker swarm init跨主机容器通信macvlandocker network create需要真实MAC地址网络调试命令# 查看容器IP docker inspect -f {{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}} 容器ID # 测试容器间连通性 docker exec 容器1 ping 容器2IP4.2 数据持久化方案# 创建命名卷推荐方式 docker volume create mydata # 挂载验证 docker run -v mydata:/app/data alpine ls /app/data # 主机目录绑定挂载 docker run -v /path/on/host:/path/in/container数据管理要点卷(volume)比绑定挂载(bind mount)更易备份迁移数据库容器务必配置独立数据卷使用docker volume inspect查看卷详情5. 系统监控与日志5.1 实时监控三板斧# 查看容器资源占用类似top docker stats 容器ID # 查看进程树 docker top 容器ID # 详细配置检查 docker inspect 容器ID5.2 日志管理策略# 查看实时日志--tail控制行数 docker logs -f --tail100 容器ID # 日志驱动配置示例JSON文件大小限制 docker run --log-driverjson-file --log-opt max-size10m nginx # 日志导出分析 docker logs 容器ID app.log日志最佳实践生产环境建议配置日志轮转重要应用使用docker logs --details获取额外元数据避免将日志直接输出到容器文件系统6. Docker Compose编排实战6.1 典型compose文件结构version: 3.8 services: web: image: nginx:alpine ports: - 80:80 depends_on: - db db: image: postgres:13 environment: POSTGRES_PASSWORD: example volumes: - db_data:/var/lib/postgresql/data volumes: db_data:编排技巧使用docker-compose config验证文件语法depends_on仅控制启动顺序不保证服务就绪开发环境可添加build段替代image6.2 常用compose命令# 启动所有服务-d后台运行 docker-compose up -d # 查看服务状态 docker-compose ps # 执行批量操作 docker-compose stop|restart|down7. 生产环境问题排查7.1 典型错误速查表现象排查命令解决方案容器启动失败docker logs 容器ID检查应用日志端口冲突netstat -tulnp | grep 端口修改映射或释放端口磁盘空间不足docker system df执行docker system prune镜像拉取超时docker info配置国内镜像加速7.2 性能调优参数# 限制容器内存避免OOM docker run -m 512m --memory-swap1g app # CPU优先级设置 docker run --cpus1.5 --cpu-shares512 app # 设备IO限制 docker run --device-read-bps/dev/sda:1mb app调优建议始终为容器设置资源限制使用docker stats监控实际消耗Swarm模式可配置服务资源预留8. 高级技巧与自动化8.1 命令别名优化# 添加到~/.bashrc alias dpsdocker ps --format table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}} alias dimgdocker images --format table {{.Repository}}\t{{.Tag}}\t{{.Size}} # 快速清理无用镜像 alias dcleandocker image prune -a --filter until24h8.2 批量操作脚本#!/bin/bash # 批量停止所有容器 docker stop $(docker ps -q) # 删除所有未使用资源 docker system prune -af自动化建议定期清理无用镜像节省空间使用CI/CD管道自动化构建部署重要操作前执行docker diff检查文件变更掌握这些命令组合后你会发现Docker就像瑞士军刀一样能优雅解决各种容器化场景的需求。建议在日常使用中建立自己的命令备忘库毕竟最高效的工具永远是那些经过实战验证的操作组合。