Solucionado (ver solução)
Solucionado
(ver solução)
6
respostas

Get http://docker:2375/v1.40/info: dial tcp: lookup docker on 10.0.2.3:53: no such host

De novo um erro semelhante ao anterior, mas diferente. Só mexi no estagio de teste e o erro aparece no estagio inicial, não entendo pq. Repeti a execução e nao resolve. Tentei ver no forum a solução, mexer no arquivo config.toml, mas nao sei por onde se faz isso.

Executing "step_script" stage of the job script
00:04
$ docker info
Client:
 Debug Mode: false
Server:
ERROR: error during connect: Get http://docker:2375/v1.40/info: dial tcp: lookup docker on 10.0.2.3:53: no such host

meu yml

image: docker:19.03.0

stages:
- pre-build
- build
- test
- deploy

build-docker:
    services:
      - docker:19.03.0-dind
    variables:
        DOCKER_HOST: tcp://docker:2375
        DOCKER_DRIVER: overlay2
        DOCKER_TLS_CERTDIR: ""
        GIT_SSL_NO_VERIFY: "1"


    before_script:
      - docker info
      - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD

    stage: pre-build
    script: 
      - docker build -t todo-list-img .
      - docker tag todo-list-img azosnosredna/gitlab_todolist_img:latest
      - docker push azosnosredna/gitlab_todolist_img:latest

build-project:
    image: azosnosredna/gitlab_todolist_img:latest
    services:
      - docker:19.03.0-dind
      - mysql:5.7
    variables:
        MYSQL_USER: devops_dev
        MYSQL_PASSWORD: mestre
        MYSQL_DATABASE: todo_dev
        MYSQL_ROOT_PASSWORD: senha

        DB_NAME: 'todo_dev'
        DB_USER: 'devops_dev'
        DB_PASSWORD: 'mestre'
        DB_HOST: 'mysql'
        DB_PORT: '3306'
        SECRET_KEY: 'r*5ltfzw-61ksdm41fuul8+hxs$86yo9%k1%k=(!@=-wv4qtyv'

    stage: build
    image: azosnosredna/gitlab_todolist_img:latest
    tags:
      - executor-tarefas
    dependencies:
      - build-docker
    script:
      - python manage.py makemigrations
      - python manage.py migrate

test-project:
    image: azosnosredna/gitlab_todolist_img:latest
    stage: test
    services:
    - docker:19.03.0-dind
    - mysql:5.7
    variables:
        MYSQL_USER: devops_dev
        MYSQL_PASSWORD: mestre
        MYSQL_DATABASE: todo_dev
        MYSQL_ROOT_PASSWORD: senha

        DB_NAME: 'todo_dev'
        DB_USER: 'devops_dev'
        DB_PASSWORD: 'mestre'
        DB_HOST: 'mysql'
        DB_PORT: '3306'
        SECRET_KEY: 'r*5ltfzw-61ksdm41fuul8+hxs$86yo9%k1%k=(!@=-wv4qtyv'
    dependencies:
    - build-project
    tags:
    - executor-tarefas

    script:
    - python -m unittest setUp
6 respostas

Achei o arquivo config.toml, na pasta compartilhada. Então alterei os dados que citou no forum e funcionou 100%.

Pergunto: apenas essa alteração na minha máquina local modifica o comportamento do pipeline lá no gitlab.com?

Mais uma descoberta que mostra que tô desconhecendo muito os mecanismos e ligações de tudo isso. Alias o professor nem citou a existencia e funçao deste arquivo.

eis como ficou:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  name = ""
  url = ""
  token = ""
  executor = "docker"
  environment = ["DOCKER_TLS_CERTDIR="]
  [runners.docker]
    tls_verify = false
    image = ""
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    shm_size = 0

[[runners]]
  name = "runner-bytebank"
  url = "https://gitlab.com/"
  token = "Askq92_psLA3i1X69Gv7"
  executor = "docker"
  environment = ["DOCKER_TLS_CERTDIR="]
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "azosnosredna/gitlab_todolist_img:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

[[runners]]
  name = "runner-bytebank"
  url = "https://gitlab.com/"
  token = "tGAL-YBx8zMmoUe-Mr99"
  executor = "docker"
  environment = ["DOCKER_TLS_CERTDIR="]
  [runners.custom_build_dir]
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]
    [runners.cache.azure]
  [runners.docker]
    tls_verify = false
    image = "azosnosredna/gitlab_todolist_img:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0

Bom, fui adiante na próxima alteração da aula e o erro ressurge. Apenas fiz a ultima alteração nas variaveis e nada além, e já caiu no primeiro job.

$ docker info
Client:
 Debug Mode: false
Server:
ERROR: error during connect: Get http://docker:2375/v1.40/info: dial tcp: lookup docker on 10.0.2.3:53: no such host
errors pretty printing info
Cleaning up file based variables
00:02
ERROR: Job failed: exit code 1

Complicado de entender. meu yml agora, nada muito diferente que fosse justificar o erro:

image: docker:19.03.0

stages:
- pre-build
- build
- test
- deploy

build-docker:
    services:
      - docker:19.03.0-dind
    variables:
        DOCKER_HOST: tcp://docker:2375
        DOCKER_DRIVER: overlay2
        DOCKER_TLS_CERTDIR: ""
        GIT_SSL_NO_VERIFY: "1"


    before_script:
      - docker info
      - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD

    stage: pre-build
    script: 
      - docker build -t todo-list-img .
      - docker tag todo-list-img azosnosredna/gitlab_todolist_img:latest
      - docker push azosnosredna/gitlab_todolist_img:latest

