我想在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”
答案 0 :(得分:0)
我无法直接解决问题,但是我找到了另一种更好的方法。
我配置了GitLab Container Registry 上载一个自定义docker映像并将其列入白名单,然后启用我公司的Shared Runners。我上传的自定义图片是使用Dockerfile通过docker for windows创建的,从而避免了Windows linux子系统中有问题的docker的困扰。现在,我可以完美地执行我的CI管道,并且可以完全控制所使用的映像,而不必保持本地计算机的运行。