如何解决GitLab CI启动意外的docker:dind版本
我想在GitLab CI中使用docker:dind服务来构建docker映像,但是运行程序不断启动错误的dind版本(19.03.8-dind),并在下面显示错误消息。
Error response from daemon: stat /var/lib/docker/tmp: no such file or directory
最近,我在运行gitlab-runner的主机服务器中将Docker版本从18.06.1更新为19.03.12并发生了问题。
注意:升级之前一切正常。我试图将Docker版本降级到18.06.1,这次没有运气。 GitLab Runner使用此Docker作为执行程序。
我以前使用19.03.8-dind作为docker守护程序。我使用 docker system prune 删除了主机中的每个映像,但是错误仍然存在。
我遵循GitLab Docs来配置.gitlab-ci.yml。
这是.gitlab-ci.yml文件
stages:
- build
docker build:
stage: build
# this is my customized docker image with golang:1.14 and docker:19.03.0
image: go-docker:1.14-19.03.0
services:
- name: docker:19.03.0-dind
variables:
DOCKER_TLS_CERTDIR: ""
DOCKER_HOST: tcp://docker:2375
tags:
- linux
before_script:
- docker version
script:
- docker build ......
和 docker版本输出为
$ docker version
Client: Docker Engine - Community
Version: 19.03.0
API version: 1.40
Go version: go1.12.5
Git commit: aeac9490dc
Built: Wed Jul 17 18:11:50 2019
OS/Arch: linux/amd64
Experimental: false
Server: Docker Engine - Community
Engine:
Version: 19.03.8
API version: 1.40 (minimum version 1.12)
Go version: go1.12.17
Git commit: afacb8b7f0
Built: Wed Mar 11 01:30:32 2020
OS/Arch: linux/amd64
Experimental: false
containerd:
Version: v1.2.13
GitCommit: 7ad184331fa3e55e52b890ea95e65ba581ae3429
GitLab版本为12.10.3,GitLab运行程序为12.10.2。
在仍然使用Dind方法的同时,我该怎么做才能解决问题?
解决方法
我无法在Amazon Lightsail的廉价$ 5 VM上安装Gitlab Runner并使用docker:dind
服务。
自从本月以来,Gitlab已将reduced runner minute quotas的免费计划从2000分钟延长到400分钟,这对我来说已经很紧急。
尝试几次安装后,我发现问题是Docker没有以特权模式运行。
full install script如下,您可以在新的VM上运行它,其中包括说明链接:
# 1. INSTALL GITLAB RUNNER
# @see https://docs.gitlab.com/runner/install/linux-repository.html
curl -L https://packages.gitlab.com/install/repositories/runner/gitlab-runner/script.deb.sh | sudo bash
export GITLAB_RUNNER_DISABLE_SKEL=true; sudo -E apt-get install gitlab-runner
# 2. INSTALL DOCKER
# @see https://docs.docker.com/engine/install/ubuntu/
sudo apt-get install -y apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io
# 3. REGISTER RUNNER WITH GITLAB.COM
# @see https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
sudo gitlab-runner register -n \
--url https://gitlab.com/ \
--registration-token $REGISTRATION_TOKEN \
--executor docker \
--description "My Docker Runner" \
--docker-image "docker:19.03.12" \
--docker-privileged \
--docker-volumes "/certs/client"
此后,我能够毫无问题地运行docker:dind
服务,我什至不需要指定任何特殊图像,例如docker:19.03.12-dind
:
image: docker
services:
- docker:dind
build:
stage: build
script:
- docker info
... your code needing docker here ...
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。