build-project:
    image: azosnosredna/gitlab_todolist_img:latest
    services:
      - docker:19.03.0-dind
      - mysql:5.7
    variables:
        MYSQL_USER: $DB_USER
        MYSQL_PASSWORD: $DB_PASSWORD
        MYSQL_DATABASE: $DB_DATABASE
        MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD

        DB_NAME: $DB_DATABASE
        DB_USER:  $DB_USER
        DB_PASSWORD: $DB_PASSWORD
        DB_HOST: 'mysql'
        DB_PORT: '3306'
        SECRET_KEY: $DB_SECRET_KEY

    stage: build
    image: azosnosredna/gitlab_todolist_img:latest
    tags:
      - executor-tarefas
    dependencies:
      - build-docker
    script:
      - python manage.py makemigrations
      - python manage.py migrate

test-project:
    image: azosnosredna/gitlab_todolist_img:latest
    stage: test
    services:
    - docker:19.03.0-dind
    - mysql:5.7
    variables:
        MYSQL_USER: $DB_USER
        MYSQL_PASSWORD: $DB_PASSWORD
        MYSQL_DATABASE: $DB_DATABASE
        MYSQL_ROOT_PASSWORD: $DB_ROOT_PASSWORD

        DB_NAME: $DB_DATABASE
        DB_USER:  $DB_USER
        DB_PASSWORD: $DB_PASSWORD
        DB_HOST: 'mysql'
        DB_PORT: '3306'
        SECRET_KEY: $DB_SECRET_KEY
    dependencies:
    - build-project
    tags:
    - executor-tarefas

    script:
    - python -m unittest setUp
solução!

Olá Anderson, tudo bem? Eu não entendi muito bem porque você tem dois runners configurados com Tokens diferentes, poderia explicar isso pra gente? Mas sobre o problema, você poderia colocar o environment logo após a inicialização do runner ([[runners]]), assim o arquivo deve ficar:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  environment = ["DOCKER_TLS_CERTDIR="]
  name = ""
  url = ""
  token = ""
  executor = "docker"
  [runners.docker]
    tls_verify = false
    image = ""
    privileged = true
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    shm_size = 0

[[runners]]
  environment = ["DOCKER_TLS_CERTDIR="]
  name = "runner-bytebank"
  url = "https://gitlab.com/"
  token = "Askq92_psLA3i1X69Gv7"
  executor = "docker"
  [runners.custom_build_dir]
  [runners.docker]
    tls_verify = false
    image = "azosnosredna/gitlab_todolist_img:latest"
    privileged = false
    disable_entrypoint_overwrite = false
    oom_kill_disable = false
    disable_cache = false
    volumes = ["/cache"]
    shm_size = 0
  [runners.cache]
    [runners.cache.s3]
    [runners.cache.gcs]

Mas antes de fazer essa mudança acima, pare o container gitlab-runner e então faça as mudanças e após isso inicie o container novamente com o comando:

docker start <ID-container>

Uma pequena observação, com essas mudanças não precisei utilizar as seguintes linhas:

variables:
        DOCKER_HOST: tcp://docker:2375
        DOCKER_DRIVER: overlay2
        DOCKER_TLS_CERTDIR: ""
        GIT_SSL_NO_VERIFY: "1"

E fala pra gente se deu certo!

Fiz conforme pediu, alterei a localização da linha no toml, testei, erro. Removi as variaveis conforme citou, testei, erro. Então voltei a adicionar as mesmas variaveis, testei, sucesso.

Quanto a ter dois runners diferentes é porque eu deletei o gitlab-runner e fiz de novo e acho que ele escreveu no mesmo arquivo toml do runner anterior que persistiu.

Get http://docker:2375/v1.40/info: dial tcp: lookup docker on 10.0.2.3:53: no such host

Problema volta sem nenhuma explicação lógica, já que não alterei nada. Bastou adicionar mais um job (deploy-project). O teste do deploy-project com tudo comentado # funciona, mas bastou remover os comentarios# que o erro reaparece.

deploy-project:
    stage: deploy
    tags:
    - executor-deploy
    dependencies:
    - test-project
    script:
    - tar cfz arquivos.tgz *
    - scp arquivos.tgz vagrant@192.168.15.11:/vagrant/deploy/
    - ssh vagrant@192.168.15.11 'cd /vagrant/deploy/; tar xfz arquivos.tgz; /usr/local/bin/docker-compose up -d'

Segue log do gitlab:

https://gist.github.com/anderson-soza/04a487a72ff44cd974459dddce9dd251

Anderson, esse é um erro bem estranho, e a própria documentação alerta para isso, ela fala que esse é um erro comum quando usamos a versão 19.03 ou superior do Docker, e esse problema acontece porque o "Docker inicia no TLS automaticamente", ou seja que é um protocolo de segurança para a comunicação. E a própria documentação explica como devemos utilizar o Docker in Docker (dind), e para isso ele usa a versão fixa do Docker 19.03.12, e fala que demos usar o comando:

sudo gitlab-runner register -n \
  --url https://gitlab.com/ \
  --registration-token REGISTRATION_TOKEN \
  --executor docker \
  --description "My Docker Runner" \
  --docker-image "docker:19.03.12" \
  --docker-privileged \
  --docker-volumes "/certs/client"

Esse comando utiliza o modo privileged para executar os containers internos. Você poderia tentar seguindo esses passos apresentados pela própria documentação e fala pra gente o resultado!

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software