0

我有以下 gitlab-ci.yml:

stages:
  - build
  - dev
  - staging
  - deploy

variables:
  DOCKER_IMAGE_TAG:  $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA

webservice:
  stage: build
  tags:
    - local-mac-runner
  image: docker:stable
  services:
    - docker:dind
  variables:
    DOCKER_HOST: tcp://docker:2375
    DOCKER_DRIVER: overlay2
  before_script:
    - docker info
  script:
    - echo "test"
    - echo $CI_REGISTRY_IMAGE
    - echo $CI_COMMIT_SHORT_SHA

它失败并出现以下错误:

$ docker info 52Client: 53 Debug Mode: false 54Server: 55ERROR: error during connect: Get http://docker:2375/v1.40/info: dial tcp: lookup docker on 192.168.65.1:53: no such host 56errors pretty打印信息 57 清理基于文件的变量 00:01 58错误:作业失败:退出代码 1

更进一步......在失败之前,我还看到了这些消息:

152020-12-24T20:33:36.355214400Z Generating RSA private key, 4096 bit long modulus (2 primes)
162020-12-24T20:33:36.372258200Z .++++
172020-12-24T20:33:36.448415100Z ...............++++
182020-12-24T20:33:36.448738500Z e is 65537 (0x010001)
192020-12-24T20:33:36.463872100Z Generating RSA private key, 4096 bit long modulus (2 primes)
202020-12-24T20:33:37.287683200Z ..................................................................................................................................................................................................................++++
212020-12-24T20:33:37.872383900Z ........................................................................................................................................................++++
222020-12-24T20:33:37.872655500Z e is 65537 (0x010001)
232020-12-24T20:33:37.897641600Z Signature ok
242020-12-24T20:33:37.897669100Z subject=CN = docker:dind server
252020-12-24T20:33:37.897865000Z Getting CA Private Key
262020-12-24T20:33:37.909653400Z /certs/server/cert.pem: OK
272020-12-24T20:33:37.912314900Z Generating RSA private key, 4096 bit long modulus (2 primes)
282020-12-24T20:33:38.242873100Z .....................................................................................++++
292020-12-24T20:33:38.373200000Z ...............................++++
302020-12-24T20:33:38.373544000Z e is 65537 (0x010001)
312020-12-24T20:33:38.394299500Z Signature ok
322020-12-24T20:33:38.394364300Z subject=CN = docker:dind client
332020-12-24T20:33:38.394529500Z Getting CA Private Key
342020-12-24T20:33:38.405602600Z /certs/client/cert.pem: OK
352020-12-24T20:33:38.408725400Z mount: permission denied (are you root?)
362020-12-24T20:33:38.408928200Z Could not mount /sys/kernel/security.
372020-12-24T20:33:38.408952600Z AppArmor detection and --privileged mode might break.
382020-12-24T20:33:38.410009700Z mount: permission denied (are you root?)

我试图在托管 GitLab Runner 的机器上手动执行此操作......我认为缺少的是我需要以某种方式指定“--privledged”标志。这是我手动运行的,它可以工作:

docker run -d --privileged -p 12375:2375 -e DOCKER_TLS_CERTDIR="" docker:dind
4

1 回答 1

0

gitlab runner 的 config.toml 文件是什么?您可以在那里设置特权值。默认文件本地化:/etc/gitlab-runner/config.toml。

从我的配置:

[[runners]]
  (...)
  executor = "docker"
  [runners.custom_build_dir]
  [runners.docker]
    tls_verify = false
    image = "docker:19.03.12"
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache","/var/run/docker.sock:/var/run/docker.sock"]
    shm_size = 0

您也可以在 .gitlab-ci.yml 文件中设置变量 DOCKER_TLS_CERTDIR。

于 2021-06-21T10:43:03.303 回答