容器技术的诞生其实主要解决了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
发表回复