连接到Gitlab docker执行器内部启动的docker容器



我们有一个带有Sysbox的Gitlab设置(指向该设置的链接(,以避免在特权模式下运行docker执行器。目前,services属性可以工作,我们可以与它通信,但以dind开头的容器是不可访问的。这里有一个最小的.gitlab-ci.yml文件来重现这个问题:

docker_gitlab_test:
stage: test
image: docker:19.03.13
tags:
- docker # this is our docker executor
services:
- docker:19.03.12-dind
script:
- apk add curl
- mkdir test
- echo "hello world" > test/index.html
- docker run -d -p 8080:80 -v $(pwd)/test:/usr/share/nginx/html:ro --hostname nginx --name nginx nginx
- curl localhost:8080
variables:
DOCKER_DRIVER: overlay2
DOCKER_HOST: tcp://docker:2375
DOCKER_TLS_CERTDIR: ""

curl命令返回curl: (7) Failed to connect to localhost port 8080: Connection refused。运行nmap表示所有端口都已关闭。我知道这个设置适用于privilegeddocker执行器。我尝试在docker run命令上设置--privileged,但没有成功。我尝试过docker以外的其他基本映像,但问题仍然存在。我试过运行nginx以外的映像,但也出现了同样的问题。

如何允许gitlab作业访问在dind上分离运行的容器?

你能试试0.0.0.0而不是localhost吗?此外,转轮的network_mode属性应为host(https://docs.gitlab.com/runner/executors/docker.html)

最新更新