【云驻共创】像使用 Docker 一样使用 iSulad 管理容器

举报
boyce 发表于 2021/10/25 17:36:37 2021/10/25
【摘要】 iSulad 是一个轻量级的容器运行守护程序,它是为物联网和云计算基础设施而设计的。iSulad 具有轻便、快速、不受硬件规格和架构限制的特点,可以更广泛地应用。和 Docker 操作镜像和容器的操作无大差别,所以对于悉 Docker 的同学,使用起来学习成本也很低。

什么是 iSulad

iSulad 是一个轻量级的容器运行守护程序,它是为物联网和云计算基础设施而设计的。iSulad 具有轻便、快速、不受硬件规格和架构限制的特点,可以更广泛地应用。iSula /'i.zu.la/,其原意是一种非常强大的蚂蚁,学术上称为“子弹蚁”,因为被它咬一口,犹如被子弹打到那般疼痛。iSula 是世界上强大的昆虫之一。华为容器技术方案品牌因其“小个头、大能量”的含义而取名。

iSulad 只是 iSula 其中的一个组件,iSulad 中总共包含了三个组件:

  • iSulad:提供容器的全生命周期管理,北向兼容 KubernetesCRI 接口,南向兼容 OCI 生态,本次将会介绍的容器引擎。
  • isula-build:容器镜像构建工具,提供快速构建容器镜像的能力。
  • isula-transform:容器迁移工具,提供 Docker 容器冷迁移至 iSulad 的能力。

用户可通过调用子系统提供的 GRPC APIiSulad 进行交互,有 Docker 的使用经验,和对比进行学习。

  • image service : 这个有点像 Docker 提供的 image 服务。镜像管理服务,提供镜像相关操作,如镜像下载、查询、删除等。
  • execution service: 这个类似 Docker 容器相关的服务。容器生命周期管理服务,提供容器的相关操作,如容器创建、启动、删除等。
  • network:其实和 Dockernetwork 功能很相似。网络子模块负责 CRIPod 的网络管理能力。当 Pod 启动时,通过 CNI 的接口把该 Pod 加入到配置文件制定的网络平面中;当 Pod 停止时,通过 CNI 的接口把该 Pod 从所在的网络平面中退出,并且清理相关的网络资源。

安装配置 iSulad

下面演示的操作都是在 openEuler 操作系统之上,我会假设各位同学已经配置好了 openEuler 的环境,下面开始安装 iSulad 服务。

执行以下命令安装 iSulad

yum install -y iSulad

执行以下命令,将 iSulad 的原始配置文件进行备份:

cp /etc/isulad/daemon.json /etc/isulad/daemon.json.origin

打开 iSulad 的配置文件,修改容器镜像仓库的配置参数,在 registry-mirrors 中填入 hub.oepkgs.net,执行指令如下:

如果对 vim 的还不熟悉,可以参考以下步骤,首先,按照下面的命令打开文件,然后输入键盘的 i,通过键盘将光标移到 registry-mirrors 中输入 "hub.oepkgs.net",确认已经正确输入,最后,按键盘右上角的 esc,再按 shitf+:,再输入 wq 进行退出并保存的操作。

vim /etc/isulad/daemon.json

为了能够用更加友好的方式查看 json 文件内容,安装 json 格式化工具 jq

yum install -y jq

在输出中观测到 Complete 输出,就表明已经安装成功。接下来使用 json 格式化工具查看配置的是否被更改:

cat /etc/isulad/daemon.json | jq

通过查看上图的输出,再次确认registry-mirrors 中已经有刚刚添加的 "hub.oepkgs.net",,需要重启 iSulad 服务,执行命令如下:

systemctl restart isulad

检查 iSulad 是否重启完成,可以通过执行以下命令查看 iSulad 服务启动状态,查看完毕按 q 即可退出j。

systemctl status isulad

使用 iSula 运行容器

下面使用 iSula 创建容器 openeuler:20.09,当第一次创建容器时,由于本地没有镜像,所以 iSula 会自动从仓库拉取对应的镜像。其实 iSula create 命令和 docker run 命令是一样的。执行命令如下:

isula create -it openeuler/openeuler:20.09

现在查看一下是否有正在运行的容器,这里也和 docker 中的使用方式没什么差异,执行如下命令:

isula ps

如上图所示,由于该容器已经没有在运行,因此查看的结果为空。

这时候就需要使用查看所有容器的命令,执行如下:

isula ps -a

通过上面的截图,看到了刚刚创建的容器,需要将容器 ID 或者容器的名字记录下来,这时候我们可以通过容器的 ID 或则名字再次运行这个容器,进而获取容器内部信息,启动一个停止容器的命令如下:

isula start a0887671e86e

现在我们来查看一个正在运行容器的信息,这里同样需要容器的 ID,执行如下命令,查看结果:

isula exec a0887671e86e cat /etc/os-release

当然,我们也可以使用通过如下命令,直接运行容器输出结果,如果细心的话,可以发现,这两次的输出结果其实是完全一样的。

isula run openeuler/openeuler:20.09 cat /etc/os-release

有些时候,为了快速定位问题或者校验配置,可能需要进入容器内部,想要尝试进入容器,只要在 run 命令的基础上添加 -it 参数,就可以进入容器中的交互式终端,在容器中进行操作,命令如下:

isula run -it openeuler/openeuler:20.09

如上图所示,我们已经登录到容器里面,蓝色光标前面的主机名已经发生了变化,已经由 root@ecs-isula 变成了 root@localhost

iSula 停止及清理

使用 isula 可以运行容器,运行的容器还可以被暂停、停止、移除。

首先,我们还是要查看运行中的容器列表,得到容器的 ID,才能执行针对容器的相关命令,查看执行命令如下:

isula ps -a

暂停容器进程,命令示例如下:

 isula pause b1f9511cb087

如上图所示,容器的状态已经由 Up 变为 Paused,恢复容器进程也是类似的操作,命令如下:

isula unpause b1f9511cb087

通过上图发现容器的状态又恢复为正常的运行状态。

如果不及时清理容器,也会到占用一定的空间,所以还是要及时清理不再使用的容器。删除容器需要先将其停止,停止容器执行命令如下:

此前运行中的容器已经不在正在运行的刘表中,现在就可以将其删除,执行如下命令:

isula rm b1f9511cb087

上图中可以发现,执行删除之后,返回容器了 ID,这就表明容器被正确删除,通过查询所有容器列表,被删除的容器也不在列表中。

删除镜像前需要将容器全部删除,执行指令如下:

isula rm -f $(isula ps -aq)

如上图所示,通过 ps 命令查看所有容器,已经没有任何返回值,此时容器列表为空,所有容器都已删除。

清理完容器后可删除镜像,执行如下命令查看镜像:

根据获取镜像的结果可以得到 REPOSITORYTAG 列,执行删除镜像命令如下:

总结

iSulaopenEuler 社区开源的容器引擎,iSula 相比 Docker 是一种新的容器解决方案,具有轻、灵、巧、快的特点,不受硬件规格和架构的限制,底噪开销更小,可应用领域更为广泛。通过上述简单的入门之后,其实能感受到,和 Docker 操作镜像和容器的操作无大差别,所以对于悉 Docker 的同学,使用起来学习成本也很低。

本文整理自华为云社区内容共创活动【内容共创系列】1024,懂你所需,予你温暖,致敬新时代可爱的程序员们,查看活动详情 华为云社区内容共创者招募

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。