You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

禁用BPF_SYSCALL的NixOS系统下,如何让Docker-Compose不触发BPF调用?

禁用BPF_SYSCALL后Docker-Compose启动ChirpStack报错的解决办法

环境与问题详情

当前NixOS系统内核的BPF_SYSCALL已禁用,内核配置信息如下:

[root@nixos:/sys/fs/cgroup]# zgrep BPF /proc/config.gz
CONFIG_BPF=y
CONFIG_HAVE_EBPF_JIT=y
CONFIG_ARCH_WANT_DEFAULT_BPF_JIT=y
# BPF subsystem
# CONFIG_BPF_SYSCALL is not set
CONFIG_BPF_JIT=y
CONFIG_BPF_JIT_DEFAULT_ON=y
# end of BPF subsystem
CONFIG_IPV6_SEG6_BPF=y
# CONFIG_NETFILTER_XT_MATCH_BPF is not set
# CONFIG_BPFILTER is not set
CONFIG_NET_CLS_BPF=m
CONFIG_NET_ACT_BPF=m
CONFIG_LWTUNNEL_BPF=y

启动ChirpStack的Docker-Compose时出现以下错误:

May 05 00:38:45 nixos bash[13245]: Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error setting cgroup config for procHooks process: bpf_prog_query(BPF_CGROUP_DEVICE) failed: function not implemented: unknown

由于无法修改内核,需找到让Docker-Compose不触发BPF调用的方法。

可行解决方案

1. 修改Docker守护进程配置,切换cgroup驱动并调整命名空间模式

编辑Docker守护进程配置文件/etc/docker/daemon.json(不存在则创建),添加以下内容:

{
  "cgroupns-mode": "host",
  "exec-opts": ["native.cgroupdriver=cgroupfs"]
}

保存后重启Docker服务:

systemctl restart docker

该配置会让Docker使用传统cgroupfs驱动(而非依赖BPF的systemd驱动),同时让容器共享主机cgroup命名空间,避免触发BPF相关的cgroup配置调用。

2. 在Docker-Compose文件中单独配置容器cgroup参数

若不想全局修改Docker配置,可在docker-compose.yml中为每个ChirpStack相关容器添加cgroupns: host配置,示例:

services:
  chirpstack:
    image: chirpstack/chirpstack:latest
    cgroupns: host
    # 其他原有配置...
  chirpstack-gateway-bridge:
    image: chirpstack/chirpstack-gateway-bridge:latest
    cgroupns: host
    # 其他原有配置...

3. 临时禁用容器资源限制配置(若适用)

如果Docker-Compose文件中为容器设置了CPU、内存等资源限制,这类限制可能触发Docker使用BPF管理cgroup。可尝试注释掉资源限制配置,验证是否能正常启动:

services:
  chirpstack:
    # 注释资源限制配置
    # deploy:
    #   resources:
    #     limits:
    #       cpus: '0.5'
    #       memory: 512M

内容的提问来源于stack exchange,提问作者Uma Mahesh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 05:06:12