iSulad is a light weight container runtime daemon which is designed for IOT and Cloud infrastructure.
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 4 年前 | ||
| 5 个月前 | ||
| 4 年前 | ||
| 6 个月前 | ||
| 1 年前 | ||
| 3 年前 | ||
| 2 个月前 | ||
| 3 个月前 | ||
| 2 年前 | ||
| 6 年前 | ||
| 5 年前 | ||
| 5 个月前 | ||
| 2 年前 | ||
| 5 个月前 | ||
| 5 个月前 | ||
| 4 年前 | ||
| 6 年前 | ||
| 7 个月前 | ||
| 10 个月前 | ||
| 7 个月前 | ||
| 3 年前 |
Introduction
iSulad是一个由C/C++编写实现的轻量级容器引擎,具有轻、灵、巧、快的特点,不受硬件规格和架构限制,底噪开销更小,可应用的领域更为广泛。
Architecture
iSulad架构的相关介绍请查看:architecture。
Function
Runtime
iSulad支持多种容器runtime,包括lxc、runc和kata。
lxc
lxc是用C语言编写的开源容器操作runtime,资源占用少,适用于对底噪资源限制高的场景,为iSulad默认的runtime。
runc
runc是用GO语言编写的符合OCI标准的runtime,使用runc时要求其使用的OCI runtime-spec version不低于iSulad支持的oci spec version 1.0.0。
kata-runtime
kata-runtime是一个安全容器runtime,用于启动安全容器时使用。
Image
iSulad支持多种镜像格式,包括OCI标准镜像格式和external rootfs镜像格式。
OCI
OCI标准镜像格式是与docker兼容的镜像格式,支持从远程镜像仓库拉取镜像、运行容器。
external rootfs
external rootfs镜像格式允许用户自行准备可启动的root fs目录,主要用于系统容器场景。
Operation Interface
iSulad提供两种不同的镜像和容器管理操作接口,分别为CLI和CRI。
CLI
CLI采用命令行的形式进行镜像和容器管理,是标准的C/S架构模式,将iSulad作为daemon服务端,iSula作为独立的客户端命令,供用户使用。
iSula提供的命令参数覆盖了常用的大部分应用场景,包括容器的操作接口,如运行、停止、删除、pause等操作,也包括镜像的相关操作,如下载、导入、删除等。
CRI
CRI(Container Runtime Interface)是由K8S对外提供的容器和镜像的服务接口,供容器引擎接入K8s。
CRI接口基于gRPC实现。iSulad遵循CRI接口规范,实现 CRI gRPC Server,CRI gRPC Server 中包括 Runtime Service 和 image Service,分别用来提供容器运行时接口和镜像操作接口。iSulad的 gRPC Server 需要监听本地的Unix socket,而K8s的组件 kubelet 则作为 gRPC Client 运行。
Getting Started
快速链接
开发环境设置
前置要求
- 操作系统: Linux (内核 3.0.x+)
- 构建工具: CMake (2.8+), GCC/G++ (支持 C++11/17)
- 依赖项: 详细要求请参考构建指南
快速设置
-
克隆仓库:
git clone https://gitee.com/openeuler/iSulad.git cd iSulad -
安装依赖 (openEuler):
sudo dnf builddep iSulad.spec -
从源码构建:
mkdir build && cd build sudo -E cmake .. sudo -E make sudo -E make install
其他发行版的安装方法,请参考开发指南。
详细的 IDE 配置、代码格式化和静态分析说明,请参考开发指南。
Installing
iSulad可以使用yum命令进行安装,安装之前需要查看确保配置了openEuler仓库:
$ cat << EOF > /etc/yum.repos.d/openEuler.repo
[openEuler]
baseurl=https://repo.openeuler.org/openEuler-22.03-LTS/OS/\$basearch
enabled=1
EOF
用yum安装iSulad的命令如下:
$ yum install -y iSulad
若运行安装命令后报如下错误:
Repository 'openEuler' is missing name in configuration, using id.
You have enabled checking of packages via GPG keys. This is a good thing.
However, you do not have any GPG public keys installed. You need to download
the keys for packages you wish to install and install them.
You can do that by running the command:
rpm --import public.gpg.key
Alternatively you can specify the url to the key you would like to use
for a repository in the 'gpgkey' option in a repository section and YUM
will install it for you.
For more information contact your distribution or package provider.
则需要先运行rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-openEuler。
Configure
成功安装iSulad之后,需要先配置好容器镜像的注册地址,以"docker.io"为例:
# cat /etc/isulad/daemon.json
....
"registry-mirrors": [
"docker.io"
],
....
注意: 修改配置后,需要重启 iSulad 服务:
$ sudo systemctl restart isulad
Run
iSulad提供了两种服务的启动方式:
- 使用
systemd服务来启动iSulad
# 通过systemd命令来重启isulad服务
$ systemctl restart isulad
- 直接使用命令启动
iSulad
# 使用默认套接字名称、默认日志级别和镜像管理功能启动isulad
$ sudo isulad
Operations on containers
iSulad 提供了两个管理镜像和容器的操作接口:CLI和CRI。
CLI
iSulad使用 iSula 作为客户端命令,以下是利用CLI接口管理容器的一些基本命令:
- 列出当前环境下的所有容器:
$ sudo isula ps -a
-
通过
busybox镜像创建容器:- 采用默认的runtime创建容器
test
$ sudo isula create -t -n test busybox- 创建runtime为runc的容器
testrunc
$ sudo isula create -t --runtime runc -n testrunc busybox - 采用默认的runtime创建容器
-
启动容器
test:
$ sudo isula start test
- 停止容器
test:
$ sudo isula kill test
- 移除容器
test
$ sudo isula rm test
CRI
iSulad可以通过CRI接口与kubernetes集成,如何与kubernetes集成请参考k8s_integration。
Performance
采用ptcr作为容器引擎的性能测试工具,展示在不同架构的计算机中iSulad的性能效果。
ARM
- 10个容器串行操作的情况下,
iSula与docker、podman的性能对比雷达图如下:

- 100个容器并行操作的情况下,
iSula与docker、podman的性能对比雷达图如下:

X86
- 10个容器串行操作的情况下,
iSula与docker、podman的性能对比雷达图如下:

- 100个容器并行操作的情况下,
iSula与docker、podman的性能对比雷达图如下:

关于性能测试的更多信息请查看 Performance test。
Kernel Requirements
iSulad支持在3.0.x之后的Kernel上运行。
Compatibility
iSulad 能够兼容的标准规范版本如下:
- 兼容 1.0.0 版本的OCI
- 兼容 0.3.0-1.0.0 版本的CNI,iSulad从2.1.4版本后支持 CNI 1.0.0版本
- 兼容 2.1.x 版本以上的lcr
Kubernetes Support
iSulad提供对Kubernetes 1.13 版本以上的支持。以下表格显示了 iSulad 与 Kubernetes 之间的兼容性。它给出了指定Kubernetes版本下所需要的最低 iSulad 版本。
| iSulad 版本 | Kubernetes 版本 | CRI 版本 |
|---|---|---|
| v2.0.0+ | v1.13-v1.18 | v1alpha2 |
| v2.0.8+ | v1.19-v1.22 | v1alpha2 |
| v2.1.4+ | v1.23-v1.29 | v1, v1alpha2 |
贡献指南
我们欢迎您的贡献!请参考:
提交 PR 前:
- 运行
./tools/static_check.sh -i检查您的更改 - 确保所有测试通过
- 如需要,更新相关文档