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

如何在GitLab CI Docker执行器中为Docker命令传递--network参数

解决GitLab CI中Docker Run命令添加--network选项的问题

首先得给你理清一个关键误区:你在config.toml里配置的runners.docker.network_mode,是用来设置GitLab Runner自身运行容器的网络,而不是你在CI任务脚本里执行docker run时启动的新容器的网络。这就是为什么修改runner配置后没生效的核心原因。

下面给你几个可行的解决方案,按需选择即可:

方法1:直接在CI脚本中指定--network参数

这是最直接灵活的方式,在你执行docker run的命令里显式加上--network dedicated参数,比如你的CI任务可以这么写:

deploy_container:
  script:
    # 其他前置步骤(如拉取镜像等)
    - docker run --network dedicated -d [你的镜像名称及其他启动参数]

这样就能强制让你启动的容器使用dedicated网络,避开公司插件禁止的默认子网限制。

方法2:给Docker Daemon设置默认网络(全局生效)

如果这个runner上所有的docker run命令都需要统一使用dedicated网络,不想每次重复写参数,可以修改Docker的全局配置:

  1. 编辑Docker Daemon配置文件(通常路径是/etc/docker/daemon.json,没有的话直接新建),添加以下内容:
{
  "default-network": "dedicated"
}
  1. 重启Docker服务让配置生效:
sudo systemctl restart docker

之后这个runner上所有未指定--network的docker run命令,都会默认使用dedicated网络,适合需要全局统一配置的场景。

方法3:用CI变量统一管理网络参数

如果有多个CI任务都需要用到这个网络参数,可以定义一个全局CI变量,避免重复编写相同参数:

variables:
  DOCKER_NETWORK_OPTION: "--network dedicated"

job_1:
  script:
    - docker run $DOCKER_NETWORK_OPTION [你的参数] 镜像名1

job_2:
  script:
    - docker run $DOCKER_NETWORK_OPTION [你的参数] 镜像名2

后续如果需要更换网络,只需要修改这个变量的值即可,维护起来更高效。

最后可以验证效果:容器启动后,执行docker inspect <容器ID>,查看NetworkSettings.Networks字段,确认容器确实连接到了dedicated网络就没问题了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:38:05