Не удается подключиться к докеру демона в образе докера докера

Я пытаюсь создать CI с помощью gitlab, я использую образ докера для докера, и у меня не было проблем с моим передним репозиторием, но теперь, когда задняя часть с тем же файлом конфигурации gitlab-ci, у меня эта ошибка демона .

Вот результат сборки:

[0KRunning with gitlab-ci-multi-runner 1.10.4 (b32125f)[0;m
[0;m[0KUsing Docker executor with image docker:1.13.1 ...
[0;m[0KPulling docker image docker:1.13.1 ...
[0;mRunning on runner-4e4528ca-project-1649638-concurrent-0 via runner-4e4528ca-machine-1487688057-7c0f1e46-digital-ocean-4gb...
[32;1mCloning repository...[0;m
Cloning into '/builds/***/formation-back'...
[32;1mChecking out af7cbcae as docker...[0;m
[32;1mSkipping Git submodules setup[0;m
[32;1m$ docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com[0;m
Warning: failed to get default registry endpoint from daemon (Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?). Using system default: https://index.docker.io/v1/
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[31;1mERROR: Build failed: exit code 1
[0;m

Вот мой .gitlab-ci.yml:

image: docker:1.13.1

stages:
  - build
  - test
  - deploy

variables:
  BUILD_IMG: $CI_REGISTRY_IMAGE:$CI_BUILD_REF
  TEST_IMG: $CI_REGISTRY_IMAGE:$CI_BUILD_REF_NAME
  RELEASE_IMG: $CI_REGISTRY_IMAGE:latest
  AWS_STAGING_ENV: "***"
  AWS_PROD_ENV: "***"
  DOCKERRUN: Dockerrun.aws.json
  DEPLOY_ARCHIVE: ${AWS_APP}-${CI_BUILD_REF}.zip

before_script:
  - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN registry.gitlab.com
  - .ci/before_script

build:
  stage: build
  script:
  - docker build --pull -t $BUILD_IMG .
  - docker push $BUILD_IMG

test:
  stage: test
  script:
  - docker pull $BUILD_IMG
  - docker run --rm $BUILD_IMG npm run test
  - docker tag $BUILD_IMG $TEST_IMG
  - docker push $TEST_IMG

deploy:staging:
  stage: deploy
  environment: Staging
  variables:
    DOCKER_IMG: ${CI_REGISTRY_IMAGE}:${CI_BUILD_REF}
  script:
  - ./.ci/create-deploy-archive $DOCKER_IMG $AWS_BUCKET $DOCKERRUN $DEPLOY_ARCHIVE
  - ./.ci/aws-deploy $DEPLOY_ARCHIVE $CI_BUILD_REF $AWS_STAGING_ENV
  artifacts:
    paths:
    - $DEPLOY_ARCHIVE
  except:
  - production

deploy:production:
  stage: deploy
  environment: Production
  variables:
    DOCKER_IMG: ${CI_REGISTRY_IMAGE}:latest
  script:
  - .ci/push-new-image $TEST_IMG $RELEASE_IMG
  - .ci/create-deploy-archive $DOCKER_IMG $AWS_BUCKET $DOCKERRUN $DEPLOY_ARCHIVE
  - .ci/aws-deploy $DEPLOY_ARCHIVE $CI_BUILD_REF $AWS_PROD_ENV
  artifacts:
    paths:
    - $DEPLOY_ARCHIVE
  only:
  - production
  when: manual

Вот мой файл config.toml:

concurrent = 1
check_interval = 0

[[runners]]
  name = "***"
  url = "https://gitlab.com/ci"
  token = "750c63cba1c269d789bdb33c42b726"
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = "alpine:3.5"
    privileged = true
    disable_cache = false
    volumes = ["/cache", "/var/run/docker.sock:/var/run/docker.sock"]
  [runners.cache]

Вот информация о докере:

DEBU[0771] Calling GET /v1.24/info
Containers: 1
 Running: 1
 Paused: 0
 Stopped: 0
Images: 1
Server Version: 1.12.6
Storage Driver: devicemapper
 Pool Name: docker-202:1-395267-pool
 Pool Blocksize: 65.54 kB
 Base Device Size: 10.74 GB
 Backing Filesystem: xfs
 Data file: /dev/loop0
 Metadata file: /dev/loop1
 Data Space Used: 519 MB
 Data Space Total: 107.4 GB
 Data Space Available: 6.569 GB
 Metadata Space Used: 1.397 MB
 Metadata Space Total: 2.147 GB
 Metadata Space Available: 2.146 GB
 Thin Pool Minimum Free Space: 10.74 GB
 Udev Sync Supported: true
 Deferred Removal Enabled: false
 Deferred Deletion Enabled: false
 Deferred Deleted Device Count: 0
 Data loop file: /var/lib/docker/devicemapper/devicemapper/data
 WARNING: Usage of loopback devices is strongly discouraged for production use. Use `--storage-opt dm.thinpooldev` to specify a custom block storage device.
 Metadata loop file: /var/lib/docker/devicemapper/devicemapper/metadata
 Library Version: 1.02.93-RHEL7 (2015-01-28)
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
 Volume: local
 Network: bridge overlay null host
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Security Options:
Kernel Version: 4.4.44-39.55.amzn1.x86_64
Operating System: Amazon Linux AMI 2016.09
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 995.2 MiB
Name: ip-172-31-30-143
ID: D6DU:OBWL:R3HK:DSZK:EOYC:5EHS:NU4I:4M3T:H5PL:JWLH:CIPD:I7VW
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 20
 Goroutines: 27
 System Time: 2017-02-22T11:16:19.042666914Z
 EventsListeners: 0
Registry: https://index.docker.io/v1/
Insecure Registries:
 127.0.0.0/8

person somebody    schedule 21.02.2017    source источник
comment
Не могли бы вы добавить результат docker info с машины, на которой размещен gitlab?   -  person jrbeverly    schedule 21.02.2017
comment
Не могли бы вы добавить содержимое config/config.toml файла вашего gitlab-runner?   -  person Sascha Frinken    schedule 22.02.2017
comment
У меня точно такая же проблема. Я установил privileged = true в config.toml. Я тоже сталкиваюсь с этим при запуске образа докера вручную.   -  person Josef Hoppe    schedule 22.02.2017
comment
Я редактировал с помощью config.toml и информации о докере   -  person somebody    schedule 22.02.2017


Ответы (3)


Вам нужно добавить

services:
  - docker:dind

к вашему .gitlab-ci.yml. Это говорит бегуну запустить второй контейнер (docker: dind), который является образом работающего демона докера. Для запуска он должен быть во втором изображении.

Для получения дополнительной информации см. Пример проекта докера: https://gitlab.com/gitlab-examples/docker/blob/master/.gitlab-ci.yml

Он не работает без службы, потому что не работает демон docker, и вы не можете запустить свою сборку внутри контейнера docker:dind, потому что команда run заменила бы демон docker.

person Josef Hoppe    schedule 23.02.2017
comment
Здравствуйте, Йозеф Хоппе, спасибо :) Я не знал эту услугу, я решил свою проблему с запуском двух бегунов для двух моих проектов. Не знаю, как это сработало: / - person somebody; 23.02.2017

Что сработало для меня, так это отключить TLS, добавив его в среду раздела бегунов, согласно https://about.gitlab.com/releases/2019/07/31/docker-in-docker-with-docker-19-dot-03/

variables:
  DOCKER_DRIVER: overlay2
  DOCKER_TLS_CERTDIR: ""
person godfrey.obinchu    schedule 25.07.2019

Изображение docker:dind не удалось, но docker:18.09.7-dind у меня сработало.

services:
  - name: docker:18.09.7-dind

Вот подробности проблемы Gitlab: https://gitlab.com/gitlab-org/gitlab-runner/-/issues/2623#note_206835782

person Song    schedule 25.01.2021