低成本搭建鸿蒙PC运行环境:基于 Docker 的 x86_64 服务器

对于希望体验或开发 OpenHarmony(鸿蒙)PC命令行应用的开发者而言,通常需要真机或者 ARM64 架构的硬件环境。购置专用设备成本较高,且不便于快速搭建。本文介绍一种极低成本、最小可用 的"丐版"方案:利用 Docker 和 QEMU 仿真技术,在您已有的 x86_64 服务器(包括 WSL)上快速构建并运行一个轻量级的鸿蒙PC容器环境。

本文给大家介绍一种低成本在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,操作流程还可以进一步简化,操作更简单了。因为 Docker Desktop 自带了一套虚拟化机制,不需要自己再挂上一个 QEMU 了。首先配一个国内的 Docker Registry 源:

配置方式是进入 Settings > Docker Engine 菜单,修改里面的配置文件,往里面加一个字段:

json 复制代码
  "registry-mirrors": [
    "https://docker.1ms.run"
  ]

剩下只需下面一步操作即可下载并运行起来容器:

bash 复制代码
#拉取镜像并启动容器
docker run --name=ohos -itd --platform linux/arm64 hqzing/docker-mini-openharmony:latest
#进入容器
docker exec -it ohos sh

Docker Desktop上操作完成。但如果是其它x86_64的linux服务器,继续参考以下步骤:

步骤 1:安装 Docker CE

由于是全新服务器,首先安装 Docker。为加速安装并确保网络稳定性,推荐使用国内镜像源脚本:

