容器的主要应用场景

容器技术的诞生其实主要解决了PAAS的层的技术实现。像OpenStack、Cloudstack这样的技术是解

决IAAS层的问题。IAAS层和PAAS层前面已经做过介绍,关于它们的区别和特性我这里不在描述。

那么容器技术主要应用在哪些场景呢?目前主流的有以下几种:

(1)、容器化传统应用

(2)、 持续集成和持续部署 (CI/CD)

(3)、微服务

(4)、 IT 基础设施优化

容器提供了 PaaS 最核心的三个能力:

PaaS 需要什么容器提供什么
环境一致性镜像(代码+环境打包)
快速部署秒级启动(比 VM 快 10 倍)
资源隔离进程级隔离(轻量)

没有容器,PaaS 只能靠 VM,又慢又重。
有了容器,PaaS 才真正「轻」起来。

1. 容器化传统应用(你的 Rocky 上的东西)

场景描述

你现在 Rocky 上装了一堆东西:

  • Nginx(手工配的)
  • MySQL(手工装的)
  • 你的代码(手工传的)

容器化怎么做

dockerfile复制下载

# 1. 把 Nginx 打成镜像
FROM nginx:alpine
COPY ./nginx.conf /etc/nginx/nginx.conf

# 2. 把 MySQL 用官方镜像
docker run -d -v /data/mysql:/var/lib/mysql mysql:5.7

# 3. 把你的代码打包
FROM python:3.9
COPY ./app /app
RUN pip install -r requirements.txt

价值

  • 再也不用记「当年怎么装的」
  • 换台机器:docker run 直接跑
  • 版本回滚:镜像 tag 一换就回去

2. CI/CD(持续集成/持续部署)

场景描述

  • 开发写代码 → push
  • 测试环境部署 → 测试
  • 生产环境部署 → 上线

没有容器的 CI/CD

text复制下载

开发 push → Jenkins 拉代码 → 手动 scp 到测试机 → 跑测试 → scp 到生产机 → 重启服务

问题: 测试机和生产机环境不一致,测试通过上线挂。

有容器的 CI/CD

text复制下载

开发 push → Jenkins 拉代码 → build 镜像 → push 镜像仓库 
        → 测试环境 pull 镜像跑 → 测试通过 
        → 生产环境 pull 镜像跑 → 上线

关键: 测试和跑的是同一个镜像,环境 100% 一致。

你现在就能试

bash复制下载

# 在你的 Rocky 上搭个 Git + 简单 CI
# 每次 push 自动 build 镜像
# 再 pull 到 OpenCloudOS 跑

3. 微服务

场景描述

传统应用:一个大单体(LAMP)
微服务:拆成十几个小服务(用户服务、订单服务、支付服务…)

问题

  • 每个服务可能用不同语言(Java、Go、Python)
  • 每个服务需要独立部署、独立扩缩容
  • 服务之间要通信

容器的答案

[用户服务:Java]   [订单服务:Go]   [支付服务:Python]
↓ ↓ ↓
容器(Java8) 容器(Go) 容器(Python3)
↓ ↓ ↓
[Pod] [Pod] [Pod]
↓ ↓ ↓
[K8s Service 发现/负载均衡]

价值

  • 每个服务独立容器,互不干扰
  • 服务 A 扩容,服务 B 不动
  • 语言不同?容器里装各自环境

4. IT 基础设施优化

场景描述

你现在 2 台 VM:

  • Rocky:跑 Nginx + MySQL
  • OpenCloudOS:跑测试

资源利用率:低(很多时间闲置)

容器怎么优化

1 台物理机(或 VM)
    ├── 容器1(Nginx)
    ├── 容器2(MySQL)
    ├── 容器3(Redis)
    ├── 容器4(你的 App)
    ├── 容器5(测试环境)
    └── 容器6(监控)

对比

指标虚拟机(你现在)容器
每台资源2核4G × 2 = 4核8G可以跑 10+ 个容器
启动时间分钟级秒级
利用率低(每台只跑1-2个应用)高(密集部署)

你现在的硬件如果能跑容器

  • 不用再加 VM
  • 一台 Rocky 就能跑你所有服务
  • OpenCloudOS 可以专门跑 CI/CD

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注