专栏名称: F嘉阳
JAVA 后台开发
目录
相关文章推荐
湖北经视  ·  38岁知名男演员官宣结婚!网友:恭喜 ·  昨天  
51好读  ›  专栏  ›  F嘉阳

Docker 19.03 版本对原Gitlab-Runner的影响

F嘉阳  · 掘金  ·  · 2019-07-28 14:06

正文

阅读 9

Docker 19.03 版本对原Gitlab-Runner的影响

版本变化始末

  • 在 2019.07.24 Docker社区发布了 19.03 的新版本,在此前版本号为 18.0x

新版本带来的坑

原本没太在意 docker 版本的变化,因为多数情况都是兼容旧版的所有特性和功能的

结果在近期的CICD构建中,在ci脚本没有变化的情况下突然所有 runner 的构建都失败了

随后立即采取以下措施尝试修复

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

均无效

1564288081390.png

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

Running with gitlab-runner 11.8.0 (4745a6f3)
  on docker-in-docker-runner 4iAG2sYM
Using Docker executor with image docker:stable ...
Starting service docker:dind ...
Pulling docker image docker:dind ...
Using docker image sha256:fd0c64832f7e46b63a180e6000dbba7ad7a63542c5764841cba73429ba74a39e for docker:dind ...
Waiting for services to be up and running...

*** WARNING: Service runner-4iAG2sYM-project-89-concurrent-0-docker-0 probably didn't start properly.

Health check error:
service "runner-4iAG2sYM-project-89-concurrent-0-docker-0-wait-for-service" timeout

Health check container logs:

...

2019-07-24T03:11:35.365911823Z time="2019-07-24T03:11:35.365537741Z" level=info msg="API listen on [::]:2376"
2019-07-24T03:11:35.366107674Z time="2019-07-24T03:11:35.365626706Z" level=info msg="API listen on /var/run/docker.sock"

*********

Pulling docker image docker:stable ...
Using docker image sha256:c4154a2b47a18fe9437956ab981bd5924b19e7ae3eb3ed60c42cf8dfa394d550 for docker:stable ...
复制代码

最终报错信息

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 服务和构建脚本均不变的情况下突然出现构建失败的情况

1564288454164.png

最终在社区ISSUS讨论中发现了相关讨论,并且问题发生时间相近

Jobs failing with "Cannot connect to the Docker daemon"

1564288560626.png

官方开发者解释 当天几个小时前发布的新版本 19.03 默认开启了 TLS 确实会影响已有的 Docker in Docker 模式的构建环境

1564288621569.png

同时官方开发人员建议自行部署的 runner 建议开启 TLS 功能

1564288718662.png

该开发者在另一个讨论中提供了19.03环境下的runner启动和配置样板,同时还有样例ci脚本

Update DinD example for 19.03

1564288829375.png

解决方法

  1. 最好可以卸载旧版本的Docker,尽管运行runner和dind环境都基于docker容器中
  2. 加入TLS相关runner注册配置

此处采用更新Docker版本并使用最新版的runner镜像进行注册

更新docker版本

官方文档

卸载旧docker

$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
复制代码

配置生产环境的依赖仓库

$ sudo yum-config-manager \
    --add-repo \
    https://download.docker.com/linux/centos/docker-ce.repo
复制代码

官方建议 的安装新版Docker命令

$ sudo yum install docker-ce docker-ce-cli containerd.io
复制代码

但经过这次事件后个人不建议使用该命令,而是应该手动指定所有Docker环境版本号,防止以后版本更新导致不兼容问题

查看当前可以安装的所有版本

$ sudo yum list docker-ce --showduplicates | sort -r
 * updates: repos.lax.quadranet.com
Loaded plugins: fastestmirror
 * extras: mirror.hostduplex.com
 * epel: d2lzkl7pfhq30w.cloudfront.net
 * elrepo-kernel: repos.lax-noc.com
docker-ce.x86_64            3:19.03.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:19.03.0-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.8-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.7-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.6-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.5-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.4-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.3-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.2-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.1-3.el7                     docker-ce-stable
docker-ce.x86_64            3:18.09.0-3.el7                     docker-ce-stable
docker-ce.x86_64            18.06.3.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.2.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.1.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.06.0.ce-3.el7                    docker-ce-stable
docker-ce.x86_64            18.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            18.03.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.12.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.09.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.06.0.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.3.ce-1.el7                    docker-ce-stable
docker-ce.x86_64            17.03.2.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.1.ce-1.el7.centos             docker-ce-stable
docker-ce.x86_64            17.03.0.ce-1.el7.centos             docker-ce-stable
Determining fastest mirrors
 * base: mirror.hostduplex.com
Available Packages
复制代码






请到「今天看啥」查看全文