Docker problēmas GitLab CI vidē

Ja GitLab CI/CD konveijera žurnālos redzat šādu kļūdu:

error during connect: Get "http://docker:2375/v1.51/info": dial tcp: lookup docker on <ip_edited>:53: server misbehaving

…tad, visticamāk, mēģināt izmantot Docker-in-Docker.

Šīs kļūdas cēlonis parasti slēpjas GitLab Runner konfigurācijā — konkrēti, iestatījumā network_mode failā config.toml. Ja esat manuāli konfigurējis network_mode, šis iestatījums var traucēt Docker izšķirt resursdatora nosaukumu docker, kas tiek izmantots saziņai ar Docker dēmonu.

Vairumā gadījumu problēmu atrisina network_mode rindas pilnīga izņemšana no GitLab Runner faila config.toml. Pēc noklusējuma GitLab Runner katram uzdevumam izveido atsevišķu Docker tīklu, kas nodrošina pareizu DNS nosaukumu izšķiršanu un saziņu starp konteineriem (tostarp ar Docker dēmonu). Ja šo uzvedību pārrakstāt ar pielāgotu tīkla režīmu, tas var izjaukt šo izolāciju vai traucēt paredzēto nosaukumu izšķiršanu.

Tātad dodieties uz GitLab Runner konfigurācijas failu (parasti tas atrodas /etc/gitlab-runner/config.toml) un izņemiet vai aizkomentējiet šādu rindu:

[[runners]]
  executor = "docker"
  [runners.docker]
    network_mode = "host" <-- this is line which you should remove

Parasti GitLab Runner nav jārestartē, taču to tik un tā ir vērts izdarīt, tāpēc atgādinājumam:

service gitlab-runner restart

Papildu informāciju skatiet oficiālajā GitLab dokumentācijā:

  1. https://docs.gitlab.com/runner/executors/docker/#create-a-network-for-each-job