簡體   English   中英

Gitlab-runner, docker:20.10.2-dind 顯示錯誤, Cannot connect to the Docker daemon at tcp://docker:2375

[英]Gitlab-runner, docker:20.10.2-dind shows error, Cannot connect to the Docker daemon at tcp://docker:2375

在 helm 安裝的 GCP 上的自托管 Gitlab 上,我使用 Gitlab-runner。

在 gitlab-runner 上我需要使用 docker 所以使用 dind,但是我得到了錯誤

tcp://碼頭工人:2375。 docker 守護程序是否正在運行?

gitlab-runner部署

...
    spec:
      containers:
      - command:
        - /bin/bash
        - /scripts/entrypoint
        env:
        - name: CI_SERVER_URL
          value: https://my-gitlab.com
        - name: CLONE_URL
        - name: RUNNER_REQUEST_CONCURRENCY
          value: "1"
        - name: RUNNER_EXECUTOR
          value: kubernetes
        - name: REGISTER_LOCKED
          value: "false"
        - name: RUNNER_TAG_LIST
        - name: KUBERNETES_IMAGE
        - name: KUBERNETES_PRIVILEGED
          value: "true" # <= set privileged true to use dind
...

gitlab-ci.yaml

services:
  - docker:20.10.4-dind

stages:
    - build

variables:
    GIT_SSL_NO_VERIFY: "1"    
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: ''
    DOCKER_HOST: tcp://docker:2375

image:
    name: google/cloud-sdk:latest
before_script:
  - docker version

build:
  stage: build
  script:
    - echo hello

gitlab-runner 日志

Executing "step_script" stage of the job script
00:00
$ docker version
Cannot connect to the Docker daemon at tcp://docker:2375. Is the docker daemon running?
Client: Docker Engine - Community
 Version:           19.03.11
 API version:       1.40
 Go version:        go1.13.10
 Git commit:        42e35e61f3
 Built:             Mon Jun  1 09:09:53 2020
 OS/Arch:           linux/amd64
 Experimental:      false
Cleaning up file based variables
00:00
ERROR: Job failed: command terminated with exit code 1

故障排除說這是因為 TLS。 所以我設置DOCKER_TLS_CERTDIR: '' ,方法寫在另外一個文檔中。

另外,當我使用docker:19.03.0-dind時沒有發生這個問題。 從 19.03.0-dind 開始,TLS 是自動的。 因此禁用 TLS 配置必須正常工作。 (docker:19.3.13-dind 也運行良好。)

我不知道為什么從 docker:20 開始出現這個錯誤。 有沒有人已經嘗試過使用大於 docker:20 的 gitlab-runner?

我發現我應該遵循https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#docker-in-docker-with-tls-enabled-in-kube.netes

湯姆

runners:
  config: |
    [[runners]]
      [runners.kubernetes]
        image = "ubuntu:20.04"
        privileged = true
      [[runners.kubernetes.volumes.empty_dir]]
        name = "docker-certs"
        mount_path = "/certs/client"
        medium = "Memory"

gitlab-ci.yaml

services:
  - docker:20.10.4-dind

stages:
    - build

variables:
    GIT_SSL_NO_VERIFY: "1"    
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: "/certs" 
    DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"    
    DOCKER_HOST: tcp://docker:2376
    DOCKER_TLS_VERIFY: 1
    
image:
    name: google/cloud-sdk:latest
before_script:
  - docker version

build:
  stage: build
  script:
    - echo hello

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM