![](/img/trans.png)
[英]gitlab kubernetes runner cannot connect to the docker daemon
[英]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"
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.