Wind River操作系统下使用docker-compose启动容器报错如何解决?
问题根因与修复方案
报错翻译
原始报错信息:
ERROR: for my-service Cannot start service my-service: failed to create endpoint my-service on network my-net: failed to add the host (veth78f811b) <=> sandbox (vethdd9d629) pair interfaces: operation not supported
对应中文含义:
错误:启动
my-service服务失败:无法在my-net网络上为my-service创建端点:添加主机端(veth78f811b)<=> 沙箱端(vethdd9d629)虚拟网卡对失败:操作不被支持
根因说明
Wind River是面向嵌入式场景定制的Linux发行版,默认裁剪了Ubuntu/CentOS/RHEL这类通用服务器发行版默认预置的Docker依赖内核模块,该报错是内核未开启虚拟以太网配对(veth pair) 相关支持导致,veth是Docker桥接网络实现容器跨容器、跨主机通信的核心依赖组件。
修复步骤
- 第一步:先确认当前内核是否加载了veth模块,执行命令:
lsmod | grep veth
如果无输出,说明veth模块既没有编译进内核,也没有作为可加载模块预置在系统中。 - 第二步:重新编译Wind River内核,开启以下内核配置项,编译完成后替换现有内核:
CONFIG_VETH=y CONFIG_BRIDGE=y CONFIG_NET_NS=y CONFIG_DOCKER_NETWORKING=y CONFIG_NETFILTER_XT_MATCH_ADDRTYPE=y - 第三步:内核替换完成后重启系统,若veth编译为可加载模块需额外执行
modprobe veth加载模块,确认模块加载正常后重新执行docker-compose up -d启动服务即可。 - 临时规避方案:如果暂时无法重新编译内核,可以将Docker网络模式修改为host模式绕过veth依赖,只需修改docker-compose.yaml中对应服务的network_mode配置为
host即可,注意该模式下容器会共享主机网络命名空间,端口不会自动隔离,需要自行避免端口冲突问题。
内容的提问来源于stack exchange,提问作者Gogs
相关产品推荐
相关产品推荐

