【问题标题】:Docker error during connect: Post http://docker:2375/v1.40/build?连接期间的 Docker 错误:发布 http://docker:2375/v1.40/build?
【发布时间】:2021-04-26 18:31:17
【问题描述】:

我正在使用docker+machine 运行我的gitlab ci/cd 作业。

所以我的.gitlab-ci.yml 如下所示:

stages:
  - RUN_TESTS

image:
  name: docker:stable

services:
  - name: docker:dind

variables:
  DOCKER_HOST: tcp://docker:2375/
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""    

build-docker:
  stage: RUN_TESTS
  script:
    - echo "Running the tests..."
    - docker build -t run-tests .

docker:dind 图像设置为service 块,如上所示,这完全可以工作。

现在有趣的部分来了,我需要docker:dind 图像中的一些其他包。所以我写了Dockerfile如下:

FROM docker:dind

RUN apk update

ENV PYTHONUNBUFFERED=1
RUN apk add --update --no-cache python3 && ln -sf python3 /usr/bin/python
RUN python3 -m ensurepip
RUN pip3 install --no-cache --upgrade pip setuptools

RUN apk add groff
RUN pip3 install awscli
RUN apk --purge -v del py-pip
RUN rm /var/cache/apk/*

所以,我构建了上面的图像并将其推送到我的 dockerhub 中。

到目前为止,一切都很酷。镜像构建成功,推送成功。

然后我将.gitlab-ci.yml 中的services 更改为我的新图像,如下所示:


services:
  - name: 199508/dind-new:latest

然后我运行了管道,我得到了下面的错误。

我在下面遇到的这个错误很奇怪:

连接时出错:发布 http://docker:2375/v1.40/build?buildargs=%7B%7D&cachefrom=%5B%5D&cgroupparent=&cpuperiod=0&cpuquota=0&cpusetcpus=&cpusetmems=&cpushares=0&dockerfile=Dockerfile&labels=%7B %7D&memory=0&memswap=0&networkmode=default&rm=1&session=n6fvaaoisom3ny2cfozrlom50&shmsize=0&t=run-tests&target=&ulimits=null&version=1: dial tcp: lookup docker on : no such host

我所做的唯一更改是在上述Dockerfile 中安装一些应用程序/依赖项,但为什么它不起作用?为什么当我使用 docker:dind 时它正在工作,而当我使用相同的 docker:dind 基本映像创建一个新的 Dockerfile 时它却不起作用?

有人可以帮帮我吗?

【问题讨论】:

标签: docker dockerfile gitlab-ci gitlab-ci-runner


【解决方案1】:

其实我昨天刚遇到这个问题 主要是切换到docker镜像版本 在你的情况下,Dockerfile 不像这里

FROM docker:18.09

并更改端口: 注释掉的行是曾经对我不起作用的行。

image: 199508/dind-new:v5
services:
  # - docker:19.03.12-dind
  - docker:18.09-dind


variables:
  # Use TLS https://docs.gitlab.com/ee/ci/docker/using_docker_build.html#tls-enabled
  DOCKER_HOST: tcp://docker:2375/
  # DOCKER_HOST: tcp://docker:2376
  # DOCKER_TLS_CERTDIR: "/certs"
  DOCKER_TLS_CERTDIR: ""
  CONTAINER_TEST_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_REF_SLUG
  CONTAINER_RELEASE_IMAGE: $CI_REGISTRY_IMAGE:latest
  DOCKER_DRIVER: overlay2

【讨论】:

  • 嗨,$CI_REGISTRY_IMAGE$CI_COMMIT_REF_SLUG$CI_REGISTRY_IMAGE 变量是什么?
  • 我的新图像名称是199508/dind-new:v5,我应该把它放在哪里?
  • 我将您的图片名称添加到应该在的示例中,据我所知,服务应该保持不变。
  • 你问的变量是供以后使用的,不是强制性的
  • 有没有办法可以将这些环境配置从.gitlab-ci.yml 中取出,并将其放在config.toml 中的某个位置以供跑步者使用?
猜你喜欢
  • 1970-01-01
  • 2021-07-04
  • 2016-06-13
  • 2022-07-17
  • 1970-01-01
  • 2015-02-26
  • 1970-01-01
  • 2021-06-09
  • 2021-08-17
相关资源
最近更新 更多