容器化DevOps:从基础到实践
1. 容器化交付的背景与优势
传统应用运行步骤繁琐复杂,通常包括:
1. 配置机器和相应的基础设施资源
2. 安装操作系统
3. 安装系统程序和应用依赖
4. 部署应用
5. 维护应用的运行状态
配置管理工具虽能减少交付过程中的部分工作量,但随着应用栈变得复杂多样,维护大量配置代码变得困难,且更新安装包时可能引发依赖问题,升级配置管理工具本身也颇具挑战。
为解决这些问题,出现了使用预烘焙VM镜像的不可变部署方式。不过,这种方式成本较高,启动、分发和运行臃肿的VM镜像的开销明显大于部署包。
而容器则是满足部署需求的理想选择。容器可以在VCS中管理并构建成镜像,实现不可变部署。它具有轻量级、自包含和几乎不可变的特点,能让开发者抽象出实际资源,让基础设施工程师避免陷入依赖困境。此外,容器镜像只需打包应用及其依赖库,大小远小于VM镜像,分发成本更低,运行容器内的进程与在Linux主机上运行几乎无开销。
但由于Linux容器共享同一内核,存在一定安全风险。解决这一问题的新兴趋势包括让运行VM像操作系统容器一样简单高效(如基于unikernel的解决方案或Kata容器),以及在应用和主机内核之间插入中介层(如gVisor)。
2. 容器入门
有许多成熟的容器引擎,如Docker(https://www.docker.com )和rkt(https://coreos.com/rkt ),并且开放容器倡议(OCI,https://www.opencontainers.org )已经对容器规范进行了标准化。本书将使用Docker(社
超级会员免费看
订阅专栏 解锁全文
101

被折叠的 条评论
为什么被折叠?



