1、CloudOS2.0版本:1139H06
CloudOS2.0版本对应的CAS版本:0526H11
2、CloudOS3.0 版本:3106H01
CloudOS3.0版本对应的CAS版本:0530H11
一、CloudOS 2.0版本容器固化步骤
这里以修改cloudos-openstack镜像为例。
1、备份镜像
使用“docker ps | grep cloudos-openstack”查看关键字为cloudos-openstack容器。
图1 查找对应容器
查找需要修改的镜像文件,使用tag命令对标签为“E113906”的cloudos-openstack镜像进行备份,备份后的标签为E113906bak。输入“docker images | grep cloudos-openstack”查看到备份的镜像和原镜像大小相同。
图2 找到目标镜像,备份镜像
2、去除原镜像标签
在备份完镜像后,使用“docker rmi cloudos-openstack:E1139H06” 去除原镜像的标签。命令查看验证原来镜像的标签已经被成功去除。
图3 删除原镜像标签
3、制作新镜像
查询对应的容器,根据容器id,使用“docker exec –it [容器id] bash”命令进入容器。将/root/scripts/目录下的pre-install.sh拷贝至本地/opt/openstack-transfer。
图4 进入对应容器,找到目标文件
图5 将目标文件拷贝至本地
退出容器,在/root/下新建文件夹,命名为guhua,并将刚才/opt/openstack-transfer目录下的pre-install.sh拷贝至/root/guhua/下,再进行修改。
图6 将目标文件拷贝至/root/guhua/下
拷贝后,验证是否拷贝成功。
图7 检验拷贝是否成功
通过“vi pre-install.sh”修改文件,使用“/openstack-cinfig”进行关键字搜索。
图8 使用vi命令关键字搜索
搜索的第一次结果如图。
图9 第一次搜索结果
多次检索后,找到要修改的位置,将firewall_type从CGSR修改为GATEWAY,将lb_type 从CGSR修改为SERVICE_CHIAN,将resource_mode从CORE_GATEWAY修改为 NFV。
图10 pre-install.sh修改前
图11 pre-install.sh修改后
创建dockerfile文件(即图中的dockerfileopenstackbuild.txt)来新建镜像。
图12 创建dockerfile文件
这里的dockerfile规定了:FROM是指明当前新镜像是基于哪个镜像的;USER表示用户为root;COPY表示拷贝文件和目录到镜像中,这里是将当前目录下修改后的pre-install.sh拷贝至/root/scripts目录下。
图13 dockerfile修改内容
检查刚刚创建的dockerfile文件是否正确。
图14 检验dockerfile文件
通过“docker build”命令构建新的镜像,成功后显示“Successfully built [新镜像id]”。
图15 新建镜像
查看是否新增镜像。
图16 查看是否新增镜像
4、删除当前容器
查找当前openstack容器,获得容器名称“openstackrc”,并进行删除。
图17 查找当前容器
检查容器是否已经删除成功,可以看到,已经没有“openstackrc”。
图18 检查容器删除是否成功
5、使用新镜像创建容器
重新创建容器前需要先检查openstack-rc.yaml文件中的image字段是否与上一步build出来的tag一致。
图19 找到openstack-rc.yaml文件
从图中可以看到,openstack-rc.yaml文件中的image字段与上一步build出来的tag一致,镜像信息为cloudos-openstack:E1139H06。
图20 检验文件中镜像的tag
通过“/opt/bin/kubectl --server=127.0.0.1:8888 create –f /opt/bin/conFile/openstack-rc.yaml”创建新容器。
图21 创建新容器
查看是否拉起openstack的docker,以及其运行状态是否为正常的Running状态。
图22 看容器是否拉起,正常运行
6、查看容器固化操作是否成功
通过查找对应容器id进入cloudos-openstack容器,检验对应的参数是否固化。
图23 查找并进入目标容器
找到/root/scripts/下的pre-install.sh找到刚刚修改的位置,可以看到,参数和修改时一样,即固化成功。
图24 找到目标文件
图25 查看是否固化成功
二、CloudOS 3.0版本容器固化步骤
这里以修改cloudos-openstack-sahara镜像为例。
1、修改镜像文件
查找要修改的容器镜像,这里选择cloudos-openstack-sahara,进入该容器。
图26 找到目标容器并进入
找到该容器的/root/scripts/目录下的health-check.sh,将该文件拷贝至本地/opt/openstack-transfer/sahara/目录下。
图27 找到目标文件,拷贝至本地
对该文件进行修改,如图中新增一行注释,写上“#hello”。
图28 修改目标文件
检验修改是否成功。
图29 检验修改是否成功
退出容器,查找到/opt/openstack-transfer/sahara/目录下的health-check.sh,可以看到是刚才修改的文件。
图30 本地目录下检验修改的文件
2、利用固化工具替换镜像
将修改后的health-check.sh拷贝到固化工具(固化工具事先拷贝至/root/下,并进行解压)解压出来的目录/root/update_image/patchs/replace_files/files/目标文件在镜像中的目录,在该示例中为/root/update_image/patchs/replace_files/files/root/scripts/。
图31 将目标文件拷贝至特定目录
查找要替换文件的镜像名称和镜像的tag。如图中本地镜像cloudos-openstack-sahara,tag为E3107-V300R001B01D030SP01-RC4。然后进入/root/update_image目录,使用 “sh main.sh [镜像名称]:[镜像tag] patchs/replace_files/”命令执行替换镜像文件脚本。
图32 执行替换镜像脚本
执行完成后会进行二次确认,输入“Y”则开始执行脚本。
图33 替换镜像过程
最终显示镜像替换完成。
图34 替换镜像成功
3、查看容器固化操作是否成功
使用“pod | grep [镜像名称]”命令查找由该镜像启动的pod。图中所示“59s”表示该容器是59秒前创建的。
图35 查看新建镜像
进入容器中,找到/root/scripts/目录下目标文件health-check.sh,查看文件是否替换成功。使用cat命令查看,如图,可以看到之前增加的注释“#hello”,说明容器固化操作成功。
图36 查看容器固化是否成功
1、在CloudOS2.0版本中使用“docker rmi cloudos-openstack:E1139H06”命令并没有风险,该命令只是去除原镜像的标签,并没有将原镜像删除,因此只要记住原镜像的名称和uuid即可。
该案例暂时没有网友评论
✖
案例意见反馈
亲~登录后才可以操作哦!
确定你的邮箱还未认证,请认证邮箱或绑定手机后进行当前操作