【云驻共创】像使用 Docker 一样使用 iSulad 管理容器
什么是 iSulad
iSulad
是一个轻量级的容器运行守护程序,它是为物联网和云计算基础设施而设计的。iSulad
具有轻便、快速、不受硬件规格和架构限制的特点,可以更广泛地应用。iSula /'i.zu.la/
,其原意是一种非常强大的蚂蚁,学术上称为“子弹蚁”,因为被它咬一口,犹如被子弹打到那般疼痛。iSula
是世界上强大的昆虫之一。华为容器技术方案品牌因其“小个头、大能量”的含义而取名。
iSulad
只是 iSula
其中的一个组件,iSulad
中总共包含了三个组件:
iSulad
:提供容器的全生命周期管理,北向兼容Kubernetes
的CRI
接口,南向兼容OCI
生态,本次将会介绍的容器引擎。isula-build
:容器镜像构建工具,提供快速构建容器镜像的能力。isula-transform
:容器迁移工具,提供Docker
容器冷迁移至iSulad
的能力。
用户可通过调用子系统提供的 GRPC API
与 iSulad
进行交互,有 Docker
的使用经验,和对比进行学习。
image service
: 这个有点像Docker
提供的image
服务。镜像管理服务,提供镜像相关操作,如镜像下载、查询、删除等。execution service
: 这个类似Docker
容器相关的服务。容器生命周期管理服务,提供容器的相关操作,如容器创建、启动、删除等。network
:其实和Docker
的network
功能很相似。网络子模块负责CRI
的Pod
的网络管理能力。当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 命令查看所有容器,已经没有任何返回值,此时容器列表为空,所有容器都已删除。
清理完容器后可删除镜像,执行如下命令查看镜像:
根据获取镜像的结果可以得到 REPOSITORY
和 TAG
列,执行删除镜像命令如下:
总结
iSula
是 openEuler
社区开源的容器引擎,iSula
相比 Docker
是一种新的容器解决方案,具有轻、灵、巧、快的特点,不受硬件规格和架构的限制,底噪开销更小,可应用领域更为广泛。通过上述简单的入门之后,其实能感受到,和 Docker
操作镜像和容器的操作无大差别,所以对于悉 Docker
的同学,使用起来学习成本也很低。
本文整理自华为云社区内容共创活动【内容共创系列】1024,懂你所需,予你温暖,致敬新时代可爱的程序员们,查看活动详情 华为云社区内容共创者招募。
- 点赞
- 收藏
- 关注作者
评论(0)