我在GitLabCI上遇到问题,我正在gitlab.com上使用它。
我已经在我的.gitlab-ci.yml
dockerization:
image: docker:latest
stage: dockerization
variables:
DOCKER_IMAGE_TAG: "eu.gcr.io/sample-project/sample-app"
script:
- docker version
- echo "$SERVICE_ACCOUNT_KEY" > key.json
- docker login -u _json_key --password-stdin https://eu.gcr.io < key.json
- docker push ${DOCKER_IMAGE_TAG}
only:
- master
我在管道中收到错误:
$ docker version
Client: Docker Engine - Community
Version: 18.09.0
API version: 1.39
Go version: go1.10.4
Git commit: 4d60db4
Built: Wed Nov 7 00:46:51 2018
OS/Arch: linux/amd64
Experimental: false
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
ERROR: Job failed: exit code 1
我尝试将DOCKER_HOST: "tcp://127.0.0.1:2375"
添加到作业或/和DOCKER_HOST: "tcp://localhost:2375"
,DOCKER_HOST: "tcp://docker:2375"
但没有效果。
这个问题有解决方案吗?我的管道声明有问题吗?
欢呼
答案 0 :(得分:1)
DOCKER_HOST: "tcp://docker:2375"
是正确的解决方案,但是您需要添加
services:
- docker:dind
这实际上将在docker
主机名上启动守护程序。它记录在Building Docker images with GitLab CI/CD上(只有第3点与您有关)
但是该页面上的其他主题应该会让您进一步感兴趣,例如Making docker-in-docker builds faster with Docker layer caching
有关gitlab CI中服务的更多信息,请访问GitLab CI Services。简而言之,就像使用docker-compose为您的主要容器使用“伴侣”容器一样。