gitlabRunner-network_mode =“主机”

时间:2019-04-12 16:38:32

标签: docker gitlab-ci gitlab-ci-runner windows-subsystem-for-linux runner

我想在GitLab中设置CI / CD。 因此,我在Linux上安装了docker和gitlab-runner,为跑步者创建了一个配置并启动了所有内容。到目前为止一切顺利。

赛跑者工作,而码头工人工作。

但是我正在从Windows使用Linux子系统,因此我需要使用参数“ --network host”运行docker容器,否则它们将无法工作。

现在,我尝试通过“ network_mode”参数将gitlab-runner配置为使用主机网络。但这行不通。我得到的错误与我将直接运行docker容器而没有“-网络主机”的错误相同。

错误:

  

警告:准备失败:来自守护程序的错误响应:oci运行时错误:container_linux.go:265:启动容器进程导致“ process_linux.go:368:容器初始化导致\” process_linux.go:351:运行prestart钩子0导致\\“错误运行挂钩:退出状态1,stdout:,stderr:time = \\\\”“ 2019-04-12T18:42:33 + 02:00 \\\\”级别=致命msg = \\\\ “未能将接口vethfc7c8d1添加到沙箱:未能通过名称\\\\\\\\“ vethfc7c8d1 \\\\\\\\”获得链接:找不到链接\\\\“ \\ n \\” \ “”(executor_docker.go:423:16s)job = 123project = 123Runner = 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运行程序创建容器以使用主机网络,如docker参数:“ --network host”

1 个答案:

答案 0 :(得分:0)

我无法直接解决问题,但是我找到了另一种更好的方法。

我配置了GitLab Container Registry  上载一个自定义docker映像并将其列入白名单,然后启用我公司的Shared Runners。我上传的自定义图片是使用Dockerfile通过docker for windows创建的,从而避免了Windows linux子系统中有问题的docker的困扰。现在,我可以完美地执行我的CI管道,并且可以完全控制所使用的映像,而不必保持本地计算机的运行。