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

GitHub Action工作流添加自定义网络模式:解决--net=host冲突

解决GitHub Action服务容器中--net=host与自动自定义网络的冲突问题

问题场景

在GitHub Action自托管Runner上配置服务容器时,尝试通过options: --net=host指定主机网络模式,触发以下报错:

docker: conflicting options: cannot attach both user-defined and non-user-defined network-modes.

原因是GitHub Action会自动为服务容器创建并绑定自定义网络(例如--network github_network_13cec713344a4fe2b68c7352ca2e9893),这和手动指定的--net=host(非用户自定义网络模式)冲突。相关工作流片段如下:

runs-on: [ self-hosted, build_server ]
services:
  host_service:
    image: <>
    options: --net=host
needs : [ container-version ]
steps:
  # 步骤内容

可行解决方案

方案1:使用GitHub Action原生network_mode配置

直接在服务容器中配置network_mode: host,这个原生配置会覆盖Action自动添加的自定义网络绑定,无需在options中指定--net=host。修改后的工作流:

runs-on: [ self-hosted, build_server ]
services:
  host_service:
    image: <>
    network_mode: host  # 替代options中的--net=host配置
needs : [ container-version ]
steps:
  # 步骤内容

方案2:绕过服务容器机制,手动启动容器

如果服务容器的自动网络管理不符合需求,可以在steps阶段直接用docker run命令手动启动容器,完全掌控网络参数:

runs-on: [ self-hosted, build_server ]
needs : [ container-version ]
steps:
  - name: 启动主机网络模式的容器
    run: |
      docker run -d --name host_service --net=host <你的镜像地址>
  # 后续步骤可直接通过容器名访问服务

注意事项

  • network_mode是GitHub Action服务容器的官方配置项,优先级高于options中的网络参数,能避免命令行参数冲突。
  • 使用--net=host时,容器会共享Runner主机的网络栈,需注意端口占用冲突和网络权限问题。

内容的提问来源于stack exchange,提问作者Mayank Srivastava

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:15:23