Docker 是一个开源的软件项目,可以在 Linux 操作系统上提供一层额外的抽象,让用户程序部署在一个相对隔离的运行环境,并提供自动管理机制。
需要额外指出的是,Docker 并不等于容器(containers),Docker 只是容器的一种,其他种类的容器还有 Kata container,Rocket container 等。
编译环境搭建
准备一个可以运行 Docker 的虚拟机操作系统,推荐 ubuntu 或者 openEuler 的发行版。
搭建环境:在 ubuntu 虚拟机上执行以下步骤,下载 OpenHarmony 的源码并部署 Docker 编译环境。
①安装 gitee repo 工具
mkdir ~/bin
curl https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 -o ~/bin/repo
chmod a+x ~/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests
②获取 OpenHarmony 源码
在 ubuntu 虚拟机上创建源码目录:
mkdir /home/openharmony
cd /home/openharmory
使用 repo 命令获取 OpenHarmony v3.2 release 源码:
repo init -u git@gitee.com:openharmony/manifest.git -b OpenHarmony-3.2-Release --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'
以上步骤完成后,可以获取到 OpenHarmony 编译所需的完整的源码,代码目录结构如下图所示:
③获取 Docker 编译环境
独立 Docker 编译环境,适用于编译轻量和小型系统/标准系统。
获取 OpenHarmony Docker 编译镜像:
docker pull swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
此 Docker 编译环境较大,请耐心等待下载完成。进入源码根目录,启动并进入 Docker 编译环境。
执行以下命令:
cd /home/openharmory
docker run --name ohos_build -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/openharmony-docker:1.0.0
命令参数说明:-v X:Y 将宿主机的 X 目录挂载到容器的 Y 目录下。
将当前源码所在目录,挂载到容器编译环境的 /home/openharmony 目录下。
安装编译依赖:通过上面步骤进入容器的 shell 后,切换到 /home/openharmony 路径,执行脚本下载 OpenHarmony 编译所依赖的组件:
cd /home/openharmony
./build/prebuilts_download.sh
此处需要下载的编译依赖较多,请耐心等待下载完成。
至此 OpenHarmony Docker 编译环境准备完毕,在执行编译动作之前,需要完成 OpenHarmony kernel 特性的修改,否则 Docker 无法在 OpenHarmony 系统上正常运行。
kernel 配置修改
如何判断源码使用默认配置编译后生成的 kernel 是否满足 Docker 的运行依赖呢?
开源社区存在检查工具,可以帮助我们完成这个任务,大家可以自行获取此工具。
在此我们直接进入 kernel 配置的修改环节。
①修改 OpenHarmony kernel 配置文件,开启 Docker 运行所依赖的内核功能。
需要修改的配置文件位置如下:
kernel/linux/config/linux-5.10/arch/arm64/configs/rk3568_standard_defconfig
针对 kernel 特性的修改,主要是开启 OpenHarmony 内核中 namespace、cgroup、network、overlay filesystem 等功能。
在配置文件的末尾追加