我想使用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守护进程没有运行,但我不明白为什么?
答案 0 :(得分:4)
GitLab人员在他们的文档中引用了有关在基于docker的作业中使用docker-build的文档:https://docs.gitlab.com/ce/ci/docker/using_docker_build.html#use-docker-in-docker-executor。由于您似乎已准备好所有内容(即作业的正确图像和其他docker:dind
服务),因此它很可能是一个亚军配置问题。
如果你看一下文档中的第二步:
- 醇>
从命令行注册GitLab Runner以使用docker和特权模式:
[...]
请注意,它使用特权模式启动构建和服务容器。如果要使用docker-in-docker模式,则必须始终使用{{1}在您的Docker容器中。
您可能正在使用未在特权模式下配置的跑步者,因此无法在内部正确运行docker守护程序。您可以直接编辑注册跑步者的privileged = true
以添加该选项。
(另外,请阅读文档部分,了解有关您选择的存储驱动程序/跑步者在使用时支持的性能的更多信息)