isulad研究测试记录

环境:
架构:aarch64
操作系统:openEuler SP1
前方路滑,辩证参考!
懵比ing,2021/12/20下午启动研究
  了解了isulad(一种容器引擎)的架构,目的似乎是为了兼容所有类型容器,如K8s容器管理平台、docker引擎创建的容器等。架构图如下,
在这里插入图片描述
图来源:https://docs.openeuler.org/zh/docs/20.03_LTS_SP1/docs/Container/iSula%E5%AE%B9%E5%99%A8%E5%BC%95%E6%93%8E.html
架构可知,LCR容器使用docker或K8s容器应用的流程如下:
1 LCR容器(可能有多个)首先和isulad容器引擎进行“感情交流"。isulad与cocker容器引擎大同小异,分为只读image镜像和可读写运行时。只读image镜像由一些服务如Content服务、Rootfs服务、Content插件、Snapshot快照插件组成;可读写运行时有Execution服务和lcr(引擎)插件以及其他自由插件。Content服务、Rootfs服务和Execution服务又被内聚为isulad服务。
2 isulad容器引擎开始通过CLI命令行、gRPC API(远程进程通信)、REST API(前后端分离但能沟通的实现,”若即若离“)的方式与K8s、docker沟通并使用它们的容器应用。

1 安装isulad,依赖安装有lcr(isulad的一种运行时)、clibcni(isula的网络组件)等。

yum install iSulad

isulad服务可以通过命令行参数或/etc/isulad/daemon.json或/etc/sysconfig/iSulad配置。
在这里插入图片描述
逐渐清晰ing,2021/12/21
明确目标:安装6个东西:iSulad、lcr、clibcni、isula-transform、stratovirt、openeuler-docker-images,前3个已经安装好。
1 安装isula-transform,没有直接可用的rpm包
1.1 安装git

yum install git -y

1.2 git克隆isula-transform代码

git clone https://gitee.com/openeuler/isula-transform.git

1.3 查看README.md提示依赖golang1.13及以后版本,lcr2.0.1及以后版本,安装编译依赖
1.3.1 查看lcr版本符合,如下图
在这里插入图片描述
1.3.2 安装golang,并查看版本符合,如下图

yum install golang -y

在这里插入图片描述
1.4 编译isula-transform

cd isula-transform
make -j8 && make install

出错如下图,缺少头文件的一般都是需要devel包,想想。
在这里插入图片描述根据错误提示找不到isula_libutils/oci_image_manifest.h,执行如下命令查看文件属于哪个包

yum provides /usr/include/isula_libutils/oci_image_manifest.h

结果如下图
在这里插入图片描述
开干!

yum install lcr-devel -y

再次编译又报差不多错误如下图
在这里插入图片描述
依葫芦画瓢,再干!

yum install yajl-devel-2.1.0-12.oe1.aarch64 -y

编译又报错误如下图!
在这里插入图片描述
葫芦七兄弟!干干干!

yum install lxc-devel-4.0.3-2020121501.oe1.aarch64 -y

终于编译成功了,我giao,如下图!
在这里插入图片描述
有请下一位!
2 git克隆stratovirt源码
2.1 git下载

git clone https://gitee.com/openeuler/stratovirt.git

2.2 安装编译依赖rust和cargo

yum install rust cargo -y

2.3 编译stratovirt源码

cd stratovirt
cargo build --release

3 下载openEuler容器镜像仓库
3.1 克隆仓库

git clone https://gitee.com/openeuler/openeuler-docker-images.git

3.2 执行下载脚本

cd openeuler-docker-images/openeuler
downlaod.sh

下载过程如下图
在这里插入图片描述
3.3 使用isula命令加载20.03-lts-sp1的基础docker镜像

isula load -i 20.03-lts-sp1/openEuler-docker.aarch64.tar.xz               //加载基础docker镜像
isula images															  //查看基础docker镜像
isula rmi e5cdd7e62f7e										  			  //移除基础docker镜像

如下图
在这里插入图片描述

3.4 使用isula命令创建20.03-lts-sp1的容器

isula create openeuler-20.03-lts-sp1                        //创建容器
isula ps -a													//查看容器
isula rm 86fb128ecd17										//移除容器

如下图
在这里插入图片描述
2021/12/22
1 启动容器,结果状态为Exited,如下图
在这里插入图片描述
2 执行如下命令查看日志,日志报错误,如下图。

