【发布时间】: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 时它却不起作用?
有人可以帮帮我吗?
【问题讨论】:
-
您所描述的问题在 GitLab 博客文章中有详细说明:about.gitlab.com/blog/2019/07/31/…
标签: docker dockerfile gitlab-ci gitlab-ci-runner