【发布时间】:2019-01-28 04:20:29
【问题描述】:
我正在尝试将 DinD(Docker 中的 Docker)与我的 Gitlab-CI 构建脚本一起使用,但无论我进行什么更改,我都会不断收到相同的错误。我做错了什么?
错误
Service container logs:
2018-08-21T22:54:00.129660274Z mount: permission denied (are you root?)
2018-08-21T22:54:00.129701426Z Could not mount /sys/kernel/security.
2018-08-21T22:54:00.129706380Z AppArmor detection and --privileged mode might break.
2018-08-21T22:54:00.130334774Z mount: permission denied (are you root?)
...
$ docker info
error during connect: Get http://docker:2375/v1.38/info: dial tcp: lookup docker on 8.8.8.8:53: no such host
gitlab-ci.yml
django_build:
stage: build
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
image: docker:stable
services:
- docker:dind
before_script:
- docker info
script:
- echo "Building something."
gitlab-runner config.toml
concurrent = 1
check_interval = 0
[[runners]]
name = "###"
url = "###"
token = "###"
executor = "docker"
[runners.docker]
tls_verify = false
image = "alpine:3.4"
privileged = true
disable_cache = false
volumes = ["/cache"]
[runners.cache]
Insecure = false
/etc/docker/daemon.json
{
"storage-driver": "overlay2"
}
---编辑---
对于任何回来看这个的人来说,这就是我如何让它工作的。在提交到 repo 之前,我在本地机器上运行 gitlab-runner 来测试东西。
运行命令时:
gitlab-runner exec docker django_build
无论出于何种原因,它都没有使用我的配置文件。我找到了这个链接:https://gitlab.com/gitlab-org/gitlab-runner/issues/1791 声明你必须在命令中退出 --docker-privileged。
运行后:
gitlab-runner exec docker --docker-privileged django_build
一切正常。
【问题讨论】:
-
设置 privileged=true 后是否重启了 gitlab-runner?
-
@Rickkwa 是的。 systemctl restart gitlab-runner.service
-
docker 主机使用host 变量在config.toml 中设置
标签: docker docker-compose gitlab gitlab-ci gitlab-ci-runner