从GitLab CI运行器连接到docker-in-docker
我有一个GitLabpipe道,我想要:
- 构build一个Java应用程序
- 使用docker-compose进行testing
- 推送到我的Docker存储库
我遇到的主要问题是这个工作 :
services: - docker:dind docker_test: stage: docker_test image: docker:latest script: - docker version
输出按预期打印:
> gitlab-ci-multi-runner exec docker --docker-privileged docker_test ... $ docker version Client: Version: 17.06.0-ce ... Server: Version: 17.06.0-ce ... Build succeeded
虽然这不 (卸载docker-ce
安装步骤):
services: - docker:dind docker_test: stage: docker_test image: ubuntu:latest << note change script: - docker version
它失败:
$ docker version Client: Version: 17.06.0-ce API version: 1.30 Go version: go1.8.3 Git commit: 02c1d87 Built: Fri Jun 23 21:23:31 2017 OS/Arch: linux/amd64 Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? ERROR: Build failed: exit code 1 FATAL: exit code 1
如何使我的ubuntu
映像(或任何图像将build立我的项目)连接到链接的Docker在Docker服务? 什么是docker:latest
这样做,我不是?
我已经阅读了GitLab服务文档 ,但是从主机名的angular度来看,这只对我有意义。 (如果你有一个mysql
服务,你可以通过mysql:3306
连接mysql:3306
。)
编辑:更新命令echo $DOCKER_HOST
,我在docker:latest
看到docker:latest
形象:
$ echo $DOCKER_HOST tcp://docker:2375
而在ubuntu:latest
形象,我看到:
$ echo $DOCKER_HOST (nothing - but SO doesn't let me add a blank code line)
作为您添加的信息,我希望这可以工作:
services: - docker:dind docker_test: stage: docker_test image: ubuntu:latest variables: DOCKER_HOST: "tcp://docker:2375" script: - docker version
或者:
services: - docker:dind docker_test: stage: docker_test image: ubuntu:latest script: - export DOCKER_HOST=tcp://docker:2375 - docker version
看来,Gitlab不会为自定义图像设置DOCKER_HOSTvariables。
Gitlab CI运行器需要安装主机docker socket才能执行docker中的docker。 例如:
docker exec gitlab-runner gitlab-runner register \ --non-interactive \ --url https://gitlab.com/ci \ --registration-token TOKEN\ --description "Docker Runner" \ --tag-list "docker" \ --executor docker \ --docker-image "docker:latest" \ --docker-volumes /var/run/docker.sock:/var/run/docker.sock
正如你所看到的,docker.sock作为最后一个参数被挂载在这里。 不过,我不会推荐使用docker-compose作为Gitlab CI,因为Gitlab CI有自己的语法https://docs.gitlab.com/ce/ci/docker/using_docker_images.html