我正在尝试在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
谢谢
答案 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 register
或DOCKER_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 桌面打开设置
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 守护程序。