在BuildRoot构建的嵌入式系统中运行Docker镜像遇证书问题求助
BuildRoot嵌入式系统运行Docker镜像的问题解决
我之前成功在BuildRoot生成的x86_64嵌入式系统中跑通Docker镜像,你碰到的x509证书错误,大概率是BuildRoot默认没带系统根证书导致的,另外还有几个容易遗漏的组件需要检查:
根证书包:必须添加
BR2_PACKAGE_CA_CERTIFICATES=y。BuildRoot默认不预装根证书集合,Docker拉取HTTPS镜像时没法验证证书合法性,开启这个选项后,系统会安装Mozilla的根证书,直接解决证书信任问题。网络基础组件:确保系统网络功能完整,需要勾选:
BR2_PACKAGE_IPUTILS=y:提供ping、traceroute等工具,方便先验证网络连通性BR2_PACKAGE_WGET=y:可以手动测试HTTPS访问,比如执行wget https://registry-1.docker.io/v2/,确认证书问题是否解决- 内核配置里要开启必要网络模块:
CONFIG_NET、CONFIG_INET、CONFIG_NETFILTER(qemu_x86_64_defconfig默认一般都有,不确定的话可以通过make linux-menuconfig确认)
Docker依赖补充组件:除了你已经加的,还要确认:
BR2_PACKAGE_CGROUPFS_MOUNT=y:Docker依赖cgroup文件系统,这个组件会在系统启动时自动挂载cgroup,避免Docker启动报错BR2_PACKAGE_BASH=y:部分Docker内部脚本依赖bash,默认BusyBox的sh可能存在兼容性问题
验证步骤
- 通过
make menuconfig补全上述缺失的组件配置 - 重新编译系统(
make clean && make),启动QEMU - 进入系统后执行
update-ca-certificates生成证书缓存 - 再运行
docker run hello-world,应该能正常拉取并运行镜像
内容的提问来源于stack exchange,提问作者Lucky Mike
相关产品推荐
相关产品推荐

