2017-03-17 12 views
8

गिटलैब कुबर्नेट्स क्लस्टर में चल रहा है। धावक बिल्ड कलाकृतियों के साथ डॉकर छवि नहीं बना सकता है। मैंने इसे ठीक करने के लिए पहले से ही कई दृष्टिकोणों की कोशिश की है, लेकिन कोई भाग्य नहीं है। यहाँ कुछ कॉन्फ़िगरेशन के टुकड़े कर रहे हैं:गिटलैब सीआई धावक यूनिक्स से कनेक्ट नहीं हो सकता है: ///var/run/docker.sock kubernetes

.gitlab-ci.yml

image: docker:latest 
services: 
    - docker:dind 

variables: 
    DOCKER_DRIVER: overlay 

stages: 
    - build 
    - package 
    - deploy 

maven-build: 
    image: maven:3-jdk-8 
    stage: build 
    script: "mvn package -B --settings settings.xml" 
    artifacts: 
    paths: 
     - target/*.jar 

docker-build: 
    stage: package 
    script: 
    - docker build -t gitlab.my.com/group/app . 
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab.my.com/group/app 
    - docker push gitlab.my.com/group/app 

config.toml

concurrent = 1 
check_interval = 0 

[[runners]] 
    name = "app" 
    url = "https://gitlab.my.com/ci" 
    token = "xxxxxxxx" 
    executor = "kubernetes" 
    [runners.kubernetes] 
    privileged = true 
    disable_cache = true 

पैकेज चरण लॉग:

running with gitlab-ci-multi-runner 1.11.1 (a67a225) 
    on app runner (6265c5) 
Using Kubernetes namespace: default 
Using Kubernetes executor with image docker:latest ... 
Waiting for pod default/runner-6265c5-project-4-concurrent-0h9lg9 to be running, status is Pending 
Waiting for pod default/runner-6265c5-project-4-concurrent-0h9lg9 to be running, status is Pending 
Running on runner-6265c5-project-4-concurrent-0h9lg9 via gitlab-runner-3748496643-k31tf... 
Cloning repository... 
Cloning into '/group/app'... 
Checking out 10d5a680 as master... 
Skipping Git submodules setup 
Downloading artifacts for maven-build (61)... 
Downloading artifacts from coordinator... ok  id=61 responseStatus=200 OK token=ciihgfd3W 
$ docker build -t gitlab.my.com/group/app . 
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? 
ERROR: Job failed: error executing remote command: command terminated with non-zero exit code: Error executing in Docker Container: 1 

क्या मैं गलत कर रहा हूँ?

उत्तर

6

इस का उपयोग करने की आवश्यकता नहीं है:

DOCKER_DRIVER: overlay 

कारण ऐसा लगता है उपरिशायी तरह समर्थित नहीं है, तो SVC-0 कंटेनर इसके साथ शुरू करने में असमर्थ है:

$ kubectl logs -f `kubectl get pod |awk '/^runner/{print $1}'` -c svc-0 
time="2017-03-20T11:19:01.954769661Z" level=warning msg="[!] DON'T BIND ON ANY IP ADDRESS WITHOUT setting -tlsverify IF YOU DON'T KNOW WHAT YOU'RE DOING [!]" 
time="2017-03-20T11:19:01.955720778Z" level=info msg="libcontainerd: new containerd process, pid: 20" 
time="2017-03-20T11:19:02.958659668Z" level=error msg="'overlay' not found as a supported filesystem on this host. Please ensure kernel is new enough and has overlay support loaded." 

इसके अलावा, डोकर-निर्माण करने के लिए export DOCKER_HOST="tcp://localhost:2375" जोड़ें:

+०१२३५१६४१०६१
docker-build: 
    stage: package 
    script: 
    - export DOCKER_HOST="tcp://localhost:2375" 
    - docker build -t gitlab.my.com/group/app . 
    - docker login -u gitlab-ci-token -p $CI_BUILD_TOKEN gitlab.my.com/group/app 
    - docker push gitlab.my.com/group/app 
3

कुबर्नेट्स का उपयोग करते समय, आपको डॉकर इंजन से कनेक्ट करने के लिए अपनी बिल्ड छवि को समायोजित करना होगा। डोकर रनिंग

: डॉक्स से

DOCKER_HOST=tcp://localhost:2375 

उद्धरण:

अपने निर्माण छवि में जोड़े dind भी डोकर में डोकर छवि के रूप में जाना भी संभव है, लेकिन दुर्भाग्य से की जरूरत है कंटेनरों को विशेषाधिकार प्राप्त मोड में चलाने के लिए। यदि आप उस जोखिम को लेने के इच्छुक हैं तो अन्य समस्याएं उत्पन्न होंगी जो शायद पहली नज़र में सीधे आगे नहीं लगती हैं। चूंकि डॉकर डिमन को आमतौर पर आपके .gitlab-ci.yaml में सेवा के रूप में शुरू किया जाता है, यह आपके पॉड में अलग कंटेनर के रूप में चलाया जाएगा। मूल रूप से फली में कंटेनर केवल उन्हें आवंटित वॉल्यूम साझा करते हैं और एक आईपी पता जिसे वे स्थानीयहोस्ट का उपयोग करके एक दूसरे तक पहुंच सकते हैं। /var/run/docker.sock डॉकर द्वारा साझा नहीं किया जाता है: डाइंड कंटेनर और डॉकर बाइनरी डिफ़ॉल्ट रूप से इसका उपयोग करने का प्रयास करता है। इसे ओवरराइट करने के लिए और क्लाइंट को अन्य कंटेनर में डॉकर डिमन से संपर्क करने के लिए टीसीपी का उपयोग करने के लिए सुनिश्चित करें कि निर्माण कंटेनर के अपने पर्यावरण चर में DOCKER_HOST = tcp: // localhost: 2375 शामिल होना सुनिश्चित करें।

Gitlab-CI on Kubernetes

+0

एक सुझाव के लिए धन्यवाद, दोस्त, लेकिन मैंने पहले से ही यह कोशिश की है :( –

+1

'tcp: // localhost: 2375 पर डॉकर डिमन से कनेक्ट नहीं हो सकता है। क्या डॉकर डिमन चल रहा है? ' –

+3

क्या आपने इसे हल किया था? मुझे यह त्रुटि भी मिल रही है (टीसीपी के साथ एक सहित) ... मेरा गिटलैब-धावक डॉकर कंटेनर में है। – gabriel

संबंधित मुद्दे