容器化部署指南:Docker 与 Kubernetes 入门实践

容器化技术正在改变应用部署方式。Docker 让应用打包和分发变得简单,Kubernetes 则提供了强大的容器编排能力。本文将介绍容器化部署的基础知识和实践指南。

 

一、容器化基础

 

1. 什么是容器

容器是一种轻量级的虚拟化技术,将应用及其依赖打包在一起,实现"一次构建,到处运行"。

 

2. 容器 vs 虚拟机

(1)启动速度

- 容器:秒级启动

- 虚拟机:分钟级启动

 

(2)资源占用

- 容器:MB 级,共享内核

- 虚拟机:GB 级,独立内核

 

(3)性能

- 容器:接近原生

- 虚拟机:有性能损耗

 

(4)隔离性

- 容器:进程级隔离

- 虚拟机:完全隔离

 

3. 容器优势

- 一致性:开发、测试、生产环境一致

- 快速部署:秒级启动

- 资源高效:更高密度

- 可移植性:跨平台运行

- 版本控制:镜像版本管理

 

二、Docker 基础

 

1. 核心概念

(1)镜像(Image)

- 只读模板

- 包含应用和依赖

- 分层存储

 

(2)容器(Container)

- 镜像的运行实例

- 可启动、停止、删除

- 数据可持久化

 

(3)仓库(Registry)

- 存储和分发镜像

- Docker Hub:公共仓库

- 私有仓库:企业自建

 

2. Docker 安装

# Ubuntu 安装

sudo apt-get update

sudo apt-get install docker.io

 

# 验证安装

docker --version

docker run hello-world

 

3. 常用命令

(1)镜像操作

docker pull nginx          # 拉取镜像

docker images              # 列出镜像

docker rmi nginx           # 删除镜像

 

(2)容器操作

docker run -d nginx        # 运行容器

docker ps                  # 列出容器

docker stop <container>    # 停止容器

docker rm <container>      # 删除容器

 

(3)日志和调试

docker logs <container>    # 查看日志

docker exec -it <c> bash   # 进入容器

docker inspect <container> # 查看详细信息

 

4. Dockerfile 编写

# 基础镜像

FROM ubuntu:20.04

 

# 设置环境变量

ENV APP_HOME=/app

WORKDIR $APP_HOME

 

# 安装依赖

RUN apt-get update && apt-get install -y python3

 

# 复制文件

COPY . .

 

# 安装应用

RUN pip3 install -r requirements.txt

 

# 暴露端口

EXPOSE 8080

 

# 启动命令

CMD ["python3", "app.py"]

 

5. 镜像构建和运行

# 构建镜像

docker build -t myapp:1.0 .

 

# 运行容器

docker run -d -p 8080:8080 myapp:1.0

 

三、Docker Compose

 

1. 什么是 Compose

Compose 是用于定义和运行多容器 Docker 应用的工具,使用 YAML 文件配置。

 

2. compose.yml 示例

version: "3.8"

services:

  web:

    image: nginx:latest

    ports:

      - "80:80"

    volumes:

      - ./html:/usr/share/nginx/html

    depends_on:

      - app

 

  app:

    build: ./app

    environment:

      - DATABASE_URL=postgres://db:5432/mydb

    depends_on:

      - db

 

  db:

    image: postgres:13

    environment:

      - POSTGRES_PASSWORD=secret

    volumes:

      - pgdata:/var/lib/postgresql/data

 

volumes:

  pgdata:

 

3. 常用命令

docker-compose up -d     # 启动服务

docker-compose down      # 停止服务

docker-compose ps        # 查看状态

docker-compose logs      # 查看日志

 

四、Kubernetes 基础

 

1. 核心概念

(1)Pod

- 最小部署单元

- 包含一个或多个容器

- 共享网络和存储

 

(2)Deployment

- 管理 Pod 副本

- 支持滚动更新

- 自动恢复

 

(3)Service

- 服务发现

- 负载均衡

- 稳定访问入口

 

(4)ConfigMap/Secret

- 配置管理

- 敏感信息管理

- 与应用解耦

 

2. 集群架构

(1)控制平面

- API Server:集群入口

- Scheduler:调度 Pod

- Controller Manager:控制器

- etcd:数据存储

 

(2)工作节点

- Kubelet:节点代理

- Kube-proxy:网络代理

- 容器运行时:Docker/containerd

 

3. 基本操作

(1)kubectl 安装

# 下载 kubectl

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"

chmod +x kubectl

sudo mv kubectl /usr/local/bin/

 

(2)部署应用

kubectl create deployment nginx --image=nginx

kubectl expose deployment nginx --port=80 --type=LoadBalancer

 

(3)查看状态

kubectl get pods

kubectl get services

kubectl get deployments

 

4. YAML 配置示例

apiVersion: apps/v1

kind: Deployment

metadata:

  name: myapp

spec:

  replicas: 3

  selector:

    matchLabels:

      app: myapp

  template:

    metadata:

      labels:

        app: myapp

    spec:

      containers:

      - name: myapp

        image: myapp:1.0

        ports:

        - containerPort: 8080

        resources:

          requests:

            memory: "64Mi"

            cpu: "250m"

          limits:

            memory: "128Mi"

            cpu: "500m"

 

五、容器化最佳实践

 

1. 镜像优化

(1)减小镜像大小

- 使用精简基础镜像(Alpine)

- 多阶段构建

- 清理缓存

 

(2)安全加固

- 使用非 root 用户

- 扫描漏洞

- 定期更新

 

2. 资源管理

- 设置资源请求和限制

- 避免资源争抢

- 监控资源使用

 

3. 日志管理

- 输出到标准输出

- 使用日志收集(ELK)

- 日志轮转

 

4. 健康检查

- 配置 liveness probe

- 配置 readiness probe

- 快速故障检测

 

5. 配置管理

- 使用 ConfigMap

- 敏感信息用 Secret

- 环境分离配置

 

六、容器编排对比

 

| 特性 | Kubernetes | Docker Swarm | Nomad |

|------|-----------|--------------|-------|

| 学习曲线 | 陡 | 平缓 | 中等 |

| 功能 | 最完善 | 基础 | 中等 |

| 生态 | 最丰富 | 一般 | 中等 |

| 适用 | 大型集群 | 小型集群 | 混合部署 |

 

结语

 

容器化是云原生时代的基础技能。Docker 简化了应用打包,Kubernetes 提供了强大的编排能力。掌握容器化技术,能够提升部署效率,降低运维成本。天下数据提供容器化咨询服务,可帮助企业实现容器化转型。技术咨询:400-638-8808。

 

本文链接:https://www.idcbest.com/cloundnews/11017048.html



天下数据手机站 关于天下数据 联系我们 诚聘英才 付款方式 帮助中心 网站备案 解决方案 域名注册 网站地图

天下数据18年专注海外香港服务器、美国服务器、海外云主机、海外vps主机租用托管以及服务器解决方案-做天下最好的IDC服务商

《中华人民共和国增值电信业务经营许可证》 ISP证:粤ICP备07026347号

朗信天下发展有限公司(控股)深圳市朗玥科技有限公司(运营)联合版权

深圳总部:中国.深圳市南山区深圳国际创新谷6栋B座10层 香港总部:香港上環蘇杭街49-51號建安商業大廈7樓

7×24小时服务热线:4006388808香港服务电话:+852 67031102

本网站的域名注册业务代理北京新网数码信息技术有限公司的产品

工商网监图标