低成本搭建鸿蒙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/,共同交流进步!

相关推荐
ghostwritten18 小时前
Kubernetes 网络模式深入解析?
网络·容器·kubernetes
Van_captain18 小时前
React Native for OpenHarmony Toast 轻提示组件:自动消失的操作反馈
javascript·开源·harmonyos
Van_captain18 小时前
React Native for OpenHarmony Modal 模态框组件:阻断式交互的设计与实现
javascript·开源·harmonyos
cn_mengbei18 小时前
鸿蒙原生PC应用开发实战:从零搭建到性能优化,掌握ArkTS与DevEco Studio高效开发技巧
华为·性能优化·harmonyos
鋆雨无欢丶18 小时前
docker证书认证问题
运维·docker·容器
阿杰 AJie18 小时前
Docker 容器启动的全方位方法汇总
运维·docker·容器
前端世界19 小时前
鸿蒙应用为什么会卡?一次 DevEco Profiler 的真实性能分析实战
华为·harmonyos
原神启动119 小时前
K8S(七)—— Kubernetes Pod 基础概念与实战配置
云原生·容器·kubernetes
我的golang之路果然有问题19 小时前
Docker 之常用操作(实习中的)
java·运维·笔记·docker·容器·eureka