systemctl status isulad

在这里插入图片描述
原因:终端错误。
解决方法:创建容器时,增加-t参数,如下命令

isula create -t e5cdd7e62f7e

2021/12/23
1 直接通过run子命令创建并运行容器,如下图

isula images                                   //查看镜像ID
isula run -td e5cdd7e62f7e                       //创建并运行容器在后台
isula ps -a                                     //查看容器状态

在这里插入图片描述
2 执行attach子命令进入容器环境,如下图
在这里插入图片描述

isula attach 44ac43a0097a 

退出环境则输入exit命令,且容器STATUS状态为Exited(127)。
若要将Exited(127)重新运行输入如下命令,如下图

isula start 44ac43a0097a 

在这里插入图片描述
3 删除运行中的容器,如下图

isula stop 44ac43a0097a 	//停止容器运行
isula rm 44ac43a0097a 		//删除容器

在这里插入图片描述
2021/12/24
参考链接:https://gitee.com/openeuler/isula-transform

一、isula-transform

2021/12/28
参考链接:https://docs.openeuler.org/zh/docs/20.03_LTS_SP2/docs/Container/%E7%B3%BB%E7%BB%9F%E5%AE%B9%E5%99%A8.html
2021/12/29
1 下载docker

yum install docker-engine.aarch64 -y

2 下载openEuler20.03下编译isula-transform的依赖

yum install golang lcr-devel yajl-devel lxc-devel -y

编译仍报错如下图
在这里插入图片描述
执行如下命令,搜索seccomp相关的包,发现需要下载libseccomp-devel

yum search seccomp
yum install libseccomp-devel -y

编译成功如下图
在这里插入图片描述
3 使用docker命令加载openEuler-docker.aarch64.tar.xz,如下图
在这里插入图片描述
4 使用isula-transform转换时报错误如下图
在这里插入图片描述
扮演沉思者ing:错误提示也讲isuladimg返回空的rootfs,原来是isulad没有加载基础镜像!
4.1 先用isula加载基础镜像,如下图

isula load -i openEuler-docker.aarch64.tar.xz

在这里插入图片描述
4.2 再用isula-transform转换,如下图
在这里插入图片描述
4.3 重启isulad服务后,即可查看isula多了容器且容器ID与docker的ID一样,如下图
在这里插入图片描述
2021/12/30
二、Isulad
isulad容器只看到lo回环网卡,所以得自己配置网络。
参考链接:https://gitee.com/openeuler/docs/blob/stable2-21.09/docs/zh/docs/Container/%E5%AE%B9%E5%99%A8%E8%B5%84%E6%BA%90%E5%8A%A8%E6%80%81%E7%AE%A1%E7%90%86.md#%E7%BD%91%E5%8D%A1%E7%AE%A1%E7%90%86

1 下载系统容器工具RPM包syscontainer-tools和网桥工具bridge-tools包

yum install syscontainer-tools-0.9-1.oe1.aarch64 bridge-tools -y

2 添加网桥isulad0并激活,如下图

brctl addbr isulad0                     //添加网桥isulad0
ip link set isulad0 up                  //激活网桥isulad0

在这里插入图片描述
3 配置网桥IP和广播地址,如下图

ip a add 10.10.0.1/16 dev isulad0 broadcast 10.10.255.255

在这里插入图片描述
4 使用syscontainer-tools给宿主机和容器间添加veth pair虚拟网卡对,结果如下图

syscontainer-tools add-nic --type "veth" --name abc2:bcd2 --ip 10.10.0.2/16 --mac 00:ff:48:13:11:11 --bridge isulad0 7bee9bf890c6

在这里插入图片描述
宿主机现象如下图
在这里插入图片描述
容器现象如下图
在这里插入图片描述
5 从宿主机复制ping命令到容器

isula cp /usr/bin/ping  7bee9bf890c6:/usr/bin

容器可ping通宿主机网桥isulad0,主机壳ping通容器10.10.0.2,但容器无法ping外网114.114.114.114,如下图
在这里插入图片描述
期间添加默认路由提示无权限,后经测试在创建容器时添加–privileged参数设为特权容器即可拥有权限。但仍无法pnig通外网114.114.114.114。
干正事了,静待有缘人!

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 7
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值