开发者
资源
我要评分
获取效率
正确性
完整性
易理解
在线提单
论坛求助

重新构建镜像

容器镜像迁移完成后,需要根据迁移报告处理可兼容依赖,并将相关内容补充至输出资源包。随后在构建环境中,使用本地镜像构建工具,基于该资源包重新构建镜像。

操作步骤

  1. 容器迁移完成后,会在“容器镜像包输出路径”下生成已兼容文件目录和不兼容文件目录。
    图1 任务信息
    图2 输出文件
    • incompatible:用于存放不兼容Arm架构的文件,文件目录结构与原始镜像中的目录结构保持一致。
    • output:用于存放已兼容Arm架构的文件,文件目录结构与原始镜像中的目录结构保持一致。
  2. 获取软件包。若不存在待迁移的依赖文件,可直接执行6

    请根据“与架构相关的依赖文件”“处理建议”,获取对应软件包(RPM/DEB/JAR)或者源码。

    图3 与架构相关的依赖文件
    • 分析结果为“可兼容”且替换状态为“已替换”的软件包,在“output”目录下可以找到替换后的软件包文件。
    • 分析结果为“可兼容”且替换状态为“未替换”的软件包,在“incompatible”目录下可以找到对应的文件。单击“下载”,可获取对应软件包(RPM/DEB/JAR),或单击“前往社区”,下载相应源码。
    • 分析结果为“待确认”软件包,在“incompatible”目录下可以找到对应的文件,需要按照处理建议,手工处理。
  3. 获取依赖文件。
    • 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包。
    • 源码:单击“前往社区”,可获取源码并根据指导书进行安装,生成相应的依赖文件。
  4. 使用新生成或解压得到的依赖文件替换“依赖文件存放路径”下依赖文件。

    原始镜像文件中不兼容文件存放在“incompatible”目录下,使用3得到的依赖文件,替换对应目录的待兼容文件。

  5. 将相关内容补充至输出资源包。

    “incompatible”目录下所有不兼容文件均处理完成后,将所有文件合并到“output”目录下,即可得到最终的构建依赖资源文件列表。

  6. 重新构建镜像。

    基于容器迁移结果中的Dockerfile文件和构建依赖资源文件,使用docker build命令重新打包兼容Arm架构的镜像文件。

    图4 Dockerfile文件