错误:作业失败(系统故障):无法通过unix:///var/run/docker.sock连接到Docker守护程序。泊坞窗守护程序正在运行吗?在Windows 10上

时间:2019-12-20 09:34:59

标签: docker gitlab gitlab-ci-runner

我正在尝试在Windows 10 PC上设置gitlab CI。

我为gitlab创建了一个docker容器(卷是docker卷)

docker run --detach --name gitlab --hostname gitlab.mod --publish 4443:443 --publish 4480:80 --publish 8222:22 --volume gitlab-conf:/etc/gitlab --volume gitlab-logs:/var/log/gitlab --volume gitlab-data:/var/opt/gitlab gitlab/gitlab-ce

另一个赛跑者

docker run -d --name gitlab-runner -v gitlab-runner-conf:/etc/gitlab-runner gitlab/gitlab-runner:latest

已注册

docker run --rm -t -i -v gitlab-runner-conf:/etc/gitlab-runner gitlab/gitlab-runner register --url "http://11.22.33.44:4480/" --registration-token "sEcrEttOkEnfOrgItlAb" --description "Runner" --executor "docker" --docker-image alpine:latest --docker-services postgres:latest

其中11.22.33.44是我的计算机的IP

但是当我推送提交时,我遇到了错误

Running with gitlab-runner 12.5.0
  on Runner
ERROR: Job failed (system failure): Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? (executor_docker.go:980:0s)

如果我设置参数以在端口2375上公开docker:

  settings > General > Expose daemon on tcp://localhost:2375

在运行容器中的/etc/gitlab-runner/config.toml中:

  [runners.docker]
      host = "tcp://11.22.33.44:2375"

我有几乎相同的错误消息:

Running with gitlab-runner 12.5.0 (577f813d)
  on Runner
ERROR: Job failed (system failure): Cannot connect to the Docker daemon at tcp://11.22.33.44:2375. Is the docker daemon running? (executor_docker.go:980:1s)

我不知道这是从哪里来的。 我已经尝试了一些在Internet上找到的解决方案,但到目前为止没有任何效果。

我在哪里可以找到一些日志文件以查看发生了什么?我已经查看了gitlab容器的/ var / log / gitlab日志文件,但找不到两个容器之间的详细信息。

gitlab主机名,“ localhost”名和计算机IP之间是否存在问题?某处有防火墙?这是一个与我所见过的问题类似的问题吗?跑步者是否得到了必须执行的工作,但gitlab没有听到答案?

到目前为止,我尝试过的大多数方法都使情况变得更糟,我需要一些提示

我的.gitlab-ci.yml(非常简单):

variables:
    HELLO: World

test:
    script:
        - echo $HELLO

我的配置

Docker Desktop Community edition 2.0.0.3 (Engine 18.09.2)
GitLab Community Edition 12.5.2
Gitlab Runner 12.5.0
Windows 10.0.17763

谢谢

3 个答案:

答案 0 :(得分:0)

如果您的目标是注册docker executor,一种简单的方法是运行命令Support of object arrays in matmul¶ It is now possible to use matmul (or the @ operator) with object arrays. For instance, it is now possible to do: from fractions import Fraction a = np.array([[Fraction(1, 2), Fraction(1, 3)], [Fraction(1, 3), Fraction(1, 2)]]) b = a @ a 并按照交互式说明进行操作,它将填充您的config.toml

当您尝试在运行器映像中使用 docker镜像中的docker 来执行docker命令时,也会出现此错误。

在这种情况下,使用的运行器标签必须将特权设置为true,并且您可以在gitlab-ci文件中定义变量gitlab-runner.exe registerDOCKER_DRIVER: overlay

答案 1 :(得分:0)

这似乎可以解决

配置运行器(/etc/gitlab-runner/config.toml):

[[runners]]
  [runners.docker]
    host = "tcp://docker.for.win.localhost"
...

[[runners]]
  [runners.docker]
    host = "tcp://10.0.75.1"
...

我说似乎是因为我仍然有错误(但不相同) => ERROR: Preparation failed: Error response from daemon: The requested URL /v1.25/info was not found on this server

答案 2 :(得分:0)

在 Docker for Windows 中使用运行器时涉及一些额外的步骤。


假设我们有如下定义的主机(运行 Docker 的机器的 IP)和 GitLab 实例:

主机:11.22.33.44

GITLAB_IP:55.66.77.88

1.启动运行器,指定并转发到达宿主 Docker 守护进程的地址

docker run -p 2375:2375 -d --name gitlab.runner --env DOCKER_HOST=tcp://11.22.33.44:2375 --restart always -v C:/temp/srv/gitlab-runner/config/:/etc/gitlab.runner -v C:/temp/var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

2.使用特权注册跑步者

docker exec gitlab.runner gitlab-runner register -n --url=http://55.66.77.88:9000/ --registration-token=sEcrEttOkEnfOrgItlAb --description="Shared Docker Runner" --executor=docker --docker-image=docker --docker-privileged=true

3.暴露端口 从 Windows 版 Docker 桌面打开设置

Expose port on Docker Desktop

4.为运行程序提供端口

在 Windows Docker 上,端口 2375 只能通过主机环回访问(例如,http://127.0.0.1:2375 可以工作,但 http://someRemoteAddress:2375 不行)。 GitLab Runner 正在其容器内运行,因此我们需要将来自 GitLab runner 实例上端口 2375 的任何内容重定向到 Docker 实例。

在提升的 Powershell 会话中执行:

netsh interface portproxy add v4tov4 listenport=2375 listenaddress=11.22.33.44 connectport=2375 connectaddress=127.0.0.1

请注意,这些步骤仅在运行器在容器内运行时才需要。如果它直接在主机上运行,​​它将可以访问 Docker 守护程序。