如何使用docker executor将参数传递给gitlab-ci中的docker命令

时间:2018-01-26 22:27:22

标签: docker gitlab gitlab-ci gitlab-ci-runner

我需要在我的一个步骤中将--network选项传递给docker run命令。 我尝试使用network_mode选项配置gitlab-ci runner,但没有工作

有没有办法在gitlab-ci中添加docker命令选项?

这是我的config.toml

[[runners]]
  name = "Docker Runner"
  url = "https://gitlab.company.com"
  token = "9621bf2aba8b979b"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "alpine:latest"
    privileged = false
    disable_cache = false
    volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
    network_mode = "dedicated"
    shm_size = 0

更新

专用于我的网络列表,尝试使用主机,同样的结果

NETWORK ID          NAME                DRIVER              SCOPE
0ec4c3c2d4be        bridge              bridge              local
977b613d726e        dedicated           bridge              local
45a0fadc2ce7        host                host                local
9f7251c769ca        none                null                local

我公司的IT服务添加了一个插件来检查容器启动的参数,我得到AuthZPlugin.AuthZReq: Use of subnet '1.1.1.1/24' is forbidden

这就是我需要明确添加--network dedicated

的原因

2 个答案:

答案 0 :(得分:0)

network_mode适用于该主机上的所有已知网络,list them可以使用docker network ls

dedicated必须在该列表中才能生效。

我已经成功地为host网络做了这件事,并且可以确认这是有效的。

答案 1 :(得分:0)

最后通过this link

找到了解决方案

我安装gitlab-dind并通过定义env变量-e DOCKER_HOST=tcp://gitlab-dind:2375并使用network_mode = "host"

将其用于我的跑步者

我的config.toml看起来像这样:

[[runners]]
  name = "Runner"
  url = "https://gitlab.company.com"
  token = "ff10e2ae64be1a2f246f5f89e0bc63"
  executor = "docker"
  [runners.docker]
    host = "tcp://gitlab-dind:2375"
    tls_verify = false
    image = "docker:latest"
    privileged = true
    disable_cache = false
    volumes = ["/cache"]
    network_mode = "host"
    shm_size = 0
  [runners.cache]