容器化的好处

2023-08-03 00:02:11 浏览数 (1)

容器化,是指使用容器技术(Docker/containerd等)运行应用程序(容器),并使用容器编排技术(例如 K8s)来管理这些容器。

我在之前的文章 [《使用 Dockerfile 构建生产环境镜像》](https://imlht.com/archives/236/) 提及普通的虚拟机部署存在的问题:

> 为什么有这篇文章,是因为我在真正做容器化改造的时候,发现公司生产环境存在大量的坑:

>

> * 传统虚拟机部署,基本依赖克隆或者手工编译。由于人力原因,SRE 历来单传,编译出来的 PHP、扩展等二进制版本不一致;

> * 项目开发人员痛苦不堪——他没办法模拟出接近于线上一致的环境(碰不到摸不着,各种扩展版本都要自己去编译);

> * 新人入职都会灵魂拷问你一句——我怎么把线上的代码跑起来?

> * ……

另外,传统的虚拟机部署,还存在成本浪费——虚拟机无法做到容器的资源隔离和扩缩容,资源利用率不高。

所以我们可以发现,有以下几点好处:

#### 一、环境的高度一致性

- 容器需要制作镜像文件,描述环境的构建过程,也就意味着它可以保证环境的高度一致

- 无论本地环境或者生产环境,由于 Dockerfile 的存在,不同的操作系统也可以兼容

- 高度一致性带来了环境的统一,统一的环境有利于 CI/CD 流程,结合自动化技术提升效率

#### 二、资源隔离

- 以往虚拟机容易因为混合部署,而某些应用耗费内存过大,导致程序 OOM 崩溃,而容器由于资源隔离,不会互相影响

- 合理分配每个容器的资源,有利于提高资源利用率,降低资源成本

- 通过 Linux Cgroups 技术(Linux Control Group)限制资源上限;通过 Linux NameSpace 机制修改进程看到的外部资源的 “视图”

#### 三、轻量级

- 相比虚拟机,容器启动速度在秒级别

- 容器为进程,通过 Linux NameSpace 机制和 unionFS,使得进程本身看起来好像拥有一个隔离的环境和文件系统(实际上还是宿主机的一个进程)

容器化是未来的一大趋势!让我们拥抱云原生吧!

---

> 文章来源于本人博客,发布于 2022-11-05,原文链接:[https://imlht.com/archives/407/](https://imlht.com/archives/407/)

0 人点赞