# Islands **Repository Path**: tenshine/islands ## Basic Information - **Project Name**: Islands - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 4 - **Forks**: 0 - **Created**: 2020-09-21 - **Last Updated**: 2025-05-14 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Islands [](https://github.com/Unixeno/Islands/actions) 一个轻量级的容器管理引擎 ## 概述 一个轻量级的容器引擎,仅提供最基本的容器服务。 外部程序通过gRPC接口对镜像、卷、容器等进行操作 ## 使用方法 编译本项目前需要先安装依赖 - go 1.13+ - make 如果需要编译proto文件生成服务端和客户端代码,则还需要安装以下依赖 - protoc - protoc-gen-go 使用makefile可以编译整个项目 - make 编译,运行islands - make cmd 编译islands-cli - make build 编译整个项目 - make proto 根据protobuf文件生成go代码 - make clean 清理编译生成的可执行文件和protobuf生成代码 - make help 显示帮助信息 ## 项目组件 - island —— 容器Runtime管理器 - lode —— 镜像管理器 - guardian —— 守护人 - cmd —— 命令行工具 ## island —— 容器Runtime管理器 目前使用runc作为容器Runtime 使用方式如下: + 在这个页面下载合适的 [Binary](https://github.com/opencontainers/runc/releases) 或者代码自己编译生成 Binary。比如从这个页面下载 runc.amd64 并改名成 runc(这个 Binary 的名字一定要改成 runc) + 将这个 runc 放在 /usr/bin 目录下面 + 在终端中输入 `runc -h` 检查是否成功 ## lode —— 镜像管理器 本地镜像仓库,已支持导入docker save格式的镜像 本地镜像仓库的目录结构:
RootPath(根目录)
├── imagedb(镜像仓库信息)
│ ├── d87d8c9adef5859039a5ab84e023111512970d8006ca4684c8d03122975b40f0.json(某个镜像信息)
│ └── images.json(整个镜像仓库所存)
├── mnt(用来挂载各个镜像)
│ └── d87d8c9adef5859039a5ab84e023111512970d8006ca4684c8d03122975b40f0(要挂载的镜像id)
│ ├── merge(该镜像挂载点)
│ └── work(overlayFS的工作workdir)
└── layerdb(存放层的仓库)
├── 1d0dfb259f6a31f95efcba61f0a3afa318448890610c7d9a64dc4e95f9add843(存放某层数据的文件夹)
└── layers.json(整个层仓库的信息)
## guardian —— 守护人
控制器和daemon,负责容器生命周期的管理
## cmd —— 命令行工具
用于控制和使用islands的命令行工具
如果修改了islands的api地址,则需要在运行前通过环境变量进行指定,如
`export ISLANDS_API=unix://islands.sock`
### 支持命令
- islands run
- islands start
- islands image
- islands attach
### islands image
镜像管理
#### islands image list
#### islands image import