使用GitLab CI构建和推送docker镜像

时间:2017-09-05 07:17:58

标签: gitlab gitlab-ci gitlab-ci-runner

我想使用GitLab CI构建并将docker图像推送到我的本地nexus repo

这是我目前的CI文件:

image: docker:latest

services:
  - docker:dind

before_script:
  - docker info
  - docker login -u some_user -p nexus-rfit some_host

stages:
  - build

build-deploy-ubuntu-image:
  stage: build
  script:
    - docker build -t some_host/dev-image:ubuntu ./ubuntu/
    - docker push some_host/dev-image:ubuntu
  only:
    - master
  when: manual

还有一个alpin docker的工作,但是当我想运行其中任何一个时它失败并出现以下错误:

  

将13102ac4检出为主...跳过Git子模块设置$   docker info无法连接到Docker守护程序   UNIX:///var/run/docker.sock。 docker守护程序是否正在运行?错误:工作   失败:退出代码1

从技术上讲,图像中的docker守护进程没有运行,但我不明白为什么?

1 个答案:

答案 0 :(得分:4)

GitLab人员在他们的文档中引用了有关在基于docker的作业中使用docker-build的文档:https://docs.gitlab.com/ce/ci/docker/using_docker_build.html#use-docker-in-docker-executor。由于您似乎已准备好所有内容(即作业的正确图像和其他docker:dind服务),因此它很可能是一个亚军配置问题。

如果你看一下文档中的第二步:

  
      
  1. 从命令行注册GitLab Runner以使用docker和特权模式:

         

    [...]

         

    请注意,它使用特权模式启动构建和服务容器。如果要使用docker-in-docker模式,则必须始终使用{{1}在您的Docker容器中。

  2.   

您可能正在使用未在特权模式下配置的跑步者,因此无法在内部正确运行docker守护程序。您可以直接编辑注册跑步者的privileged = true以添加该选项。

(另外,请阅读文档部分,了解有关您选择的存储驱动程序/跑步者​​在使用时支持的性能的更多信息)