Docker 通过隔离环境解决 “开发环境能跑,生产环境崩了” 的经典问题,尤其适合微服务架构、持续集成 / 持续部署(CI/CD)流程。其核心优势在于:环境一致性、资源利用率提升、部署效率优化(秒级启停)。
1. 基础镜像选择:优先使用 Alpine 版本(体积仅 5MB 左右),避免官方完整版;Python 项目推荐python:3.9-slim-alpine,Java 项目选择openjdk:17-jre-slim。
2. Dockerfile 最佳实践:
示例 Dockerfile(Python 项目):
# 构建阶段
FROM python:3.9-slim-alpine AS builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt -t ./libs
# 运行阶段
FROM python:3.9-alpine
WORKDIR /app
COPY --from=builder /app/libs ./libs
COPY app.py .
USER 1001 # 非root用户
ENV PYTHONPATH=/app/libs
CMD ["python", "app.py"]1. 采用多阶段构建(分离构建和运行环境,减少镜像体积)
2. 合理使用.dockerignore排除冗余文件(如.git、node_modules)
3. 合并 RUN 指令减少分层(用&&连接命令)
4. 非 root 用户运行容器(提升安全性)
1. 单机部署:使用docker-compose管理多容器应用(如 Web 服务 + 数据库 + 缓存),通过docker-compose.yml定义服务依赖和资源限制。
2. 集群部署:入门级选择Docker Swarm(原生集成),大规模场景推荐Kubernetes。核心关注:服务发现、负载均衡、滚动更新、日志收集(ELK 栈)。
3. 镜像仓库管理:私有镜像使用 Harbor,公开镜像发布到 Docker Hub,注意镜像版本语义化(如v1.0.0而非latest)。