问题描述
我正在尝试在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.
此问题:
我都遵循两种方法的说明。使用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上的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!