Alex Blog

如何在 H15H 中使用 Docker

在当前 H15 官方发布的 1.9.1 版本中,系统默认并未包含 Docker。
为了满足容器化部署的需求,我们尝试通过 Yocto 编译的方式,将 Docker 引入系统并确保其可以正常运行。

一、引入 Docker 所需的 meta 层

Docker 依赖于 meta-virtualization,但该 meta 层在默认的 Hailo Yocto 系统中并不存在,因此需要手动获取。

git clone -b kirkstone https://git.yoctoproject.org/meta-virtualization

二、配置 bblayers.conf

build/conf/bblayers.conf 中加入刚才 clone 的目录。
当然,也可以像之前一样,将其加入到其他统一管理 layer 的配置位置,具体可参考我之前 USB WiFi 中的示例。

/home/alex/Work/H15/meta-hailo-soc/meta-virtualization \

三、在 local.conf 中启用 Docker 相关组件

接下来,在 build/conf/local.conf 中添加 Docker 及其相关组件。
这里我选择使用如下配置:

IMAGE_INSTALL:append = " docker python3-docker-compose containerd-opencontainers python3-pip"

同样,这部分配置也可以参考 USB WiFi 的做法,改为加入到自定义 package 中进行管理。

四、WIC 编译失败问题分析

在加入 Docker 后进行编译时,我们会发现 wic 无法正常生成镜像。
报错如下:

其根本原因在于:引入 Docker 后,rootfs 体积显著增大,导致 wic 打包失败。

问题说明:
在 H15 1.9.1 版本中存在一个已知 bug,即使我们在local.conf 中显式配置
IMAGE_ROOTFS_SIZE,例如:

IMAGE_ROOTFS_SIZE:forcevariable = "262144"

也无法生效。

五、定位并修复 WKS 配置问题

通过以下命令检查当前使用的 WKS 文件:

bitbake -e core-image-minimal | grep ^WKS_FILE=

可以看到当前使用的 WKS 文件为 sd.wks.in 而不是正常的 *.wks 。

因此,我们需要修改
meta-hailo-bsp/conf/machine/include/hailo1x-base.inc 中的配置:

#WKS_FILE = "sd.wks.in"
+WKS_FILE = "sd.wks"

随后,在原有的 sd.wks 文件中,将内容修改为如下形式:

part /boot --source bootimg-partition --ondisk mmcblk0 --fstype=vfat --label boot --active --align 4 --size=-1 --use-uuid
part / --source rootfs --ondisk mmcblk --fstype=ext4 --label root --align 4 --use-uuid --size=-1

完成上述修改后,就没有这个size的限制了,即可顺利将 Docker 编译进 wic 镜像,并成功刷机运行。

六、大陆环境下 Docker 镜像加速配置

在中国大陆环境下使用 Docker,通常需要配置镜像加速器。
编辑 Docker 配置文件:

vi /etc/docker/daemon.json

写入如下内容(2026年1月测试可用):

{
  "registry-mirrors": [
    "https://docker.xuanyuan.me",
    "https://docker.m.daocloud.io",
    "https://docker.1ms.run"
  ]
}

随后重启 Docker 服务:

killall dockerd
dockerd &

七、Docker 功能验证

最后,通过运行官方测试镜像来验证 Docker 是否工作正常:

docker run --rm hello-world

若容器能够正常运行并输出欢迎信息,则说明 Docker 已成功在 H15H 平台上部署完成。
PS: 在运行docker之前请确保网络正常并且设备的系统时间与现实时间一致:

设置 IP 地址:
ifconfig wlan0 192.168.0.30 netmask 255.255.255.0 up
设置网关:
route add default gw 192.168.0.1 wlan0
修改 DNS:
# 编辑 /etc/resolv.conf,增加一行:
nameserver 8.8.8.8
修改时间:date -s "2026-01-08 08:00:00"
 

已发布

分类

来自

标签:

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注