免费

Docker + Kubernetes 实战部署

容器化部署是现代应用的标准做法。本文从 Docker 基础到 Kubernetes 生产部署,完整讲解容器化技术的实战应用。

Docker 基础

核心概念

  • 镜像(Image):应用的静态定义
  • 容器(Container):镜像的运行实例
  • Dockerfile:镜像构建脚本
  • Docker Compose:多容器编排

Dockerfile 示例

# Node.js 应用 Dockerfile
FROM node:20-alpine

WORKDIR /app

COPY package*.json ./
RUN npm ci --only=production

COPY . .

EXPOSE 3000

CMD ["node", "server.js"]

常用命令

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

# 运行容器
docker run -d -p 3000:3000 myapp:1.0

# 查看运行中的容器
docker ps

# 查看日志
docker logs -f <container_id>

# 进入容器
docker exec -it <container_id> sh

Docker Compose

使用 Compose 管理多容器应用:

version: '3.8'

services:
  web:
    build: ./web
    ports:
      - "3000:3000"
    depends_on:
      - api
  
  api:
    build: ./api
    environment:
      - DB_HOST=db
    depends_on:
      - db
  
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: secret
    volumes:
      - db-data:/var/lib/postgresql/data

volumes:
  db-data:

Kubernetes 入门

核心概念

  • Pod:最小的部署单元
  • Deployment:无状态应用部署
  • Service:服务暴露
  • Ingress:HTTP 路由
  • ConfigMap / Secret:配置管理

Deployment 示例

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web-app
spec:
  replicas: 3
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web
        image: myapp:1.0
        ports:
        - containerPort: 3000
        resources:
          requests:
            memory: "128Mi"
            cpu: "500m"
          limits:
            memory: "512Mi"
            cpu: "1000m"

Service 示例

apiVersion: v1
kind: Service
metadata:
  name: web-service
spec:
  type: LoadBalancer
  selector:
    app: web
  ports:
  - port: 80
    targetPort: 3000

生产实践

健康检查

livenessProbe:
  httpGet:
    path: /health
    port: 3000
  initialDelaySeconds: 30
  periodSeconds: 10

readinessProbe:
  httpGet:
    path: /ready
    port: 3000
  initialDelaySeconds: 5
  periodSeconds: 5

滚动更新

spec:
  strategy:
    type: RollingUpdate
    rollingUpdate:
      maxSurge: 1
      maxUnavailable: 0

总结

Docker 和 Kubernetes 是现代应用部署的必备技能。从单体应用到微服务架构,掌握容器化部署能显著提升开发效率和系统可靠性。

深入学习推荐我们的付费课程《云原生实战:从Docker到Kubernetes》。