Docker服务中的Docker损坏了Gitlab CI / CD

问题描述

CI作业使用docker:dind映像作为特定构建的服务。但是,在执行过程中出现错误

.gitlab-ci.yml:

image: tmaier/docker-compose:latest

services:
  - docker:18.09.7-dind

variables:
  DOCKER_DRIVER: overlay2

stages:
  - test
  - build
  - push
  - clean-up

before_script:
  - docker info
  - apk update
  - apk add make
  - make down

test:
  stage: test
  tags: [test]
  image: tiangolo/docker-with-compose:latest
  script:
    - make prod-up
    - make composer-init-dev
    - make test

config.toml:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800
[[runners]]
  name = "My Docker Runner"
  url = "https://###/"
  token = "FRft8kukkz3qwXw6kkFJ"
  executor = "docker"
  pre_clone_script = "git config --global http.sslVerify false"
  [runners.custom_build_dir]
  [runners.docker]
    tls_verify = false
    image = "tiangolo/docker-with-compose"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]
    Insecure = false
    [runners.cache.s3]
    [runners.cache.gcs]

错误:

服务器: 错误:无法通过tcp:// docker:2375连接到Docker守护程序。泊坞窗守护程序正在运行吗? 错误漂亮的打印信息 错误:作业失败:退出代码1

有关此问题https://gitlab.com/gitlab-org/gitlab-runner/-/issues/26727的所有信息

解决方法

万一有人偶然发现了这个问题,又不想阅读评论和问题编辑来找到问题的解决方案,则:

在OP的原始CI配置中,声明了两个docker-in-docker服务:

  • 全局docker:18.09.7-dind
  • 特定工作:docker:dind

似乎他们互相干扰,并且当OP删除特定于工作的作业时,一切都开始起作用。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...