gitlab runner docker执行器(dind)-错误https://docker:2375/v1.40/info 拨号tcp:查找上的docker
我和gitlab runner executor docker有问题。在我运行gitlab-ci.yml文件后,管道在步骤gitlab runner docker执行器(dind)-错误https://docker:2375/v1.40/info 拨号tcp:查找上的docker,docker,gitlab-ci,gitlab-ci-runner,Docker,Gitlab Ci,Gitlab Ci Runner,我和gitlab runner executor docker有问题。在我运行gitlab-ci.yml文件后,管道在步骤docker info期间在before\u script中失败,原因是: Running with gitlab-runner 13.10.0 (54944146) on docker-runner N2_yEgUD Preparing the "docker" executor 00:07 Using Docker executor with im
docker info
期间在before\u script
中失败,原因是:
Running with gitlab-runner 13.10.0 (54944146)
on docker-runner N2_yEgUD
Preparing the "docker" executor 00:07
Using Docker executor with image docker:19.03.0 ...
Starting service docker:19.03.0-dind ...
Pulling docker image docker:19.03.0-dind ...
Using docker image sha256:fd0c64832f7e46b63a180e6000dbba7ad7a63542c5764841cba73429ba74a39e for docker:19.03.0-dind with digest docker@sha256:442ac4b31375cbe617f31759b5199d240f11d5f430e54946575b274b2fb6f096 ...
Waiting for services to be up and running...
.............................................................................................
$ docker info
Client:
Debug Mode: false
Server:
ERROR: error during connect: Get https://docker:2375/v1.40/info: dial tcp: lookup docker on 127.0.0.53:53: server misbehaving
errors pretty printing info
Cleaning up file based variables 00:01
ERROR: Job failed: exit code 1
我在stack和gitlab官方论坛上做了一项研究,但没有一个答案能解决我的问题:
- 添加到.toml->
卷:['/certs/client']
- 运行旧的:
/docker:18.x.x
|docker:18.x.x-dind
/docker:stable
docker:dind
- 运行时使用:
DOCKER\u TLS\u CERTDIR:“
- 带/不带:
- 将终结点添加到服务:
concurrent = 1
check_interval = 0
log_level = "debug"
[session_server]
session_timeout = 1800
[[runners]]
name = "docker-runner"
url = "xxxxxxxx"
token = "xxxxxxx"
executor = "docker"
[runners.cache]
[runners.cache.s3]
[runners.cache.gcs]
[runners.cache.azure]
[runners.docker]
tls_verify = false
privileged = true
image = "docker:19.03.12"
disable_cache = false
volumes = ["/cache", "/certs/client"]
network_mode = "host"
gitlab-ci.yml的内容
image: docker:19.03.0
services:
- docker:19.03.0-dind
stages:
- build
- test_framework
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
CONTAINER_TEST_IMAGE: xxxx
CONTAINER_RELEASE_IMAGE: xxxx
before_script:
- docker info
- docker login -u xxxx -p $CI_JOB_TOKEN xxxx
build:
stage: build
tags:
- adm-docker
script:
- docker pull $CONTAINER_RELEASE_IMAGE || true
- docker build -t $CONTAINER_TEST_IMAGE --cache-from $CONTAINER_RELEASE_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
timeout: 1 hours
.test_commit: &test_commit
stage: test_framework
image: $CONTAINER_TEST_IMAGE
tags:
- adm-docker
timeout: 1 hours
artifacts:
reports:
junit: 'results/xunit.xml'
expire_in: 1 day
except:
- master
test-unit:
<<: *test_commit
script:
- python3 -m pytest --junitxml=results/xunit.xml test_unit/
image: docker:19.03.5
services:
- docker:19.03.5-dind
stages:
- build
- test_framework
- release
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
CONTAINER_TEST_IMAGE: xxxxx
CONTAINER_RELEASE_IMAGE: xxxxx
build:
stage: build
tags:
- adm-docker
before_script:
- docker info
- docker login -u xxxxx -p $CI_JOB_TOKEN xxxxx
script:
- docker pull $CONTAINER_RELEASE_IMAGE || true
- docker build -t $CONTAINER_TEST_IMAGE --cache-from $CONTAINER_RELEASE_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
timeout: 1 hours
.test_commit: &test_commit
stage: test_framework
tags:
- adm-docker
timeout: 1 hours
artifacts:
reports:
junit: 'results/xunit.xml'
expire_in: 1 day
except:
- master
test-unit:
<<: *test_commit
image: $CONTAINER_TEST_IMAGE
script:
- python3 -m pytest --junitxml=results/xunit.xml test_unit/
image:docker:19.03.0
服务:
-docker:19.03.0-dind
阶段:
-建造
-测试框架
变量:
DOCKER_主机:tcp://docker:2375/
DOCKER_驱动程序:覆盖2
DOCKER\u TLS\u CERTDIR:“/certs”
容器测试图像:xxxx
集装箱发布图片:xxxx
在脚本之前:
-码头工人信息
-docker登录-u xxxx-p$CI\u作业\u令牌xxxx
建造:
阶段:建造
标签:
-行政码头工人
脚本:
-docker pull$CONTAINER|u RELEASE|u IMAGE|true
-docker build-t$CONTAINER\u TEST\u IMAGE——缓存$CONTAINER\u RELEASE\u IMAGE。
-docker推送$CONTAINER\u测试\u图像
超时:1小时
.test_commit:&测试_commit
阶段:测试框架
图像:$CONTAINER\u TEST\u图像
标签:
-行政码头工人
超时:1小时
人工产品:
报告:
junit:'results/xunit.xml'
过期时间:1天
除:
-主人
测试单元:
我可以通过更改gitlab-ci.yml的流来解决这个问题
image: docker:19.03.0
services:
- docker:19.03.0-dind
stages:
- build
- test_framework
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: "/certs"
CONTAINER_TEST_IMAGE: xxxx
CONTAINER_RELEASE_IMAGE: xxxx
before_script:
- docker info
- docker login -u xxxx -p $CI_JOB_TOKEN xxxx
build:
stage: build
tags:
- adm-docker
script:
- docker pull $CONTAINER_RELEASE_IMAGE || true
- docker build -t $CONTAINER_TEST_IMAGE --cache-from $CONTAINER_RELEASE_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
timeout: 1 hours
.test_commit: &test_commit
stage: test_framework
image: $CONTAINER_TEST_IMAGE
tags:
- adm-docker
timeout: 1 hours
artifacts:
reports:
junit: 'results/xunit.xml'
expire_in: 1 day
except:
- master
test-unit:
<<: *test_commit
script:
- python3 -m pytest --junitxml=results/xunit.xml test_unit/
image: docker:19.03.5
services:
- docker:19.03.5-dind
stages:
- build
- test_framework
- release
variables:
DOCKER_DRIVER: overlay2
DOCKER_TLS_CERTDIR: ""
CONTAINER_TEST_IMAGE: xxxxx
CONTAINER_RELEASE_IMAGE: xxxxx
build:
stage: build
tags:
- adm-docker
before_script:
- docker info
- docker login -u xxxxx -p $CI_JOB_TOKEN xxxxx
script:
- docker pull $CONTAINER_RELEASE_IMAGE || true
- docker build -t $CONTAINER_TEST_IMAGE --cache-from $CONTAINER_RELEASE_IMAGE .
- docker push $CONTAINER_TEST_IMAGE
timeout: 1 hours
.test_commit: &test_commit
stage: test_framework
tags:
- adm-docker
timeout: 1 hours
artifacts:
reports:
junit: 'results/xunit.xml'
expire_in: 1 day
except:
- master
test-unit:
<<: *test_commit
image: $CONTAINER_TEST_IMAGE
script:
- python3 -m pytest --junitxml=results/xunit.xml test_unit/
问题已通过volumes=[“/cache”、“/var/run/docker.sock:/var/run/docker.sock”]解决。
测试阶段的问题由以下因素引起:
before_script:
- docker info
- docker login -u xxxxx -p $CI_JOB_TOKEN xxxxx
在.yml文件的根结构中。我不得不将其移动到构建阶段
我希望这将对ppl未来有所帮助您是否遵循了官方文件?你能检查一下第四步和第五步吗?快速查看了一下您的config.toml
和gitlab ci.yml
,但我认为两者都很好。关于->步骤4和步骤5,您是什么意思。关于哪个主题?文档中“使用shell执行器”部分的第4步和第5步:(4)将gitlab runner用户添加到docker组(5)使用docker executor->docker run验证gitlab runner是否可以访问DockerIam。。。。。。gitlab/gitlab runner
before_script:
- docker info
- docker login -u xxxxx -p $CI_JOB_TOKEN xxxxx