1. Docker命令速查与最佳实践手册概述作为容器化技术的核心工具Docker已经成为现代开发和运维的标配。这份手册是我在五年容器化实践中整理的精华内容包含高频命令的智能分类和20个真实场景验证过的最佳实践。不同于官方文档的冗长这里每个命令都附带典型使用场景和易错点说明比如docker run -v挂载卷时权限问题的三种解决方案。2. 核心命令分类速查2.1 生命周期管理命令组容器启停# 后台启动并自动重启适合生产环境 docker run -d --restartalways -p 8080:80 nginx:alpine # 调试模式启动进入容器终端 docker run -it --rm ubuntu bash注意--rm参数会在容器退出时自动清理避免产生僵尸容器批量操作技巧# 停止所有运行中的容器危险操作需确认 docker stop $(docker ps -q) # 删除所有已退出的容器 docker container prune2.2 镜像管理实战命令多阶段构建示例# 构建阶段 FROM golang:1.18 as builder WORKDIR /app COPY . . RUN go build -o myapp # 运行阶段 FROM alpine:latest COPY --frombuilder /app/myapp / CMD [/myapp]通过docker build -t multi-stage-app .构建后最终镜像大小可缩减80%镜像优化技巧# 查看镜像分层结构分析优化点 docker history nginx:alpine # 清理悬空镜像 docker image prune -a3. 生产环境最佳实践3.1 资源限制与监控# 内存限制为1GBCPU份额为50% docker run -d --memory1g --cpus.5 my-app # 实时监控容器资源 docker stats --format table {{.Name}}\t{{.CPUPerc}}\t{{.MemUsage}}3.2 网络配置进阶自定义网络隔离docker network create --driverbridge --subnet172.28.0.0/16 my-net # 容器加入指定网络 docker run -d --networkmy-net --ip172.28.0.2 nginx端口暴露安全建议# 仅允许本地访问不暴露到主机网络 docker run -p 127.0.0.1:3306:3306 mysql4. 常见问题排查手册4.1 启动故障排查流程查看容器日志docker logs -f --tail100 容器ID检查启动配置docker inspect 容器ID | grep -A 10 Args进入故障容器docker exec -it 容器ID sh4.2 典型错误解决方案错误现象解决方案port already allocated使用netstat -tulnp查找占用进程no space left on device执行docker system prune -apermission denied添加:Z后缀挂载卷或调整SELinux5. 高级技巧与自动化5.1 常用别名配置# 添加到~/.bashrc alias dpsdocker ps --format table {{.ID}}\t{{.Names}}\t{{.Status}}\t{{.Ports}} alias dimgdocker images --format table {{.Repository}}\t{{.Tag}}\t{{.Size}}5.2 批量操作脚本示例#!/bin/bash # 批量更新所有容器 for container in $(docker ps -q); do docker update --restartunless-stopped $container done6. 安全加固建议6.1 最小权限原则实施# 使用非root用户运行 docker run -u 1000:1000 my-app # 只读文件系统需配合tmpfs docker run --read-only --tmpfs /tmp alpine6.2 镜像扫描与审计# 使用trivy扫描漏洞 docker run --rm aquasec/trivy image nginx:latest # 检查镜像变更历史 docker diff 容器ID这份手册持续更新在我的技术博客最近新增了Docker Compose v3的GPU支持配置和BuildKit缓存优化技巧。实际使用中发现90%的日常需求都可以用前20个高频命令覆盖关键是要理解每个参数背后的设计意图。