PaaS/CI CD

Gitlab Runner ) kubernetes Executor Error 'Is the docker daemon running?'

armyost 2024. 12. 15. 22:02
728x90

 

 ERROR: Cannot connect to the Docker daemon at tcp://localhost:2375. Is the docker daemon running?

 

Gitlab Runner를 kubernetes executor로 배포하여 사용중이다. 

그런데 docker build를 CICD에서 수행하게 되면 위와 같은 오류가 발생한다. 

 

정말 많은 트러블 슈팅을 했다. 

 

내가 최종적으로 적용한 Solution을 공유하고자 한다.

 

1. Helm으로 Runner Kubernetes Executor를 배포하였는데, 다음의 Value를 values.yaml에 추가한다.

runners:
  privileged: true 
  config: |
   [[runners]]
      environment = [
        "DOCKER_HOST=tcp://docker:2376",
        "DOCKER_TLS_CERTDIR=/certs",
        "DOCKER_TLS_VERIFY=1",
        "DOCKER_CERT_PATH=$DOCKER_TLS_CERTDIR/client"
      ]
      [runners.kubernetes]
        namespace = "{{.Release.Namespace}}"
        image = "docker:24.0.5"
        privileged = true
        [[runners.kubernetes.volumes.empty_dir]]
          name = "certs"
          mount_path = "/certs/client"
          medium = "Memory

 

 

2. gitlab-ci.yml CICD workflow에서 아래의 내용을 추가한다. 

image: docker:24.0.5

variables:
 DOCKER_HOST: tcp://docker:2376
 DOCKER_DRIVER: overlay2
 DOCKER_TLS_CERTDIR: "/certs"
 DOCKER_TLS_VERIFY: 1
 DOCKER_CERT_PATH: "$DOCKER_TLS_CERTDIR/client"

services:
  - name: docker:24.0.5-dind
    entrypoint: ["env", "-u", "DOCKER_HOST"]
    command: ["dockerd-entrypoint.sh"]
    alias: docker

 

 

3. docker deamon이 올라오는데 약간의 시간이 걸린다 무식하지만 sleep을 CICD에서 주어서 조금 기다린다.

  script:
    - sleep 30 
    - docker info