无法连接到 tcp://localhost:2375/上的 Docker 守护程序.docker 守护进程是否正在运行.在 GitLab 上 [英] Cannot connect to the Docker daemon at tcp://localhost:2375/. Is the docker daemon running. On GitLab

查看:107
本文介绍了无法连接到 tcp://localhost:2375/上的 Docker 守护程序.docker 守护进程是否正在运行.在 GitLab 上的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试在 GitLab 中构建 CI 管道.我想问一下在 GitLab CI 中工作的 docker.

I'm trying to build the CI pipeline in GitLab. I'd like to ask about the docker for work in GitLab CI.

从此问题:https://gitlab.com/gitlab-org/gitlab-runner/issues/4501#note_195033385

两种方式我都遵循说明.使用 TLS 而未使用 TLS.但它仍然卡住了.同样的错误

I'm follow the instruction for both ways. With TLS and not used TLS. But It's still stuck. Which in same error

无法连接到位于 tcp://localhost:2375/的 Docker 守护程序.docker 守护进程是否正在运行

我已尝试解决此问题.跟着下面,

I've try to troubleshooting this problem. follow by below,

1) 启用 TLS

其中使用 .gitlab-ci.yml 和 config.toml 在 Runner 中启用 TLS.

Which used .gitlab-ci.yml and config.toml for enable TLS in Runner.

这是我的 .gitlab-ci.yml

image: docker:19.03
variables:
  DOCKER_HOST: tcp://localhost:2375/
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: "/certs"
  IMAGE_NAME: image_name

services:
  - docker:19.03-dind

stages:
  - build

publish:
  stage: build
  script:
    - docker build -t$IMAGE_NAME:$(echo $CI_COMMIT_SHA | cut -c1-10) .
    - docker push $IMAGE_NAME:$(echo $CI_COMMIT_SHA | cut -c1-10)
  only:
    - master   

这是我的 config.toml

[[runners]]
  name = MY_RUNNER
  url = MY_HOST
  token = MY_TOKEN_RUNNER
  executor = "docker"
  [runners.custom_build_dir]
  [runners.docker]
    tls_verify = false
    image = "docker:stable"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/certs/client", "/cache"]                      
    shm_size = 0

2) 禁用 TLS

.gitlab-ci.yml

image: docker:18.09
variables:
  DOCKER_HOST: tcp://localhost:2375/
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""
  IMAGE_NAME: image_name

services:
  - docker:18.09-dind

stages:
  - build

publish:
  stage: build
  script:
    - docker build -t$IMAGE_NAME:$(echo $CI_COMMIT_SHA | cut -c1-10) .
    - docker push $IMAGE_NAME:$(echo $CI_COMMIT_SHA | cut -c1-10)
  only:
    - master   

这是我的 config.toml

[[runners]]
  environment = ["DOCKER_TLS_CERTDIR="]

有人知道吗?

推荐答案

你想将 DOCKER_HOST 设置为 tcp://docker:2375.它是一个服务",即运行在一个单独的容器中,默认以镜像名称命名,而不是本地主机.

You want to set DOCKER_HOST to tcp://docker:2375. It's a "service", i.e. running in a separate container, by default named after the image name, rather than localhost.

这是一个应该可以工作的 .gitlab-ci.yml 片段:

Here's a .gitlab-ci.yml snippet that should work:

# Build and push the Docker image off of merges to master; based off
# of Gitlab CI support in https://pythonspeed.com/products/pythoncontainer/
docker-build:
  stage: build

  image:
    # An alpine-based image with the `docker` CLI installed.
    name: docker:stable

  # This will run a Docker daemon in a container (Docker-In-Docker), which will
  # be available at thedockerhost:2375. If you make e.g. port 5000 public in Docker
  # (`docker run -p 5000:5000 yourimage`) it will be exposed at thedockerhost:5000.
  services:
   - name: docker:dind
     alias: thedockerhost

  variables:
    # Tell docker CLI how to talk to Docker daemon; see
    # https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#use-docker-in-docker-executor
    DOCKER_HOST: tcp://thedockerhost:2375/
    # Use the overlayfs driver for improved performance:
    DOCKER_DRIVER: overlay2
    DOCKER_TLS_CERTDIR: ""

  script:
    # Download bash:
    - apk add --no-cache bash python3
    # GitLab has a built-in Docker image registry, whose parameters are set automatically.
    # See https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#using-the-gitlab-contai
    #
    # CHANGEME: You can use some other Docker registry though by changing the
    # login and image name.
    - docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
    - docker build -t "$CI_REGISTRY_IMAGE" .
    - docker push "$CI_REGISTRY_IMAGE"

  # Only build off of master branch:
  only:
    - master

这篇关于无法连接到 tcp://localhost:2375/上的 Docker 守护程序.docker 守护进程是否正在运行.在 GitLab 上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