bash 复制代码
# 使用国内镜像源脚本安装 Docker CE
bash <(curl -sSL https://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 用户态仿真器实现。

bash 复制代码
# 注册 ARM64 解释器 (使用国内镜像源加速拉取)
docker run --rm --privileged docker.1ms.run/tonistiigi/binfmt --install arm64

命令详解与注意事项:

  • --rm: 容器退出后自动删除。
  • --privileged: 授予容器修改宿主机内核设置 (binfmt_misc) 的必要权限。
  • docker.1ms.run/tonistiigi/binfmt: 使用国内镜像源加速拉取 tonistiigi/binfmt 工具镜像。
  • --install arm64: 向内核注册 ARM64 架构的仿真支持。
  • 重要提示:
    1. 重启需重注册: 服务器重启后,需要重新执行此命令。
    2. 全局生效: 注册成功后,宿主机和 Docker 均可直接运行 ARM64 二进制程序。
    3. 网络优化: 使用 docker.1ms.run/ 前缀或配置国内 Docker Registry 源(如步骤 1 中选择的毫秒镜像)是确保此命令在中国大陆顺利执行的关键。

原理简述:

此命令利用 binfmt_misc 内核模块,将 QEMU 用户态仿真器注册为 ARM64 程序的处理程序。当系统尝试执行一个 ARM64 格式的程序时,内核会自动调用 QEMU 来"翻译"并执行 ARM64 指令,实现在 x86_64 CPU 上运行 ARM64 程序或容器。

验证注册成功:

bash 复制代码
# 检查 ARM64 处理程序是否启用
ls /proc/sys/fs/binfmt_misc/qemu-aarch64
# 输出应包含 'enabled' 状态

步骤 3:拉取并运行鸿蒙容器

现在可以拉取专为体验和轻量开发准备的鸿蒙容器镜像并运行:

bash 复制代码
# 拉取并运行鸿蒙容器 (使用国内镜像源加速)
docker run --name=ohos -itd --platform linux/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二进制软件。

  1. 进入容器:

    bash 复制代码
    docker exec -it ohos sh
  2. 下载并安装移植好的二进制软件 (示例:Neovim):

    bash 复制代码
    cd /root
    # 使用国内加速源下载 Neovim (ARM64 for OpenHarmony)
    curl -L -O https://ghfast.top/https://github.com/Harmonybrew/ohos-neovim/releases/download/0.11.4/neovim-0.11.4-ohos-arm64.tar.gz
    # 解压到 /opt 目录
    tar -zxf neovim-0.11.4-ohos-arm64.tar.gz -C /opt
    # 将 Neovim 加入 PATH
    export PATH=$PATH:/opt/neovim-0.11.4-ohos-arm64/bin
    # 验证安装
    nvim --version

实用技巧:宿主机与容器文件交互

开发过程中常需在宿主机和容器间传递文件:

  • 从宿主机拷贝文件到容器:

    bash 复制代码
    docker cp /宿主机/文件路径 ohos:/容器内/目标路径
    # 示例:拷贝 test.c 到容器的 /root/build/ 目录
    docker cp ./test.c ohos:/root/build/
  • 从容器拷贝文件到宿主机:

    bash 复制代码
    docker cp ohos:/容器内/文件路径 /宿主机/目标路径

总结

没鸿蒙PC真机的小伙伴们也有福音啦。感谢hqzing大佬的鸿蒙容器,介绍地址:《低成本玩转鸿蒙容器的丐版方案

总结下鸿蒙PC容器使用

无论你是什么样的电脑系统,在docker 环境就绪的前提下,就这些步骤了。

以准备环境和测试axel命令行应用为例:

bash 复制代码
#1.带镜像加速前缀docker.1ms.run/(镜像加速用),让服务器支持arm64指令(只需首次执行)
docker run --rm --privileged docker.1ms.run/tonistiigi/binfmt --install arm64
#2.拉取鸿蒙容器镜像(只需首次执行)
docker run --name=ohos -itd --platform linux/arm64 docker.1ms.run/hqzing/docker-mini-openharmony:latest
#3.测试axel命令,拷贝宿主机中生成的axel可执行程序到容器中
docker cp ./axel ohos:/root/
#4.进入ohos pc容器
docker exec -it ohos sh
#5.验证测试命令行应用
cd /root
#curl 下载方式
curl -L -O https://github.com/Harmonybrew/ohos-neovim/releases/download/0.11.4/neovim-0.11.4-ohos-arm64.tar.gz
#axel下载方式
./axel -k -n 50 https://github.com/Harmonybrew/ohos-neovim/releases/download/0.11.4/neovim-0.11.4-ohos-arm64.tar.gz

axel多线程下载工具的获取,参见博文:[鸿蒙PC命令行程序移植]:移植axel多线程高速下载工具踩坑记

axel多线程下载工具和curl命令行的下载速度大比拼截图:

本方案充分利用 Docker 的跨平台能力和 QEMU 的用户态仿真,成功在 x86_64 架构的服务器 上构建了可用的 ARM64 鸿蒙容器环境

方案的核心优势在于:

  1. 极低成本: 复用现有 x86_64 服务器或 WSL,无需购置 ARM64 硬件。
  2. 最小可用: 提供基础的鸿蒙运行环境,满足体验和轻量开发需求。
  3. 国内网络优化: 从 Docker 安装、镜像拉取 (docker.1ms.run)、到软件下载 (ghfast.top),全程采用国内镜像源加速,有效解决了中国大陆开发者的网络瓶颈。
  4. 灵活便捷: Docker 容器易于创建、销毁和复用,文件交互简单。

此"丐版"方案为开发者快速上手鸿蒙开发、进行应用移植或环境验证提供了一条高效、经济的路径。后续可根据实际需求,在容器内进一步安装 SDK、构建工具或进行Native应用开发部署。

参考链接

蓝香蕉代码 |【鸿蒙电脑开发命令行-签名篇与本机hdc shell】

低成本玩转鸿蒙容器的丐版方案

鸿蒙PC命令行适配 Ubuntu22.04 lycium_plusplus环境搭建SOP流程

最后,欢迎加入开源鸿蒙PC社区https://harmonypc.csdn.net/,共同交流进步!

相关推荐
2601_949593651 小时前
基础入门 React Native 鸿蒙跨平台开发:卡片组件
react native·react.js·harmonyos
等什么君!2 小时前
docker -数据卷技术
运维·docker·容器
qq_177767372 小时前
React Native鸿蒙跨平台剧集管理应用实现,包含主应用组件、剧集列表、分类筛选、搜索排序等功能模块
javascript·react native·react.js·交互·harmonyos
qq_177767372 小时前
React Native鸿蒙跨平台自定义复选框组件,通过样式数组实现选中/未选中状态的样式切换,使用链式调用替代样式数组,实现状态驱动的样式变化
javascript·react native·react.js·架构·ecmascript·harmonyos·媒体
上天_去_做颗惺星 EVE_BLUE3 小时前
Docker高效使用指南:从基础到实战模板
开发语言·ubuntu·docker·容器·mac·虚拟环境
烬头88213 小时前
React Native鸿蒙跨平台采用了函数式组件的形式,通过 props 接收分类数据,使用 TouchableOpacity实现了点击交互效果
javascript·react native·react.js·ecmascript·交互·harmonyos
qq_177767373 小时前
React Native鸿蒙跨平台通过Animated.Value.interpolate实现滚动距离到动画属性的映射
javascript·react native·react.js·harmonyos
好好沉淀4 小时前
Docker开发笔记(详解)
运维·docker·容器
qq_177767374 小时前
React Native鸿蒙跨平台实现消息列表用于存储所有消息数据,筛选状态用于控制消息筛选结果
javascript·react native·react.js·ecmascript·harmonyos
ujainu5 小时前
Flutter + OpenHarmony 实战:从零开发小游戏(三)——CustomPainter 实现拖尾与相机跟随
flutter·游戏·harmonyos