Skip to content

Latest commit

 

History

History
139 lines (95 loc) · 4.8 KB

使用Docker构建镜像.md

File metadata and controls

139 lines (95 loc) · 4.8 KB

描述

本文介绍了如何使用 Docker 来运行 rockchip 的 openEuler 构建框架。

准备环境

  • 操作系统:openEuler, CentOS, Ubuntu, Debian
  • 架构:aarch64, x86_64

安装 Docker 及 qemu-user-static-aarch64

openEuler/CentOS

dnf makecache
dnf install docker -y

如果是 aarch64 架构的构建主机,可以跳过以下步骤;如果是 x86_64 架构的构建主机,则还需要执行以下步骤来安装 qemu-user-static-aarch64

wget https://dl.fedoraproject.org/pub/fedora/linux/releases/40/Everything/x86_64/os/Packages/q/qemu-user-static-aarch64-8.2.2-1.fc40.x86_64.rpm

rpm -ivh qemu-user-static-aarch64-8.2.2-1.fc40.x86_64.rpm

Debian/Ubuntu

apt-get update
apt-get install docker.io -y

如果是 aarch64 架构的构建主机,可以跳过以下步骤;如果是 x86_64 架构的构建主机,则还需要执行以下步骤来安装 qemu-user-static

apt-get install qemu-user-static -y

拉取 openEuler Docker 镜像

docker pull --platform=linux/arm64 openeuler/openeuler:22.03-lts
  • --platform=linux/arm64 的意思是拉取 arm64 的镜像,如果在 x86_64 架构的构建主机上进行拉取的话,需要软件 QEMU 来模拟运行。

  • openeuler/openeuler 对应的 tag 22.03-lts 可以在以下页面查阅:

    https://hub.docker.com/r/openeuler/openeuler

执行以上命令的输出如下:

[root@localhost ~]# docker pull --platform=linux/arm64 openeuler/openeuler:22.03-lts
22.03-lts: Pulling from openeuler/openeuler
69c9100b5f7b: Pull complete 
249b19ca6efa: Pull complete 
Digest: sha256:ce16fc3edbd44ca0dcbc3d5c01f8e09242c7e73471f18b948d0add0f180d1a17
Status: Downloaded newer image for openeuler/openeuler:22.03-lts
docker.io/openeuler/openeuler:22.03-lts

运行 openEuler Docker 容器

docker run --privileged --name openEuler-2203-aarch64 -it openeuler/openeuler:22.03-lts
  • --privileged 表示以特权模式运行,因为构建过程包括镜像的分区和挂载,需要启用特权模式。
  • --name openEuler-2403-aarch64 将镜像的名字设置为 openEuler-2403-aarch64。
  • openeuler/openeuler:22.03-lts 表示运行之前拉取的版本。

执行以上命令的输出如下:

[root@localhost ~]# docker run --privileged --name openEuler-2403-aarch64 -it openeuler/openeuler:22.03-lts
WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64/v4) and no specific platform was requested


Welcome to 6.6.0-28.0.0.34.oe2403.x86_64

System information as of time:  Thu Oct 31 03:33:33 UTC 2024

System load:    0.07
Processes:      5
Memory used:    8.1%
Swap used:      0%
Usage On:       13%
Users online:   0


[root@5999265a441f /]#

如果是 aarch64 架构的构建主机,则不会出现 WARNING: The requested image's platform (linux/arm64) does not match the detected host platform (linux/amd64/v4) and no specific platform was requested 的警告信息。

查看 Docker 是否成功使用 QEMU 模拟 aarch64 架构(aarch64 架构的构建主机则不需要这一步骤)。

[root@5999265a441f /]# arch
aarch64

容器内安装 Git 来拉取构建框架

dnf makecache
dnf install git -y

容器内拉取并运行构建框架

过程参见镜像构建

将容器内构建好的镜像复制到主机

脚本执行完成后,会在 Docker 容器中脚本所在目录的 build/YYYY-MM-DD 文件夹下生成 openEuler 镜像文件。

假设构建框架 rockchip 文件夹的在 Docker 容器里的绝对路径为:/root/rockchip,使用以下命令来拷贝 openEuler 镜像文件到构建主机:

docker cp openEuler-2203-aarch64:/root/rockchip/build/YYYY-MM-DD/openEuler-VERSION-BOARD-ARCH-RELEASE.img.xz /root
  • openEuler-2203-aarch64 为 Docker 容器的名称。
  • /root/rockchip/build/YYYY-MM-DD/openEuler-VERSION-BOARD-ARCH-RELEASE.img.xz 为 Docker 容器内 openEuler 镜像的绝对路径。
  • /root 为拷贝 openEuler 镜像文件到构建主机的目标路径。