gitlab runner docker执行器(dind)-错误https://docker:2375/v1.40/info 拨号tcp:查找上的docker

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

我和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 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:“
  • 带/不带:
  • 将终结点添加到服务:
gitlab runner toml的内容

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