Я пытаюсь найти настройки, которые мне нужно добавить в мой собственный хост gitlab-runner
, чтобы добиться следующего: В репозитории, содержащем dir/script.py
, я запускаю
services:
- docker:dind
main:
image: docker:latest
script:
- docker run -i -v $(pwd)/dir:/mnt python:3 ls -la /mnt
с общим бегуном GitLab, который показывает, что dir/script.py
успешно смонтирован в контейнере и присутствует как /mnt/script.py
.
Если я использую свой собственный хост gitlab-runner
, каталог будет пустым. Я попытался добавить --privileged
к docker run
в .gitlab.yml
, а также в конфигурации бегуна в /etc/gitlab-runner/config.toml
.
Я почти уверен, что смонтированный каталог внутри контейнера пуст, потому что путь монтирования относится к пути на хосте (см. также Docker в Docker не может подключить том ). Тем не менее, кажется, что есть общий способ для бегунов GitLab справиться с этим, и я хочу найти и принять этот способ для моего самостоятельного бегуна.
Я работаю gitlab-runner
и предоставляю Docker-in-Докер, запустив блок systemd
[Service]
Type=simple
ExecStartPre=/usr/bin/docker network create --subnet 172.25.0.0/16 gitlab-runner-net
ExecStartPre=/usr/bin/docker run -d --name gitlab-dind --privileged --restart always --network gitlab-runner-net -v /var/lib/docker -e DOCKER_TLS_CERTDIR= docker:19.03-dind --storage-driver=overlay2
ExecStartPre=/usr/bin/docker pull gitlab/gitlab-runner:latest
ExecStart=/usr/bin/docker run --name gitlab-runner --restart always --network gitlab-runner-net --dns 8.8.8.8 -v /srv/gitlab-runner/config:/etc/gitlab-runner -e DOCKER_HOST=tcp://gitlab-dind:2375 gitlab/gitlab-runner:latest
ExecStop=/usr/bin/docker stop gitlab-runner
ExecStop=/usr/bin/docker stop gitlab-dind
ExecStop=/usr/bin/docker rm gitlab-runner
ExecStop=/usr/bin/docker rm gitlab-dind
ExecStop=/usr/bin/docker network rm gitlab-runner-net
(извлечение) и добавив
host = "tcp://gitlab-dind:2375"
volumes = ["/var/run/docker.sock:/var/run/docker.sock", "/cache"]
extra_hosts = ["gitlab-dind:172.25.0.2"]
в каждую секцию бегуна config.toml
. Это было вдохновлено https://medium.com/@tonywooster/docker-in-docker-in-gitlab-runners-220caeb708ca. Настройка позволяет использовать docker build
внутри .gitlab-ci.yml
и совместно использовать кэш Docker между сборками.
Как подключить том в контейнере Dockerв .gitlab-ci.yml? предлагает использовать артефакты, что не вариант, так как я хочу протестировать этот сценарий.