首页 文章

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

提问于
浏览
1

我想使用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无法连接到unix:///var/run/docker.sock上的Docker守护进程 . docker守护程序是否正在运行?错误:作业失败:退出代码1

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

1 回答

  • 3

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

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

    从命令行注册GitLab Runner以使用docker和特权模式:[...]请注意,它正在使用特权模式启动构建和服务容器 . 如果要使用docker-in-docker模式,则必须在Docker容器中使用privileged = true .

    可能你正在使用跑步者 was not configured in privileged mode 因此无法在里面正确运行docker守护进程 . 您可以直接编辑注册跑步者的 /etc/gitlab-runner/config.toml 以添加该选项 .

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

相关问题