Eugene Sukh
Eugene Sukh

Reputation: 2727

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

I have Gitlab repository and try to add ci/cd pipeline to it

Here .yml file

   stages:
  - development-db-migrations
  - development
   
step-development-db-migrations:
  stage: development-db-migrations
  image: mcr.microsoft.com/dotnet/core/sdk:3.1
  before_script:
    - apt-get update -y
    - apt-get upgrade -y
    - apt-get dist-upgrade -y
    - apt-get -y autoremove
    - apt-get clean
    - apt-get -y install zip
    - dotnet tool install --global dotnet-ef
    - export PATH="$PATH:/root/.dotnet/tools"
    - sed -i "s/DB_CONNECTION/$DB_CONNECTION_DEV/g" src/COROI.Web.Host/appsettings.json
  script:
    - echo db migrations started
    - cd src/COROI.EntityFrameworkCore
    - dotnet ef database update
  environment: development
  tags:
    # - CoroiAdmin
  only:
    - main

step-deploy-development:
  stage: development
  image: docker:stable
  services:
    - docker:18.09.7-dind
  before_script:
    - export DOCKER_HOST="tcp://localhost:2375"
    - docker info
    - export DYNAMIC_ENV_VAR=DEVELOPMENT
    - apk update
    - apk upgrade
    - apk add util-linux pciutils usbutils coreutils binutils findutils grep
    - apk add python3 python3-dev python3 py3-pip
    - pip install awscli
  script:
    - echo setting up env $DYNAMIC_ENV_VAR
    - $(aws ecr get-login --no-include-email --region eu-west-2)
    - docker build --build-arg ASPNETCORE_ENVIRONMENT=${ASPNETCORE_ENVIRONMENT_DEV} --build-arg DB_CONNECTION=${DB_CONNECTION_DEV} --build-arg CORS_ORIGINS=${CORS_ORIGINS_DEV} --build-arg SERVER_ROOT_ADDRESS=${SERVER_ROOT_ADDRESS_DEV} -f src/COROI.Web.Host/Dockerfile -t $ECR_DEV_REPOSITORY_URL:$CI_COMMIT_SHA .
    - docker push $ECR_DEV_REPOSITORY_URL:$CI_COMMIT_SHA
    - cd deployment
    - sed -i -e "s/TAG/$CI_COMMIT_SHA/g" ecs_task_dev.json
    - aws ecs register-task-definition --region $ECS_REGION --cli-input-json file://ecs_task_dev.json >> temp.json
    - REV=`grep  '"revision"' temp.json | awk '{print $2}'`
    - aws ecs update-service --cluster $ECS_DEV_CLUSTER --service $ECS_DEV_SERVICE --task-definition $ECS_DEV_TASK --region $ECS_REGION
  environment: development
  tags:
    # - CoroiAdmin
  only:
    - main

at this step

step-deploy-development:

I got this error

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

after

 - export DOCKER_HOST="tcp://localhost:2375"
- docker info

Where is my problem and how I can fix it?

Upvotes: 0

Views: 1472

Answers (1)

Francisco Valle
Francisco Valle

Reputation: 643

Docker tries to connect to local docker daemon by default via unix sockets.

In the deployment file there is this entry which is setting the docker host env variable before building the image

before_script:
- export DOCKER_HOST="tcp://localhost:2375"

To specify remote docker hosts there are env variables we can use to indicate docker client which docker server we want to connect to. These env vars are DOCKER_HOST and DOCKER_PORT, if we have them defined on the system then docker will connect to the provided docker daemon server provided via the vars.

Read this guide https://linuxhandbook.com/docker-remote-access/ for further info.

Upvotes: 0

Related Questions