• Stars
    star
    302
  • Rank 138,030 (Top 3 %)
  • Language
    C
  • Created over 4 years ago
  • Updated over 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

[mirror]A light weight container runtime daemon for IOT and Cloud infrastructure.

中文版入口

iSulad

license language

Introduction

iSulad , written in C/C++, is a lightweight container engine that has the advantage of being light, fast and applicable to multiple hardware specifications and architecture. iSulad has a wide application prospect.

Architecture

You can see iSulad architecture in architecture.

Function

Runtime

iSulad support multiple container runtimes, including lxc、runc and kata.

lxc

lxc is an open-source container runtime written in C , which occupies less resources and is suitable for scenarios with high restrictions on noise floor resources. It is the default runtime of iSulad.

runc

runc is an OCI-compliant runtime written in GO. When users use runc, the OCI runtime-spec version is required to be at least 1.0.0.

kata-runtime

kata-runtime start secure containers with lightweight virtual machines.

Image

iSulad supports multiple image formats, including OCI, external rootfs and embedded image.

OCI

OCI is a docker-compatible image format that supports pulling images and running containers from remote image repositories.

external rootfs

External rootfs allows users to prepare a bootable root fs directory, which is mainly used in system container scenarios.

embedded image

Embedded image is a unique embedded image format of iSulad, which occupies low resources and is mainly used in embedded application scenarios.

Operation Interface

iSulad provides two different interfaces for image and container management operations: CLI and CRI.

CLI

CLI uses the command line to manage images and containers. It is a standard C/S architecture model. iSula performs as an independent command line client that talks to the iSulad daemon.

The commands provided by iSula cover most of the common application scenarios, including the operation interface of the container, such as run, stop, rm, pause, etc, as well as the related operations of the image, such as pull, import, rmi, etc.

CRI

CRI (Container Runtime Interface) implementer can work seamlessly with K8s.

CRI interface is implemented based on gRPC. iSulad implemented CRI gRPC Server following CRI interface standards. CRI gRPC Server includes runtime service and image service, which are used to provide container runtime interface and image operation interface respectively. CRI gRPC Server listen on a local unix socket, and the K8s component kubelet runs as a gRPC Client.

Getting Started

Installing

To install iSulad, you can use yum package manager command with openEuler repository.

Or write repository file by hand:

$ cat << EOF > /etc/yum.repos.d/openEuler.repo
[openEuler]
baseurl=https://repo.openeuler.org/openEuler-22.03-LTS/OS/\$basearch
enabled=1
EOF

Install iSulad with yum:

$ yum install -y iSulad

if you found this error

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.

you should run rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-openEuler first.

Configure

Configure the container image registry address, for example "docker.io" or other registry addrss.

# cat /etc/isulad/daemon.json
.....
    "registry-mirrors": [
        "docker.io"
    ],
.....

Run

iSulad provides two ways to start the isulad:

  1. Use systemd service to start iSulad:
# restart the server with systemd command
$ systemctl restart isulad 
  1. Use direct command to start iSulad:
# run the server with default socket name and default log level and images manage function
$ sudo isulad 

Operations on containers

iSulad provides two operation interfaces for managing images and containers: CLI and CRI.

CLI

CLI, iSulad provides isula as client CLI

Here are some sample commands to manager containers.

  • List all containers in your own environment:
$ sudo isula ps -a
  • Create a container with busybox:

    • You can create container test with default runtime:
    $ sudo isula create -t -n test busybox
    • You also can create container testrunc with runc runtime:
    $ sudo isula create -t --runtime runc -n testrunc busybox
  • Start this container test:

$ sudo isula start test
  • Kill the container test:
$ sudo isula kill test
  • Remove the container test:
$ sudo isula rm test

CRI

iSulad can be integrated with kubernetes through the CRI interface. For integrating with kubernetes, please refer to k8s_integration.

Performance

Using ptcr as a performance test tool , it shows the performance of iSulad in computers with different architectures.

ARM

  • For searially with 10 containers, the performance radar chart of iSula, docker, podman is as follows:

ARM searially

  • For parallerlly with 100 containers, the performance radar chart of iSula, docker, podman is as follows:

ARM parallerlly

X86

  • For searially with 10 containers, the performance radar chart of iSula, docker, podman is as follows:

