错误: 作业失败(系统故障): 无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。Windows 10 上的 Docker 守护程序正在运行吗?
错误: 作业失败(系统故障): 无法连接到 unix:///var/run/docker.sock 上的 Docker 守护程序。Windows 10 上的 Docker 守护程序正在运行吗?
我正在尝试在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
另一个用于runner的容器
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
并在runner容器的/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)
我不明白这是从哪里来的。
我尝试了一些在互联网上找到的解决方案,但到目前为止,没有任何有效。
我在哪里可以找到一些日志文件以查看发生了什么?我已经在gitlab容器的/var/log/gitlab日志文件中搜索过,但是我找不到任何关于这两个容器之间的详细信息。
gitlab主机名、"localhost"名称、计算机IP之间是否存在问题?是否有防火墙?这是一个类似于我看到的所有问题的问题吗?执行程序是否接收到他必须执行的作业,但是gitlab没有收到答案?
迄今为止,我尝试的大部分事情都使情况变得更糟,我需要一些提示。
我的.gitlab-ci.yml(非常简单):
variables:
HELLO: World
test:
script:
- echo $HELLO
我的配置:
Docker桌面社区版2.0.0.3(Engine 18.09.2) GitLab社区版12.5.2 Gitlab Runner 12.5.0 Windows 10.0.17763
谢谢
问题的原因是无法连接到Docker守护进程,解决方法是在Docker运行命令时添加选项--net=host,并将服务器IP作为容器IP。
在Windows 10上使用Docker时,有时会出现无法连接到Docker守护进程的错误。这可能是因为守护进程没有运行,或者存在其他连接问题。解决这个问题的方法是在Docker运行命令中添加选项--net=host,并将服务器IP作为容器IP。这样,守护进程就可以通过服务器IP被GitLab识别。
具体的解决方法是,在运行命令中添加选项--net=host,如下所示:
docker run --net=host [其他选项] [镜像名称]
其中,[其他选项]是其他运行时需要的选项,[镜像名称]是要使用的镜像名称。
这个解决方法适用于Linux主机,对于Windows主机,可以尝试参考Stack Overflow上的解决方案,链接如下:stackoverflow.com/questions/40746453
这个问题的出现的原因是无法连接到Docker守护程序,可能是因为Docker守护程序没有运行。要解决这个问题,可以进行以下配置:
1. 打开GitLab Runner的配置文件(路径为/etc/gitlab-runner/config.toml)。
2. 在配置文件中找到[[runners]]
部分。
3. 在[runners.docker]
下添加host
字段,并设置为"tcp://docker.for.win.localhost"
或者"tcp://10.0.75.1"
。
4. 保存配置文件并重启GitLab Runner。
这样配置之后,应该可以解决无法连接到Docker守护程序的问题。然而,有可能还会遇到其他错误,如"ERROR: Preparation failed: Error response from daemon: The requested URL /v1.25/info was not found on this server"。