小秤的halo博客

Docker 容器化部署全攻略:从镜像构建到集群编排

25-10-26
1
0

一、容器化核心价值与应用场景

Docker 通过隔离环境解决 “开发环境能跑,生产环境崩了” 的经典问题,尤其适合微服务架构、持续集成 / 持续部署(CI/CD)流程。其核心优势在于:环境一致性、资源利用率提升、部署效率优化(秒级启停)。

二、从零构建优化的 Docker 镜像

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)。