簡體   English   中英

Gitlab CI - 使用共享運行器構建Docker鏡像(無法連接到Docker守護程序)

[英]Gitlab CI - Build Docker Image With Shared Runner (cannot connect to Docker Daemon)

我目前正在使用Gitlab Shared Runners來構建和部署我的項目(至少我也在嘗試!)。

我有下面的gitlab-ci.yml:

image: java:8-jdk

stages:
  - build
  - package

before_script:
  - export GRADLE_USER_HOME=`pwd`/.gradle
  - docker info

cache:
  paths:
    - .gradle/wrapper
    - .gradle/caches
build:
  stage: build
  script:
    - ./gradlew build
  artifacts:
    paths:
      - build/libs/*.jar
    expire_in: 1 week
  only:
    - master

docker-build:
  image: docker:stable
  services:
   - docker:dind
  stage: package
  script:
    docker build -t registry.gitlab.com/my-project .
    docker push registry.gitlab.com/my-project

after_script:
  - echo "End CI"

首先,構建階段做得很好,但是當我嘗試構建並推送我的docker鏡像時,第二階段存在問題。

我得到這個日志:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

似乎Gitlab正在使用無法構建docker鏡像的共享運行器,但我不知道如何更改它。 我無法更改我的跑步者的配置,因為我正在使用共享跑步者。 我還嘗試在我的第二階段添加一些標簽,希望更合適的跑步者必須照顧我的工作,但我仍然遇到這個錯誤。

謝謝您的幫助。

我相信您需要設置DOCKER_HOST以連接到另一個容器中運行的DinD:

docker-build:
  image: docker:stable
  services:
   - docker:dind
  stage: package
  script:
    - export DOCKER_HOST=tcp://docker:2375/
    - docker build -t registry.gitlab.com/my-project .
    - docker push registry.gitlab.com/my-project

如果您的共享運行程序執行程序是docker類型,您可以嘗試以下設置:

stages:
  - build
  - package

before_script:
  - export GRADLE_USER_HOME=`pwd`/.gradle
  - docker info

cache:
  paths:
    - .gradle/wrapper
    - .gradle/caches
build:
  image: java:8-jdk
  stage: build
  script:
    - ./gradlew build
  artifacts:
    paths:
      - build/libs/*.jar
    expire_in: 1 week
  only:
    - master

docker-build:
  stage: package
  script:
    docker build -t registry.gitlab.com/my-project .
    docker push registry.gitlab.com/my-project

after_script:
  - echo "End CI"

即使我們在組織中遇到同樣的問題。 我們發現,對於gitlab,docker區域中的docker存在一個長期存在的問題,可以在這些問題#3612#2408#2890中進行跟蹤。

我們發現在我們的情況下,使用docker綁定比docker-in-docker更適合我們的用例。 所以,我們在他們的官方頁面中使用了解決方案。

我知道這已經得到了回答,但這可能會幫助一些有類似用法的人:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM