在GitLabCI管道中构建docker映像

时间:2019-01-07 20:45:31

标签: docker gitlab gitlab-ci

我在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" 但没有效果。

这个问题有解决方案吗?我的管道声明有问题吗?

欢呼

1 个答案:

答案 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为您的主要容器使用“伴侣”容器一样。