1
resposta

docker info não funciona

Depois de tirar os services e o before_script do global o docker info quebrou. Pode me ajudar?

Erro:

$ docker info
00:03
 Client:
  Debug Mode: false
 Server:
 ERROR: error during connect: Get http://docker:2375/v1.40/info: dial tcp: lookup docker on 8.8.8.8:53: no such host
 errors pretty printing info

Meu .gitlab-ci.yml

image: docker:stable

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

build-docker:
    services:
        -  docker:dind

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

    stage: pre-build
    script:
    -  docker build -t imagem-teste .
    -  docker tag imagem-teste rmsp/imagem-teste:latest
    -  docker push rmsp/imagem-teste:latest 

build-project:
    stage: build
    tags:
    -  runner

    dependencies:
    -  build-docker
    script:
    -  echo "runner"
1 resposta

Olá Ramon, tudo bem? Bem, esse problema acontece porque houve uma mudança com uma última atualização do Docker, e isso gerou muitas discussões na comunidade do GitLab, até que o próprio GitLab falou sobre isso nesse artigo aqui. A questão é que "a partir da versão 19.03, docker:dind gerará automaticamente certificados TLS e exigirá usá-los para comunicação" por isso acontece esse erro, então a solução para concluirmos o curso sem maiores problemas é usarmos uma versão especifica do Docker (docker:19.03.0 e docker:19.03.0-dind) no lugar de usarmos somente docker:latest e docker:dind, a partir desse momento temos que utilizar da seguinte forma:

image: docker:19.03.0

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

build-docker:
  services:
    - docker:19.03.0-dind
  retry: 2
  before_script:
    - docker info
    - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD

...
<restante do código>

Esse é o primeiro passo para resolver esse erro, o segundo passo que precisamos fazer é no nosso "gitlab-runner", primeiro para o container do gitlab-runner com o comando:

docker stop -t 0 gitlab-runner

E então precisamos ir no arquivo de configuração do nosso gitlab-runner, e essa configuração foi determinada dentro da pasta compartilhada nesse comando:

docker run -d --name gitlab-runner --restart always -v /Users/Shared/gitlab-runner/config:/etc/gitlab-runner -v /var/run/docker.sock:/var/run/docker.sock gitlab/gitlab-runner:latest

Então essa é a pasta que contém o arquivo de configuração do gitlab-runner:

/Users/Shared/gitlab-runner/config

Dentro dessa pasta deve ter um arquivo com o nome config.toml e precisamos editá-lo para desabilitar os certificados TLS, para isso termos que adicionar a linha:

environment = ["DOCKER_TLS_CERTDIR="]

Logo após as linhas executor = "docker", nosso arquivo deve ficar semelhante a esse:

concurrent = 1
check_interval = 0

[session_server]
  session_timeout = 1800

[[runners]]
  <outras-configuraões>
  executor = "docker"
  environment = ["DOCKER_TLS_CERTDIR="]
  <outras-configuraões>

[[runners]]
  name = "runner-bytebank"
  url = "https://gitlab.com/"
  token = "XXXXXXXXXXXXXXXXXXX"
  executor = "docker"
  environment = ["DOCKER_TLS_CERTDIR="]
  <outras-configuraões>

E por fim precisarmos executar novamente o gitlab-runner com o comando:

docker start gitlab-runner

Isso deve resolver o problema!

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