2017-10-02 2 views
0

Ich benutze GitLab zusammen mit GitLab Runner und DIND.Docker DIND kann nicht auf private Registry zugreifen

Konfigurationsdetails:

--------------------------------------- 

docker run --privileged --name gitlab-dind -d --restart=always docker:17.07-dind 

--------------------------------------- 

cat gitlab_runner.sh 
docker run -d --name gitlab-runner --restart always \ 
    -v /mnt/data/gitlab/gitlab-runner:/etc/gitlab-runner \ 
    --link gitlab-dind:docker \ 
    gitlab/gitlab-runner:v9.5.0 

--------------------------------------- 

cat /mnt/data/gitlab/gitlab-runner/config.toml 
concurrent = 1 
check_interval = 0 

[[runners]] 
    name = "RunnerA" 
    url = "https://gitlab.dev.abc.net" 
    token = "d8ed43a69ebed74ccab2493857d8cb" 
    executor = "docker" 
    [runners.docker] 
    tls_verify = false 
    image = "docker:17.07" 
    privileged = false 
    disable_cache = false 
    volumes = ["/cache"] 
    host = "tcp://gitlab-dind:2375" 
    shm_size = 0 
    [runners.cache] 

--------------------------------------- 

cat ~/wksp/test-proj/.gitlab-ci.yml 
image: docker.artifactory.abc.net/docker:17.07 

variables: 
    DOCKER_HOST: tcp://docker:2375 

# This before_script block was added later but it seems this block 
# isn't executed before the DIND tries fetching image from Artifactory 
before_script: 
    - docker login -u svc-art-user -p some-pwd docker.artifactory.abc.net 
    - docker info 

services: 
- docker.artifactory.abc.net/docker:17.07-dind 

build: 
    stage: build 
    script: 
    - docker build -t my-docker-node-image . 

--------------------------------------- 

Als beiseite, in der obigen Konfiguration ist DOCKER_HOST config in .gitlab-ci.yml oder nur der Eintrag benötigt (host = "tcp://gitlab-dind:2375) in config.toml ausreiche?

Nun, wenn der Läufer läuft, bekomme ich folgende Fehlermeldung:

Runner log error: 
Running with gitlab-ci-multi-runner 9.5.0 (413da38) 
    on RunnerA (d8ed43a6) 
Using Docker executor with image docker.artifactory.abc.net/docker:17.07 ... 
Starting service docker.artifactory.abc.net/docker:17.07-dind ... 
Pulling docker image docker.artifactory.abc.net/docker:17.07-dind ... 
ERROR: Preparation failed: Error response from daemon: Get https://docker.artifactory.abc.net/v2/: x509: certificate signed by unknown authority 

Ich kann mich irren, aber es scheint dieser Fehler ist, weil der Dienstkonto (svc-art-user) nicht in der Lage ist einzuloggen vor der DIND Bild ziehen passiert.

Antwort

0

Sie müssen Ihrem Gitlab Runner Authentifizierungsdetails angeben, da er das Bild abrufen muss.

Sie benötigen DOCKER_AUTH_CONFIG geheime Variable mit den Authentifizierungsdaten zu erstellen, wie unten

{ 
    "auths": { 
     "docker.artifactory.abc.net": { 
      "auth": "bXlfdXNlcm5hbWU6bXlfcGFzc3dvcmQ=" 
     } 
    } 
} 

Diese Sie, indem Sie sich Docker vor Ort zu erhalten und und Kontrolle ~/.docker/config.json

Die Dokumentation bietet eine gute Details zu diesem

https://docs.gitlab.com/ce/ci/docker/using_docker_images.html#define-an-image-from-a-private-docker-registry

https://docs.gitlab.com/runner/configuration/advanced-configuration.html#using-a-private-container-registry

+0

Danke für die Antwort. Tut mir leid, aber ich habe vergessen zu erwähnen, dass ich das schon probiert habe. Ich habe den Inhalt der Datei config.json kopiert (die generiert wurde, nachdem ich den Befehl 'docker login -u svc-art-benutzer -p einige-pwd docker.artifactory.abc.net' auf dem Host ausgeführt habe) _as is_ in ' Geheime Variable "Abschnitt meiner Projekteinstellung. Trotzdem bleibt der Fehler bestehen. Ich hoffe, ich muss die Container nicht neu starten. Alle Container (GitLab, Runner & DIND) laufen auf einem Host. – Technext

+0

Versuchen Sie, den Gitlab-Runner neu zu starten, da ich nicht sicher bin, ob er diese Variable beim Start oder zur Laufzeit aufnimmt. –

+0

Auch nach dem Neustart von Runner und Docker-dind besteht das Problem weiterhin. :( – Technext

Verwandte Themen