---
title: 重新构建镜像
description: "容器镜像迁移完成后，需要根据迁移报告处理可兼容依赖，并将相关内容补充至输出资源包。随后在构建环境中，使用本地镜像构建工具，基于该资源包重新构建镜像。"
url: https://www.hikunpeng.com/document/detail/zh/kunpengdevps/portingadvisor/systemmigration/KunpengDevKitCli_0152.html
sourcePath: /source/zh/kunpengdevps/portingadvisor/systemmigration/KunpengDevKitCli_0152.html
indexId: a1989c3f77af5d376aa6f4a391cc4a2db5f5a356ba2a56c3477f8ac19b60a19a81
---
# 重新构建镜像

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

#### 操作步骤

1. 容器迁移完成后，会在“容器镜像包输出路径”下生成已兼容文件目录和不兼容文件目录。
图1 任务信息图2 输出文件

  - incompatible：用于存放不兼容Arm架构的文件，文件目录结构与原始镜像中的目录结构保持一致。
  - output：用于存放已兼容Arm架构的文件，文件目录结构与原始镜像中的目录结构保持一致。
2. 获取软件包。若不存在待迁移的依赖文件，可直接执行6。请根据“与架构相关的依赖文件”中“处理建议”，获取对应软件包（RPM/DEB/JAR）或者源码。
图3 与架构相关的依赖文件

  - 分析结果为“可兼容”且替换状态为“已替换”的软件包，在“output”目录下可以找到替换后的软件包文件。
  - 分析结果为“可兼容”且替换状态为“未替换”的软件包，在“incompatible”目录下可以找到对应的文件。单击“下载”，可获取对应软件包（RPM/DEB/JAR），或单击“前往社区”，下载相应源码。
  - 分析结果为“待确认”软件包，在“incompatible”目录下可以找到对应的文件，需要按照处理建议，手工处理。
3. 获取依赖文件。

  - RPM包

    - 方式一：直接安装，生成相应的依赖文件。

```
rpm -ivh
packag
e
.rpm
```


    - （推荐）方式二：解压RPM包，找到对应的依赖文件。

```
rpm2cpio
package
.rpm | cpio -idmv
```


package：表示待下载软件包名称。


  - DEB包

    - 方式一：直接安装，生成相应的依赖文件。

```
dpkg -i
package
.deb
```


    - （推荐）方式二：解压DEB包，找到对应的依赖文件。

```
dpkg-deb -x
package
.deb ./
extract_di
r
```


- package：表示待下载软件包名称。
- extract_dir：表示解压目录。


  - JAR包：直接使用下载的JAR包替换迁移环境中不兼容的JAR包。
  - 源码：单击“前往社区”，可获取源码并根据指导书进行安装，生成相应的依赖文件。
4. 使用新生成或解压得到的依赖文件替换“依赖文件存放路径”下依赖文件。
  原始镜像文件中不兼容文件存放在“incompatible”目录下，使用3得到的依赖文件，替换对应目录的待兼容文件。

5. 将相关内容补充至输出资源包。
  “incompatible”目录下所有不兼容文件均处理完成后，将所有文件合并到“output”目录下，即可得到最终的构建依赖资源文件列表。

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

  图4 Dockerfile文件
