工程化Docker技术征文 | 浅谈Docker的国产化替代iSula

3,563 阅读2分钟

前言

当前,从应用软件、数据库,到操作系统、编译器,再到底层的芯片等,国产化替代的进程正在有条不紊地推进,也许我们现在还用不上国产自研的产品,或者认为它们不够好用,不够易用,但居安思危、未雨绸缪方可立于不败之地。核心技术是等不来、要不来、讨不来的。

容器技术简介

容器化与其他几种方式在性能上的对比

物理服务器:

  • 成本高
  • 资源拓展难
  • 移植、部署成本高

虚拟机:

  • 启动时间长
  • 资源消耗大

容器:

  • 开销更小
  • 轻松部署
  • 环境标准
  • 具备版本控制

虚拟机和容器在架构设计上的对比

下图为虚拟机: image.png

下图为容器: image.png

容器技术的一些概念及性质

  • 容器技术:创建隔离环境,方便高效打包和分发应用
  • 镜像:运行不依赖于外部环境
  • 运行时:生命周期管理
  • CRI(Container Runtime Interface):基于grpc、runtime、image,监听本地Unix socket

client:k8s的kubelet

  • CNI(Container Runtime Interface):由Google和CoreOS主导制定,采用json格式

通过网络插件实现容器网络具体的功能

容器技术的发展

image.png

iSula

一个类似Docker的容器管理工具,与Docker相比:

  • 启动速度更快
  • 单个节点占有空间更大
  • 适合IOT、边缘计算等场景及业务
  • 用C++编写,轻灵巧快,原生支持CRI、对接k8s

所使用到的工具有:

  • build(负责镜像构建、管理、分发) Dockerfile
  • transform 、syscontainer-tools 等等

整体架构

以下是iSula的整体架构图:

image.png

相关技术名词

架构原理及特点

  • 进程独立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相似,此处不再赘述。感兴趣的读者可以参考官网相关手册进行学习。