我在虚拟机上测试了一个gitlab-runner,它运行得很好。我在使用docker-in-docker executor部分学习了这个教程:
https://docs.gitlab.com/ee/ci/docker/using_docker_build.html
当我在我的开发服务器上注册一个配置完全相同的runner时,runner在提交时被调用,但我得到了很多错误:
*** WARNING: Service runner-XXX-project-XX-concurrent-X-docker-X probably didn't start properly.
ContainerStart: Error response from daemon: Cannot link to a non running container: /runner-XXX-project-XX-concurrent-X-docker-X AS /runner-XXX-project-XX-concurrent-X-docker-X-wait-for-service/service (executor_docker.go:1337:1s)
DEPRECATION: this GitLab server doesn't support refspecs, gitlab-runner 12.0 will no longer work with this version of GitLab
$ docker info
error during connect: Get http://docker:2375/v1.39/info: dial tcp: lookup docker on MY.DNS.IP:53: no such host
ERROR: Job failed: exit code 1
我相信所有这些错误都是由于第一次警告。我试着:
- 使用www. example添加第二个DNS www.example.com IP到我的机器,同样的错误
- 在/etc/gitlab-runner/config中手动添加privileged=true。toml,相同的错误,所以它不是由privileged = true参数引起的
- 将tcp://docker:2375替换为tcp://localhost:2375,当docker info
gitlab-ci.yml内容:
image: docker:stable
stages :
- build
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
services:
- docker:dind
before_script:
- docker info
build-folder1:
stage: build
script:
- docker build -t image1 folder1/
- docker run --name docker1 -p 3001:5000 -d image1
only:
refs:
- dev
changes:
- folder1/**/*
build-folder2:
stage: build
script:
- docker build -t image2 folder2/
- docker run --name docker2 -p 3000:3000 -d image2
only:
refs:
- dev
changes:
- folder2/**/*
- 如果分支dev的folder 1被修改,我们构建并运行docker 1
- 如果分支dev的folder 2被修改,我们构建并运行docker 2
dev server上的docker版本:
docker -v
Docker version 17.03.0-ce, build 3a232c8
dev服务器上的gitlab-runner版本:
gitlab-runner -v
Version: 11.10.1
1条答案
按热度按时间5n0oy7gb1#
我将尝试为您提供一个答案,因为我在尝试运行DinD时解决了同样的问题。
此消息:
***警告:Service runner-XXX-project-XX-concurrent-X-docker-X可能没有正确启动。
表示您没有正确配置Runner,或者它没有通过
gitlab-ci.yml
文件链接。您应该能够在Gitlab的日志页面中检查跑步者的ID。首先,验证您是否正确输入了gitlab-runner register命令,并使用了正确的注册令牌。
第二,由于您正在手动设置特定的运行器,请验证您是否已为其设置了一些唯一的标记(例如:build_docker),并从您的
gitlab-ci.yml
文件调用它。例如:这样应该行得通。