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

如何在gitlab-ci.yml中指定构建镜像容器的Docker/Podman网络?

在GitLab CI中为任务容器指定容器网络

完全可以为GitLab CI里执行构建任务的容器指定Docker/Podman或自定义容器网络,具体配置方式取决于你使用的GitLab Runner执行器类型,以下是几种常见场景的配置方法:

Docker执行器(最常用场景)

如果你的GitLab Runner用的是Docker执行器,有两种配置维度可选:

1. 全局生效(所有任务共用)

修改Runner的config.toml配置文件,在[[runners]]下的[runners.docker]区块中添加网络配置:

[[runners]]
  name = "your-runner-name"
  url = "https://your-gitlab-instance.com/"
  token = "your-runner-token"
  executor = "docker"
  [runners.docker]
    image = "docker:latest"
    network_mode = "your-custom-network" # 替换为你提前创建好的自定义网络名称

这里的your-custom-network需要是你已经通过docker network create your-custom-network命令创建好的网络。

2. 单任务生效(仅当前job使用)

在gitlab-ci.yml的对应job中,通过variables指定DOCKER_NETWORK变量即可:

build-app:
  stage: build
  image: node:18-alpine
  variables:
    DOCKER_NETWORK: "your-custom-network"
  script:
    - npm install
    - npm run build

Podman执行器

如果用Podman作为容器运行时,配置逻辑和Docker完全兼容:

  • 全局配置:同样在Runner的config.toml的[runners.docker]区块设置network_mode(Podman会识别该配置)
  • 单任务配置:在job中指定DOCKER_NETWORK变量即可,Podman会自动使用指定的网络

Kubernetes执行器

如果你的Runner部署在Kubernetes集群上,需要通过Pod配置来指定网络:
在gitlab-ci.yml的job中,通过kubernetes.pod_spec字段定义网络相关配置,比如关联自定义的NetworkPolicy,或者指定Pod使用的网络:

deploy-to-cluster:
  stage: deploy
  image: bitnami/kubectl:latest
  kubernetes:
    pod_spec:
      metadata:
        annotations:
          networking.k8s.io/network-policy: "app-network-policy" # 替换为你的NetworkPolicy名称
      spec:
        hostNetwork: false # 根据需求设置是否使用主机网络
  script:
    - kubectl apply -f deployment.yaml

注意点

  • 不管用哪种方式,都要确保你指定的网络已经提前存在(Docker/Podman网络需手动创建,Kubernetes网络/NetworkPolicy需在集群中配置好)
  • 如果任务需要访问GitLab实例或其他内部服务,要确认自定义网络能和这些服务的网络连通
  • 不同版本的GitLab Runner可能有细微的配置差异,遇到问题可以核对对应版本的Runner文档

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 18:05:07