X86 searially

  • For parallerlly with 100 containers, the performance radar chart of iSula, docker, podman is as follows:

X86 parallerlly

More information can get from: Performance test

Kernel Requirements

iSulad runs on Kernels above 3.0.x.

Compatibility

The standard specification versions that iSulad is compatible with are as follows:

  • Compatible with OCI 1.0.0.
  • Compatible with CNI 0.3.0 and above.
  • Compatible with lcr 2.1.x and above.

More Repositories

1

stratovirt

Rust
356
star
2

nestos-kubernetes-deployer

Go
104
star
3

kernel

42
star
4

RISC-V

Shell
17
star
5

bishengjdk-8

Java
14
star
6

isula-build

Go
14
star
7

KubeOS

Go
11
star
8

community

Python
9
star
9

rust_shyper

Rust
8
star
10

secGear

OCaml
8
star
11

itrustee_sdk

C
6
star
12

gazelle-cni

6
star
13

openeuler-docker-images

Shell
6
star
14

A-Tune

[mirror] An OS tuning engine based on AI.
Go
6
star
15

rubik

Go
4
star
16

libcareplus

C
4
star
17

fastblock

C++
4
star
18

bishengjdk-11

Java
4
star
19

A-Ops

Python
3
star
20

gala-gopher

C
3
star
21

compass-ci

Ruby
3
star
22

arkui-linux

C++
3
star
23

openstack

Python
3
star
24

itrustee_client

C
3
star
25

openeuler-os-build

Roff
3
star
26

dpu-core

Shell
3
star
27

dim

C
3
star
28

open-eBackup

2
star
29

openeuler-obs

Python
2
star
30

openeuler-jenkins

Python
2
star
31

raspberrypi

Shell
2
star
32

release-management

2
star
33

bishengjdk-17

Java
2
star
34

PilotGo

Go
2
star
35

process1

Rust
2
star
36

gala-spider

Python
2
star
37

cve-manager

Go
2
star
38

btfhub-archive

2
star
39

eulerlauncher

Python
2
star
40

lboot

Rust
2
star
41

memory-scan

C
2
star
42

gala-docs

2
star
43

AvxToNeon

C
2
star
44

openEuler-Advisor

Python
2
star
45

easybox

Rust
2
star
46

libxml2-rust

C
2
star
47

lfs-course

Python
2
star
48

docs

2
star
49

bgmprovider

Java
2
star
50

gazelle

C
2
star
51

wsl

Shell
1
star
52

attest-tools

C
1
star
53

wisdom-advisor

Rust
1
star
54

pkgship

Python
1
star
55

bounds_checking_function

C
1
star
56

gitbook-theme-hugo

JavaScript
1
star
57

raspberrypi-kernel

1
star
58

website-v2

Vue
1
star
59

lcr

C
1
star
60

A-Tune-Collector

Python
1
star
61

tp-libvirt

Python
1
star
62

iSulad-img

Go
1
star
63

oec-hardware

Python
1
star
64

bigdata

1
star
65

chaosArsenal

Go
1
star
66

qingzhou

Java
1
star
67

gala-anteater

Python
1
star
68

secpaver

Go
1
star
69

oncn-bwm

C
1
star
70

libboundscheck

C
1
star
71

secDetector

C
1
star
72

ft_engine

C++
1
star
73

safeguard

C
1
star
74

CuckooSQL

1
star
75

X-diagnosis

C
1
star
76

release-tools

Python
1
star
77

intel-lkvs

1
star
78

oemaker

Shell
1
star
79

distributed-codelabs

C++
1
star
80

unizip

C
1
star
81

CTinspector

C
1
star
82

eulerpublisher

Python
1
star
83

opensd

Python
1
star
84

Intel-kernel

C
1
star
85

UniProton

C
1
star
86

libwd

C
1
star
87

auto_py2to3

Python
1
star
88

tarsier

1
star
89

syscontainer-tools

Go
1
star
90

gala-ragdoll

1
star
91

wayca-scheduler-bench

Shell
1
star
92

aops-apollo

Python
1
star
93

sync-config

This is a repository for sync configuration
1
star
94

itrustee_tzdriver

C
1
star
95

distributed-beget

1
star