【发布时间】:2018-09-26 01:44:50
【问题描述】:
我正在尝试在我的 gitlab 管道中实现一个 docker build 阶段。理想情况下,我可以先构建映像,然后针对容器运行后续阶段。但是,当我在下面的 gitlab-ci.yaml 中使用构建步骤时,有时会出现错误:
连接期间出错:获取http://docker:2375/v1.37/info:拨打tcp:在10.51.240.10:53 上查找docker:没有这样的主机 错误:作业失败:执行远程命令时出错:命令以非零退出代码终止:在 Docker 容器中执行时出错:1
在它不起作用的情况下,我只能猜测 docker 守护进程还没有准备好连接。有人对如何进行有任何想法吗?
gitlab-ci.yaml:
stages:
- build
build:
image: docker:18
services:
- docker:18-dind
variables:
DOCKER_DRIVER: overlay
DOCKER_HOST: tcp://docker:2375/
before_script:
- docker info
script:
- docker login -u "$CI_REGISTRY_USER" -p "$CI_REGISTRY_PASSWORD" "$CI_REGISTRY"
- docker pull ${CI_REGISTRY_IMAGE}:latest || echo Could not fetch ${CI_REGISTRY_IMAGE}:latest from registry
- docker pull ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG} || echo Could not fetch ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG} from registry
- docker build -t ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG} --cache-from ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG} .
- docker push ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG}
- if [[ ${CI_COMMIT_REF_SLUG} == "master" ]] ; then docker tag ${CI_REGISTRY_IMAGE}:${CI_COMMIT_REF_SLUG} ${CI_REGISTRY_IMAGE}:latest ; fi
- if [[ ${CI_COMMIT_REF_SLUG} == "master" ]] ; then docker push ${CI_REGISTRY_IMAGE}:latest ; fi
stage: build
更新:我正在使用 kubernetes 执行器。
【问题讨论】:
-
端口 53 是 DNS。看起来它无法解析
docker主机名。
标签: docker gitlab gitlab-ci gitlab-ci-runner