对于希望体验或开发 OpenHarmony(鸿蒙)PC命令行应用的开发者而言,通常需要真机或者 ARM64 架构的硬件环境。购置专用设备成本较高,且不便于快速搭建。本文介绍一种极低成本、最小可用的“丐版”方案:利用 Docker 和 QEMU 仿真技术,在您已有的x86_64 服务器(包括 WSL)上快速构建并运行一个轻量级的鸿蒙PC容器环境。
更多交流学习,欢迎加入开源鸿蒙PC社区:https://harmonypc.csdn.net/
本文给大家介绍一种低成本在x86_64架构上运行OpenHarmony PC命令行应用环境的方案。通过Docker和QEMU仿真技术,无需ARM64硬件即可构建轻量级鸿蒙容器环境,简化部署和使用流程。
在Docker环境就绪的前提下:只需拉取镜像,一分钟即刻拥有一个轻量级的鸿蒙PC运行环境。除了用来测试和跑命令行应用,还可以做为鸿蒙PC的本地命令行和三方库移植开发测试的一体环境。
注:想跑harmonyos移动端App的请跳过,该轻量级容器仅方便鸿蒙PC命令行和三方库的开发、编译和调试用。
环境准备: x86_64 电脑或服务器(其他的linux服务器也可以)
本文演示环境选用 Ubuntu 24.04 x86_64 服务器。如果你是win10系统,可以使用WSL(直接在 Windows 上运行的 Linux 环境)。
win10系统上的WSL介绍及安装,参见博客:《Windows10下使用WSL安装 Docker》
方式一、Windows下的Docker Desktop环境下
如果你在 windows上用的是 Docker Desktop,操作流程还可以进一步简化,操作更简单了。因为 Docker Desktop 自带了一套虚拟化机制,不需要自己再挂上一个 QEMU 了。首先配一个国内的 Docker Registry 源:
配置方式是进入 Settings > Docker Engine 菜单,修改里面的配置文件,往里面加一个字段:
"registry-mirrors":["https://docker.1ms.run"]剩下只需下面一步操作即可下载并运行起来容器:
#拉取镜像并启动容器dockerrun--name=ohos-itd--platformlinux/arm64 hqzing/docker-mini-openharmony:latest#进入容器dockerexec-itohosshDocker Desktop上操作完成。
注:在正常情况下,最新版本的 Docker Desktop 默认就支持运行不同架构的镜像,按上面操作正常没问题。它的 官方文档 是这么说的:
Docker Desktop supports running and building multi-platform images
under emulation by default.
所以你可以尝试直接执行 :
#在docker desktop中,使用以下命令拉起容器并运行dockerrun--name=ohos-itd--platformlinux/arm64 hqzing/docker-mini-openharmony:latest在我自己的电脑上试了不行,(可能跟具体的环境或配置有关)。如果你发现它在你的电脑上不支持运行 arm64 容器,则需先执行一遍 以下命令进行 QEMU 的注册。
dockerrun--rm--privilegedtonistiigi/binfmt--installarm64注:最新容器地址,作者更换了。新项目的地址:https://github.com/hqzing/dockerharmony
新的镜像标签是这个:
hqzing/dockerharmony:latest方式二 虚拟机或者 x86_64的linux环境下
但如果是其它x86_64的linux服务器,继续参考以下步骤:
步骤 1:安装 Docker CE
由于是全新服务器,首先安装 Docker。为加速安装并确保网络稳定性,推荐使用国内镜像源脚本:
# 使用国内镜像源脚本安装 Docker CEbash<(curl-sSLhttps://linuxmirrors.cn/docker.sh)安装过程中,关键配置选择如下(确保国内访问速度):
- Docker CE 源:
华为云 - Docker CE 源网络地址:
公网 - Docker Registry 源:
毫秒镜像(推荐,国内加速) - Docker CE 软件源网络协议:
HTTP - Docker Engine 版本:
安装最新版本
步骤 2:注册 QEMU 解释器 (ARM64 支持)
核心步骤:让 x86_64 宿主机内核具备运行 ARM64 架构程序的能力。这通过 Linux 内核的binfmt_misc机制和 QEMU 用户态仿真器实现。
# 注册 ARM64 解释器 (使用国内镜像源加速拉取)dockerrun--rm--privilegeddocker.1ms.run/tonistiigi/binfmt--installarm64命令详解与注意事项:
--rm: 容器退出后自动删除。--privileged: 授予容器修改宿主机内核设置 (binfmt_misc) 的必要权限。docker.1ms.run/tonistiigi/binfmt: 使用国内镜像源加速拉取tonistiigi/binfmt工具镜像。--install arm64: 向内核注册 ARM64 架构的仿真支持。- 重要提示:
- 重启需重注册:服务器重启后,需要重新执行此命令。
- 全局生效:注册成功后,宿主机和 Docker 均可直接运行 ARM64 二进制程序。
- 网络优化:使用
docker.1ms.run/前缀或配置国内 Docker Registry 源(如步骤 1 中选择的毫秒镜像)是确保此命令在中国大陆顺利执行的关键。
原理简述:
此命令利用binfmt_misc内核模块,将 QEMU 用户态仿真器注册为 ARM64 程序的处理程序。当系统尝试执行一个 ARM64 格式的程序时,内核会自动调用 QEMU 来“翻译”并执行 ARM64 指令,实现在 x86_64 CPU 上运行 ARM64 程序或容器。
验证注册成功:
# 检查 ARM64 处理程序是否启用ls/proc/sys/fs/binfmt_misc/qemu-aarch64# 输出应包含 'enabled' 状态步骤 3:拉取并运行鸿蒙容器
现在可以拉取专为体验和轻量开发准备的鸿蒙容器镜像并运行:
# 拉取并运行鸿蒙容器 (使用国内镜像源加速)dockerrun--name=ohos-itd--platformlinux/arm64 docker.1ms.run/hqzing/docker-mini-openharmony:latest镜像源说明:
- 原始镜像托管于 GitHub Container Registry (
ghcr.io/hqzing/docker-mini-openharmony:latest)。 - 为优化国内体验,镜像已同步至 Docker Hub (
hqzing/docker-mini-openharmony:latest)。 - 命令中使用
docker.1ms.run/前缀,通过国内镜像源(毫秒镜像)加速拉取 Docker Hub 上的镜像,显著提升下载速度。 - 感谢
hqzing大佬提供的容器环境,他的博客:https://blog.csdn.net/hqzing
步骤 4:体验鸿蒙环境
容器运行后,即可进入其中体验鸿蒙环境并安装PC二进制软件。
进入容器:
dockerexec-itohossh下载并安装移植好的二进制软件 (示例:Neovim):
cd/root# 使用国内加速源下载 Neovim (ARM64 for OpenHarmony)curl-L-Ohttps://ghfast.top/https://github.com/Harmonybrew/ohos-neovim/releases/download/0.11.4/neovim-0.11.4-ohos-arm64.tar.gz# 解压到 /opt 目录tar-zxfneovim-0.11.4-ohos-arm64.tar.gz-C/opt# 将 Neovim 加入 PATHexportPATH=$PATH:/opt/neovim-0.11.4-ohos-arm64/bin# 验证安装nvim--version
实用技巧:宿主机与容器文件交互
开发过程中常需在宿主机和容器间传递文件:
从宿主机拷贝文件到容器:
dockercp/宿主机/文件路径 ohos:/容器内/目标路径# 示例:拷贝 test.c 到容器的 /root/build/ 目录dockercp./test.c ohos:/root/build/从容器拷贝文件到宿主机:
dockercpohos:/容器内/文件路径 /宿主机/目标路径
容器的使用及验证demo
参见博文:[鸿蒙PC命令行程序移植]:移植axel多线程高速下载工具踩坑记。
在该文中,以移植axel多线程高速下载工具为例,不但详细介绍了axel下载工具的移植过程,而且还详细介绍了如何使用鸿蒙PC容器对工具进行一个全面的验证。
移植成功的axel仓库地址:https://gitcode.com/qq8864/axel
总结
没鸿蒙PC真机的小伙伴们也有福音啦。感谢hqzing大佬的鸿蒙容器,介绍地址:《低成本玩转鸿蒙容器的丐版方案》
总结下鸿蒙PC容器使用
无论你是什么样的电脑系统,在docker 环境就绪的前提下,就这些步骤了。
以准备环境和测试axel命令行应用为例:
#1.带镜像加速前缀docker.1ms.run/(镜像加速用),让服务器支持arm64指令(只需首次执行)dockerrun--rm--privilegeddocker.1ms.run/tonistiigi/binfmt--installarm64#2.拉取鸿蒙容器镜像(只需首次执行)dockerrun--name=ohos-itd--platformlinux/arm64 docker.1ms.run/hqzing/docker-mini-openharmony:latest#3.测试axel命令,拷贝宿主机中生成的axel可执行程序到容器中dockercp./axel ohos:/root/#4.进入ohos pc容器dockerexec-itohossh#5.验证测试命令行应用cd/root#curl 下载方式curl-L-Ohttps://github.com/Harmonybrew/ohos-neovim/releases/download/0.11.4/neovim-0.11.4-ohos-arm64.tar.gz#axel下载方式./axel-k-n50https://github.com/Harmonybrew/ohos-neovim/releases/download/0.11.4/neovim-0.11.4-ohos-arm64.tar.gzaxel多线程下载工具的获取,参见博文:[鸿蒙PC命令行程序移植]:移植axel多线程高速下载工具踩坑记
移植成功的axel仓库地址:https://gitcode.com/qq8864/axel
axel多线程下载工具和curl命令行的下载速度大比拼截图:
本方案充分利用 Docker 的跨平台能力和 QEMU 的用户态仿真,成功在x86_64 架构的服务器上构建了可用的ARM64 鸿蒙容器环境。
方案的核心优势在于:
- 极低成本:复用现有 x86_64 服务器或 WSL,无需购置 ARM64 硬件。
- 最小可用:提供基础的鸿蒙运行环境,满足体验和轻量开发需求。
- 国内网络优化:从 Docker 安装、镜像拉取 (
docker.1ms.run)、到软件下载 (ghfast.top),全程采用国内镜像源加速,有效解决了中国大陆开发者的网络瓶颈。 - 灵活便捷:Docker 容器易于创建、销毁和复用,文件交互简单。
此“丐版”方案为开发者快速上手鸿蒙开发、进行应用移植或环境验证提供了一条高效、经济的路径。后续可根据实际需求,在容器内进一步安装 SDK、构建工具或进行Native应用开发部署。
参考链接
蓝香蕉代码 |【鸿蒙电脑开发命令行-签名篇与本机hdc shell】
低成本玩转鸿蒙容器的丐版方案
鸿蒙PC命令行适配 Ubuntu22.04 lycium_plusplus环境搭建SOP流程
最后,欢迎加入开源鸿蒙PC社区:https://harmonypc.csdn.net/,共同交流进步!