重新构建镜像
容器镜像迁移完成后,需要根据迁移报告处理可兼容依赖,并将相关内容补充至输出资源包。随后在构建环境中,使用本地镜像构建工具,基于该资源包重新构建镜像。
操作步骤
- 容器迁移完成后,会在“容器镜像包输出路径”下生成已兼容文件目录和不兼容文件目录。图1 任务信息
图2 输出文件
- incompatible:用于存放不兼容Arm架构的文件,文件目录结构与原始镜像中的目录结构保持一致。
- output:用于存放已兼容Arm架构的文件,文件目录结构与原始镜像中的目录结构保持一致。
- 获取软件包。若不存在待迁移的依赖文件,可直接执行6。
请根据“与架构相关的依赖文件”中“处理建议”,获取对应软件包(RPM/DEB/JAR)或者源码。
图3 与架构相关的依赖文件
- 分析结果为“可兼容”且替换状态为“已替换”的软件包,在“output”目录下可以找到替换后的软件包文件。
- 分析结果为“可兼容”且替换状态为“未替换”的软件包,在“incompatible”目录下可以找到对应的文件。单击“下载”,可获取对应软件包(RPM/DEB/JAR),或单击“前往社区”,下载相应源码。
- 分析结果为“待确认”软件包,在“incompatible”目录下可以找到对应的文件,需要按照处理建议,手工处理。
- 获取依赖文件。
- RPM包
- 方式一:直接安装,生成相应的依赖文件。
rpm -ivh package.rpm
- (推荐)方式二:解压RPM包,找到对应的依赖文件。
rpm2cpio package.rpm | cpio -idmv
package:表示待下载软件包名称。
- 方式一:直接安装,生成相应的依赖文件。
- DEB包
- 方式一:直接安装,生成相应的依赖文件。
dpkg -i package.deb
- (推荐)方式二:解压DEB包,找到对应的依赖文件。
dpkg-deb -x package.deb ./extract_dir
- package:表示待下载软件包名称。
- extract_dir:表示解压目录。
- 方式一:直接安装,生成相应的依赖文件。
- JAR包:直接使用下载的JAR包替换迁移环境中不兼容的JAR包。
- 源码:单击“前往社区”,可获取源码并根据指导书进行安装,生成相应的依赖文件。
- RPM包
- 使用新生成或解压得到的依赖文件替换“依赖文件存放路径”下依赖文件。
原始镜像文件中不兼容文件存放在“incompatible”目录下,使用3得到的依赖文件,替换对应目录的待兼容文件。
- 将相关内容补充至输出资源包。
“incompatible”目录下所有不兼容文件均处理完成后,将所有文件合并到“output”目录下,即可得到最终的构建依赖资源文件列表。
- 重新构建镜像。
基于容器迁移结果中的Dockerfile文件和构建依赖资源文件,使用docker build命令重新打包兼容Arm架构的镜像文件。
图4 Dockerfile文件
父主题: 常用操作