我最近在gitlab.com中创建了一个新的存储库,在digitalocean中启动了一个新的Ubuntu实例,在ubuntu实例中安装了docker和gitlab-runner。另外,gitlab-runner是否已注册并通过gitlab.com ci / cd设置传递了正确的主机和令牌。推送了一个分支,预期的管道作业运行但失败了,并显示错误:通过在Google搜索时查找错误,没有任何信息。

config.toml文件在gitlab-runner寄存器上自动创建:

error during connect: Get http://docker:2375/v1.40/containers/json?all=1: dial tcp: lookup docker on 67.207.67.2:53: no such host


gitlab ci文件:

concurrent = 1
check_interval = 0

[[runners]]
  name = "digital ocean runner"
  url = "https://gitlab.com/"
  token = "xxxxxxxxxxxxxxxxx"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "ruby:2.1"
    privileged = true
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]


重现步骤

image: docker:latest
services:
  - docker:dind
stages:
  - test

test-build:
  stage: test
  script:
    - echo "Fine!"
    - docker info
  tags:
    - docker


导致此问题的原因?

其中一项测试的错误日志,而不是以上工作的错误日志:

open a gitlab.com account
Install Ubuntu latest
Install gitlab-runner
do `register` and should have the config.toml above


评论

不确定拒绝投票和没有贡献的目的是什么。上面的问题是一个已知问题,而gitlab ci尚未提供修复。非常感谢您的不赞成票,这是建立一个很棒的社区的方式。

#1 楼

我可能在我的Ubuntu实例中跳过了docker的可选安装,因此,如果gitlabRunner要使用Docker,请记住安装它:

curl -sSL https://get.docker.com/ | sh


我回来了这个问题,并且似乎通过检查gitlab运行程序是否已运行而部分修复了它。相关。那就是:

gitlab-runner status

systemctl is-enabled gitlab-runner

systemctl is-enabled docker


然后我找到了解决方案,在这里报告了Gitlab CI中的一个问题(https://gitlab.com/gitlab-org/gitlab -runner / issues / 4566#note_199261985);有很多方法可以解决此问题,但是我的解决方案如下:

1)将.gitlab-ci.yml服务设置为使用旧的dind版本:

error during connect: Post http://docker:2375/v1.40/images/ [...] dial tcp: lookup docker on xx.xxx.xx.x:xx: no such host


2)检查toml文件/etc/gitlab-runner/config.toml,将DOCKER_HOST设置为以防万一,以指向正确的位置,并确保它以privileged模式运行。我的工作版本是:

services:
  - docker:18.09.7-dind


希望以后对其他人有帮助!

#2 楼

我要分享解决方案!
只需添加image = docker:stable privileged = true
就可以了!享受吧!