容器化部署从入门到实践

2026-06-22 · 6 阅读 · 212字
CI/CDDockerKubernetes
容器化部署从入门到实践

容器化部署从入门到实践

什么是容器化部署

容器化部署是将应用程序及其依赖打包到一个轻量级、可移植的容器中,然后在任何支持容器运行时的环境中部署运行。与传统的虚拟机相比,容器共享宿主机的操作系统内核,启动速度更快,资源占用更少。

容器 vs 虚拟机

特性容器虚拟机
启动时间毫秒级分钟级
镜像大小MB 级GB 级
资源密度
隔离级别进程级完全虚拟化

Docker 基础

核心概念

镜像 (Image)
一个只读模板,包含运行应用程序所需的文件系统、库和配置。
容器 (Container)
镜像的运行实例,是一个隔离的进程。
仓库 (Registry)
存储和分发镜像的服务,如 Docker Hub、Harbor。

常用命令

# 构建镜像
docker build -t myapp:latest .

# 运行容器
docker run -d -p 8080:80 --name myapp myapp:latest

# 查看运行中的容器
docker ps

# 查看日志
docker logs -f myapp

# 进入容器
docker exec -it myapp /bin/sh

Docker Compose 编排

Docker Compose 通过 YAML 文件定义和运行多容器应用,适合开发环境和单机部署。

# docker-compose.yml
version: '3.8'
services:
  app:
    build: .
    ports:
      - "8080:8080"
    environment:
      - DB_HOST=db
    depends_on:
      - db
  db:
    image: postgres:15
    volumes:
      - pgdata:/var/lib/postgresql/data
    environment:
      POSTGRES_PASSWORD: secret

volumes:
  pgdata:

Kubernetes 编排

Kubernetes 是生产环境容器编排的事实标准,提供自动部署、扩缩容和服务管理能力。

核心架构

  • Control Plane:API Server、Scheduler、Controller Manager、etcd
  • Worker Node:kubelet、kube-proxy、容器运行时

工作负载资源

  • Deployment:声明式更新 Pod 和 ReplicaSet
  • StatefulSet:有状态应用的部署管理
  • DaemonSet:在每个节点上运行一个 Pod
  • Job/CronJob:批处理任务和定时任务

服务发现与入站流量

  • Service:ClusterIP、NodePort、LoadBalancer 三种类型
  • Ingress:七层负载均衡,支持域名和路径路由

部署最佳实践

镜像构建

  1. 使用多阶段构建减小镜像体积
  2. 使用 Alpine 等精简基础镜像
  3. 避免以 root 用户运行容器
  4. 合理利用构建缓存

部署配置

  1. 使用 ConfigMap 和 Secret 分离配置
  2. 设置资源请求和限制 (requests/limits)
  3. 配置存活探针和就绪探针 (liveness/readiness probe)
  4. 使用 PodDisruptionBudget 保证可用性

安全最佳实践

  1. 定期扫描镜像漏洞
  2. 使用私有镜像仓库
  3. 启用 RBAC 权限控制
  4. 配置网络策略 (NetworkPolicy)

总结

容器化部署已从新兴技术发展为主流实践。从 Docker 的简单容器化,到 Compose 的多服务编排,再到 Kubernetes 的生产级集群管理,每一步都降低了运维复杂度,提升了交付效率。建议团队从容器化单个应用开始,逐步向完整的容器编排平台演进。