运行Armbian Ubuntu的Tinkerboard上Docker启动容器失败求助
解决Tinkerboard Armbian Ubuntu上Docker启动容器的BPF错误
问题原因
报错bpf_prog_query(BPF_CGROUP_DEVICE) failed: function not implemented是因为当前Rockchip内核未编译BPF_CGROUP_DEVICE特性,Docker在配置容器cgroup时依赖该功能,导致初始化失败。
解决步骤
方法1:升级Armbian内核到支持BPF的版本
- 执行系统全量升级,获取最新内核:
sudo apt update && sudo apt full-upgrade -y - 重启设备:
sudo reboot - 重启后再次尝试运行容器:
sudo docker run -d --name hello hello-world
方法2:修改Docker的cgroup驱动
如果升级内核无效,可切换Docker的cgroup驱动为cgroupfs(避免依赖BPF特性):
- 编辑Docker配置文件(不存在则创建):
sudo nano /etc/docker/daemon.json - 添加以下配置内容:
{ "exec-opts": ["native.cgroupdriver=cgroupfs"] } - 保存并退出编辑器,重启Docker服务:
sudo systemctl restart docker - 再次测试容器启动:
sudo docker run -d --name hello hello-world
验证内核配置(可选)
可以先确认内核是否缺少该特性:
zcat /proc/config.gz | grep BPF_CGROUP_DEVICE
若返回# CONFIG_BPF_CGROUP_DEVICE is not set,则说明内核确实未开启该功能,需要通过上述方法解决。
内容的提问来源于stack exchange,提问作者z3r0lvld
相关产品推荐
相关产品推荐

