前言
当前,从应用软件、数据库,到操作系统、编译器,再到底层的芯片等,国产化替代的进程正在有条不紊地推进,也许我们现在还用不上国产自研的产品,或者认为它们不够好用,不够易用,但居安思危、未雨绸缪方可立于不败之地。核心技术是等不来、要不来、讨不来的。
容器技术简介
容器化与其他几种方式在性能上的对比
物理服务器:
- 成本高
- 资源拓展难
- 移植、部署成本高
虚拟机:
- 启动时间长
- 资源消耗大
容器:
- 开销更小
- 轻松部署
- 环境标准
- 具备版本控制
虚拟机和容器在架构设计上的对比
下图为虚拟机:
下图为容器:
容器技术的一些概念及性质
- 容器技术:创建隔离环境,方便高效打包和分发应用
- 镜像:运行不依赖于外部环境
- 运行时:生命周期管理
- CRI(Container Runtime Interface):基于grpc、runtime、image,监听本地Unix socket
client:k8s的kubelet
- CNI(Container Runtime Interface):由Google和CoreOS主导制定,采用json格式
通过网络插件实现容器网络具体的功能
容器技术的发展
iSula
一个类似Docker的容器管理工具,与Docker相比:
- 启动速度更快
- 单个节点占有空间更大
- 适合IOT、边缘计算等场景及业务
- 用C++编写,轻灵巧快,原生支持CRI、对接k8s
所使用到的工具有:
- build(负责镜像构建、管理、分发) Dockerfile
- transform 、syscontainer-tools 等等
整体架构
以下是iSula的整体架构图:
相关技术名词
架构原理及特点
- 进程独立rootfs运行,受namespace隔离,cgroups资源限制。
- 对于每一条指令,都做了如下事情:
创建RW层-> 指令完成runtime config-> 建容器 -> 容器退出 ->RW commit为镜像 - 仅RUN需要在容器中进行,其余可在主机侧
- 调用链由docker的4层缩短为两层:
build -> runc -> container
IMA(integrity Measurement Architecture)
- 度量对象:系统调用访问的文件(execve、mmap、open)
- 性质:Linux内核的子系统
- 原理:利用文件增强拓展属性存储校验值
IMA Digest Lists已落地欧拉20.09
镜像驱动
overlay1/2/device mapper
联合挂载
- 写时复制隐式共享
- 数据目录冲突则覆盖
namespace
- UTS:隔离主机名与域名
- IPC:进程通信
- Mount:挂载点
- network:网络设备、ip、端口
- PID:进程id空间
- User:用户uid、gid...
- Cgroup:限制、控制、分离进程组资源
- Time:时间管理
关于部署使用: iSula作为Docker的国产化替代,其部署的步骤、使用的命令和Docker相似,此处不再赘述。感兴趣的读者可以参考官网相关手册进行学习。