我按照此文档在GKE上安装了Gitlab: https://docs.gitlab.com/ee/install/kubernetes/gitlab_chart.html
我的安装参数是:
helm upgrade --install gitlab gitlab/gitlab \
--timeout 600 \
--set global.hosts.domain=***** \
--set global.hosts.externalIP=***** \
--set certmanager-issuer.email=***** \
--set gitlab.migrations.image.repository=registry.gitlab.com/gitlab-org/build/cng/gitlab-rails-ce \
--set gitlab.sidekiq.image.repository=registry.gitlab.com/gitlab-org/build/cng/gitlab-sidekiq-ce \
--set gitlab.unicorn.image.repository=registry.gitlab.com/gitlab-org/build/cng/gitlab-unicorn-ce \
--set gitlab.unicorn.workhorse.image=registry.gitlab.com/gitlab-org/build/cng/gitlab-workhorse-ce \
--set gitlab.task-runner.image.repository=registry.gitlab.com/gitlab-org/build/cng/gitlab-task-runner-ce \
--set gitlab.gitlab-runner.runners.privileged=true \
--set gitlab.gitlab-runner.runners.cache_dir="cache"
然后我创建了.gitlab-ci.yaml:
image: docker:latest
services:
- docker:dind
variables:
DOCKER_HOST: tcp://localhost:2375
stages:
- package
package:
stage: package
before_script:
- echo "${GKE_JSON_AUTH}" > gke-project-auth.json || exit 1
- cat gke-project-auth.json | docker login -u _json_key --password-stdin https://eu.gcr.io || exit 1
script:
- docker info
我已经阅读了很多线程,都在DOCKER_HOST
和privileged
参数中获得了解决方案,但是我总是遇到这个错误:
无法通过tcp:// localhost:2375连接到Docker守护程序。是个 docker守护进程正在运行?
我还试图放入一个values.yaml文件:
runners:
privileged: true
并执行以下命令:
helm upgrade --reuse-values gitlab gitlab/gitlab -f values.yaml
但未成功...
有什么主意吗?谢谢!
答案 0 :(得分:8)
显然,根据this,此问题与Docker更新其映像docker:dind
有关,后者使用了最新版本的Docker服务器,该版本不再在2375
处监听,在2376
。
因此,我按照该条目的建议更新了.gitlab-ci.yml
,它对我有用:
image: docker:stable
services:
- docker:18.09-dind
...
[更新]
这是一个临时解决方法。 docker:stable
和docker:stable-dind
图像现已修复。
答案 1 :(得分:1)
我发现了我的错误。我们可以在这里看到“安装命令行选项”:
https://gitlab.com/charts/gitlab/blob/master/doc/installation/command-line-options.md说privileged
参数是gitlab-runner.runners.privileged
而不是gitlab.gitlab-runner.runners.privileged
(并且cache_dir
不存在)。
因此,现在可以:
--set gitlab-runner.runners.privileged=true
答案 2 :(得分:0)
这种使用docker:18.09
和docker:18.09-dind
图像的解决方案有效。
.gitlab-ci.yml
:
build_image:
stage: build
image: docker:18.09
variables:
DOCKER_HOST: tcp://docker:2375/
DOCKER_DRIVER: overlay2
services:
- docker:18.09-dind
有关此问题的更多讨论:https://gitlab.com/gitlab-org/gitlab-runner/issues/4501
答案 3 :(得分:-1)
Docker-in-Docker服务将以其映像名称docker命名。您应该将DOCKER_HOST
设置为tcp://docker:2375
。