Docker 连接时出错:Post http://docker:2375/v1.40/build?
Docker error during connect: Post http://docker:2375/v1.40/build?
我正在使用 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
然后我 运行 管道,我得到以下错误。
我得到的这个错误是 st运行ge:
error during connect: Post 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
中安装了一些 applications/dependencies 但为什么它不起作用?为什么当我使用 docker:dind
时它工作正常,而当我使用相同的 docker:dind
基础图像创建新的 Dockerfile
时却不起作用?
有人可以帮我吗?
其实我昨天才运行遇到这个问题
主要是切换到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
我正在使用 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
然后我 运行 管道,我得到以下错误。
我得到的这个错误是 st运行ge:
error during connect: Post 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
中安装了一些 applications/dependencies 但为什么它不起作用?为什么当我使用 docker:dind
时它工作正常,而当我使用相同的 docker:dind
基础图像创建新的 Dockerfile
时却不起作用?
有人可以帮我吗?
其实我昨天才运行遇到这个问题 主要是切换到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