У меня есть конвейер GitLab, который я хочу:
- Создайте приложение Java
- Тестирование с использованием докеров
- Нажмите на мой репозиторий 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
(или любое другое изображение, которое будет собирать мой проект) подключиться к связанной службе Docker-in-Docker? Что такое docker:latest
, что я не делаю?
Я прочитал документацию по сервисам GitLab, но это имеет смысл только с точки зрения имени хоста. (Если у вас есть служба mysql
, вы можете подключиться через mysql:3306
)
Изменить: Обновление команды для echo $DOCKER_HOST
, я вижу в 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)