我想在 Docker 容器中运行 Gitlab CI Runner,同时使用 Docker 执行器在它们自己的 Docker 容器中运行我的构建,所有这些都在 CoreOS 之上完成。
这有可能吗?到目前为止,我发现的所有文档都假设 Gitlab Runner 在主机操作系统上运行,这对我来说不是一个可行的选择。
另一种方法是使用专门的 gitlab-runner 容器,并在每个容器中安装构建依赖项。
答案1
有--privileged
参数
https://docs.docker.com/engine/reference/run/#/runtime-privilege-and-linux-capabilities
这应该能够让docker在docker中运行。所以理论上是可行的,但你可能会遇到其他问题。
答案2
您需要挂载 docker.sock ,设置 --privileged
docker run -d -v /var/run/docker.sock:/var/run/docker.sock --name gitlab-runner --privileged --restart always -v d:/docker/data/gitlab-runner:/etc/gitlab-runner gitlab/gitlab-runner:latest
并设置配置特权。
[[runners]]
name = "docker2"
url = "https://gitlab.com/"
token = "xxxxx"
executor = "docker"
[runners.docker]
image = "alpine:latest"
privileged = true
disable_entrypoint_overwrite = false
oom_kill_disable = false
disable_cache = false
shm_size = 0