gitlab runner - network_mode = "host"

gitlab runner - network_mode = "host"

我想在 GitLab 中设置 CI/CD。 所以我在 linux 上安装了 docker 和 gitlab-运行ner,为 运行ner 创建了一个配置并开始了一切。到目前为止一切顺利。

运行ner 工作,docker 工作。

但我正在使用 windows 的 linux 子系统,所以我需要 运行 带有参数“--network host”的 docker 容器,否则它们不会会工作。

所以现在我尝试配置 gitlab-运行ner 通过 "network_mode" 参数使用主机网络。但它不起作用。我得到了同样的错误,就好像我直接 运行 一个 docker 容器并且没有“--network host”。

错误:

WARNING: Preparation failed: Error response from daemon: oci runtime error: container_linux.go:265: starting container process caused "process_linux.go:368: container init caused \"process_linux.go:351: running prestart hook 0 caused \"error running hook: exit status 1, stdout: , stderr: time=\\"2019-04-12T18:42:33+02:00\\" level=fatal msg=\\"failed to add interface vethfc7c8d1 to sandbox: failed to get link by name \\\\"vethfc7c8d1\\\\": Link not found\\" \n\"\"" (executor_docker.go:423:16s) job=123project=123 runner=123

这是我的配置:

concurrent = 1
check_interval = 0

[session_server]
session_timeout = 1800

[[runners]]
    name = "MyHostName"
    url = "https://my.gitlab.url/"
    token = "SoMeFaNcYcOdE-e"
    executor = "docker"
    [runners.docker]
        tls_verify = false
        image = "beevelop/ionic:latest"
        privileged = true
        disable_entrypoint_overwrite = false
        oom_kill_disable = false
        disable_cache = false
        volumes = ["/cache"]
        shm_size = 0
        network_mode = "host"
        [runners.cache]
        [runners.cache.s3]
        [runners.cache.gcs]

我的问题是如何强制 gitlab 运行ner 创建容器以使用主机网络,就像 docker 参数:“--network host”

我无法直接解决问题,但我找到了一个更好的替代方法。

我配置了 GitLab Container Registry 存储库的上传和白名单自定义 docker 图像,然后启用 Shared Runners of my company. The custom image i uploaded was created via a Dockerfile using docker for windows,避免 windows 的 linux 子系统中的错误 docker ].现在我可以完美地执行我的 CI 管道并完全控制使用的图像,而不必保留我的本地机器 运行.