教程 docker tutorial

用 Docker 部署到云与 K8s 的关系

Docker 提供了容器化技术,方便应用打包和部署,而 Kubernetes 则负责大规模容器的编排和管理。本节介绍两者在云部署中的应用与协作。

1. 使用 Docker 部署到云

  • 常见云服务平台支持 Docker:
    • AWS ECS / EKS
    • Google Cloud Run / GKE
    • Azure Container Instances / AKS

1.1 部署步骤示例(Docker + AWS ECS)

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

`

  1. 登录容器注册表:
bash
aws ecr get-login-password --region us-east-1 | docker login --username AWS --password-stdin <account>.dkr.ecr.us-east-1.amazonaws.com
  1. 推送镜像:
bash
docker tag myapp:latest <account>.dkr.ecr.us-east-1.amazonaws.com/myapp:latest
docker push <account>.dkr.ecr.us-east-1.amazonaws.com/myapp:latest
  1. 创建 ECS 服务运行镜像,配置任务定义和端口映射

2. Docker 与 Kubernetes 的关系

  • Docker:负责应用容器化,将应用打包成可移植镜像
  • Kubernetes(K8s):负责容器编排和管理,实现自动化部署、扩展和高可用
  • Docker 镜像是 K8s 部署的基础单元

2.1 Kubernetes 部署示例

yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: myapp
  template:
    metadata:
      labels:
        app: myapp
    spec:
      containers:
        - name: myapp
          image: myregistry/myapp:latest
          ports:
            - containerPort: 80
  • K8s 会创建多个副本容器,实现负载均衡和高可用
  • Service 对外提供统一访问入口

3. 部署策略与协作

  • Docker 负责镜像构建与版本控制

  • Kubernetes 负责:

    • 容器调度与伸缩
    • 网络与服务发现
    • 配置管理和 Secret
    • 健康检查与自动重启
  • 云平台可同时支持 Docker 容器和 K8s 集群管理,提高应用部署灵活性

4. 最佳实践

  • 构建轻量化镜像,减少部署时间
  • 镜像打标签,配合 CI/CD 自动化部署
  • K8s 使用 Deployment 管理应用生命周期
  • 配置 Secret 和 ConfigMap 管理敏感信息与配置
  • 结合监控与日志系统保障运行稳定

理解 Docker 与 Kubernetes 的关系,可以让开发者在云环境中高效部署、管理和扩展容器化应用,实现自动化运维与高可用架构。