以前升级docker版本时,多数情况都是兼容旧版的所有特性和功能的
结果在近期的CICD构建中,在ci脚本没有变化的情况下突然所有runner的构建都失败了
随后立即采取以下措施尝试修复

  1. 工程版本回退到上一次可用状态
  2. 更换runner服务器和容器
  3. 更改ci脚本
  4. 重启docker服务

均无效
执行构建步骤出现了以往没有出现过的警告信息

最终报错信息

Downloading artifacts for maven-build (280)...
Downloading artifacts from coordinator... ok        id=280 responseStatus=200 OK token=L9iuC5Ss
$ docker build -t $CONTAINER_IMAGE:$IMAGE_VERSION .
Cannot connect to the Docker daemon at tcp://docker:2375. Is the docker daemon running?
ERROR: Job failed: exit code 1

寻找解决方法

该错误在早期版本就出现过,但与本次情况均不符合,以往通过挂载容器路径即可,而本次情况是runner服务和构建脚本均不变的情况下突然出现构建失败的情况
在官方文档中看到了相关信息
https://docs.gitlab.com/ce/ci/docker/using_docker_build.html#use-docker-in-docker-executor
官方开发者解释 当天几个小时前发布的新版本 19.03默认开启了TLS确实会影响已有的Docker in Docker模式的构建环境
image.png

image.png
试了一上午各种方式,最后采用了官方文档的
--docker-volumes /var/run/docker.sock:/var/run/docker.sock
image.png

后成功运行了
完整的注册代码为

gitlab-runner register \
  --url "https://gitlab.gd.com/" \
  --registration-token "token" \
  --executor docker \
  --description "docker-gitlab-runner" \
  --docker-image "docker:19.03.2" \
  --docker-privileged \
  --docker-volumes /var/run/docker.sock:/var/run/docker.sock \
  --tag-list "docker,gd" \
  --run-untagged="true" \
  --locked="false" \
  --access-level="not_protected"
宝剑锋从磨砺出,梅花香自苦寒来.