Docker в GitLab CI ведёт себя неправильно
Если в логах вашего пайплайна GitLab CI/CD вы видите следующую ошибку:
error during connect: Get "http://docker:2375/v1.51/info": dial tcp: lookup docker on <ip_edited>:53: server misbehaving
…то, скорее всего, вы пытаетесь использовать Docker-in-Docker.
Причина этой ошибки обычно кроется в конфигурации GitLab Runner — а именно в настройке network_mode в файле config.toml. Если вы вручную задали network_mode, эта настройка может мешать Docker разрешать имя хоста docker, которое используется для связи с демоном Docker.
В большинстве случаев проблему решает полное удаление строки network_mode из файла config.toml вашего раннера. По умолчанию GitLab Runner создаёт для каждой задачи отдельную сеть Docker, что обеспечивает корректное разрешение DNS-имён и связь между контейнерами (включая демон Docker). Если вы переопределяете это поведение собственным network mode, это может нарушить изоляцию или помешать ожидаемому разрешению имён.
Итак, откройте конфигурационный файл вашего раннера (обычно он находится по пути /etc/gitlab-runner/config.toml) и удалите или закомментируйте строку вида:
[[runners]]
executor = "docker"
[runners.docker]
network_mode = "host" <-- this is line which you should remove
Обычно перезапуск GitLab Runner не требуется, но лишним не будет, так что на всякий случай:
service gitlab-runner restart
Более подробную информацию можно найти в официальной документации GitLab:
- https://docs.gitlab.com/runner/executors/docker/#create-a-network-for-each-job