Ich möchte einen Docker-basierten Gitlab CI-Runner erstellen, der die Docker-Images für den Build von einer privaten Docker Registry (v2) abruft. Ich kann den Gitlab Runner nicht dazu bringen, das Image von einer lokalen Registry zu holen, es versucht etwas von einer API zu bekommen. Ich erhalte die folgende Fehlermeldung:Gitlab CI kann kein Bild aus der privaten Docker-Registry ziehen
ERROR: Build failed: Error while pulling image: Get http://registry:5000/v1/repositories/maven/images : dial tcp: lookup registry on 127.0.1.1:53: no such host
hier ein minimales Beispiel, Docker-compose und einen Web-Browser.
Ich habe folgende docker-compose.yml
Datei:
version: "2"
services:
gitlab:
image: gitlab/gitlab-ce
ports:
- "22:22"
- "8080:80"
links:
- registry:registry
gitlab_runner:
image: gitlab/gitlab-runner
volumes:
- /var/run/docker.sock:/var/run/docker.sock
links:
- registry:registry
- gitlab:gitlab
registry:
image: registry:2
Nach dem ersten Gitlab Login, melde ich mich an den Läufer in die Gitlab Beispiel:
[email protected]:/# gitlab-runner register
Running in system-mode.
Please enter the gitlab-ci coordinator URL (e.g. https://gitlab.com/ci):
http://192.168.61.237:8080/ci
Please enter the gitlab-ci token for this runner:
tE_1RKnwkfj2HfHCcrZW
Please enter the gitlab-ci description for this runner:
[130d08732613]: docker
Please enter the gitlab-ci tags for this runner (comma separated):
Registering runner... succeeded runner=tE_1RKnw
Please enter the executor: docker-ssh+machine, docker, docker-ssh, parallels, shell, ssh, virtualbox, docker+machine:
docker
Please enter the default Docker image (eg. ruby:2.1):
maven:latest
Runner registered successfully. Feel free to start it, but if it's running already the config should be automatically reloaded!
Danach habe ich die Gitlab Läufer sehen in meinem Gitlab Beispiel:
Danach schiebe ich ein einfaches Maven Bild zu meinen neu erstellten Docker Repository:
[email protected]:~/$ docker tag maven:3-jdk-7 172.19.0.2:5000/maven:3-jdk7
[email protected]:~/$ docker push 172.19.0.2:5000/maven:3-jdk7
The push refers to a repository [172.19.0.2:5000/maven]
79ab7e0adb89: Pushed
f831784a6a81: Pushed
b5fc1e09eaa7: Pushed
446c0d4b63e5: Pushed
338cb8e0e9ed: Pushed
d1c800db26c7: Pushed
42755cf4ee95: Pushed
3-jdk7: digest: sha256:135e7324ccfc7a360c7641ae20719b068f257647231d037960ae5c4ead0c3771 size: 1794
(ich die 172.19.0.2
IP-Adresse aus dem Ausgang des docker inspect
Befehl bekam)
Danach ich ein Testprojekt in der erstellen Gitlab und fügen Sie eine einfache .gitlab-ci.yml
Datei:
image: registry:5000/maven:3-jdk-7
stages:
- build
- test
- analyze
maven_build:
stage: build
script:
- "mvn -version"
und nach dem Build der Gitlab gibt den Fehler in am Anfang der Post gesehen.
Wenn ich in den laufenden Gitlab-runner Behälter geben, kann ich die Registrierung unter der angegebenen URL:
[email protected]:~/$ docker exec -it comptest_gitlab_runner_1 bash
[email protected]:/# curl http://registry:5000/v2/maven/tags/list
{"name":"maven","tags":["3-jdk7"]}
[email protected]:/# exit
exit
[email protected]:~/$
Aber der Fehler immer noch die gleichen:
Haben Sie hast du eine idee wie man den gitlab-runner zwingt das v2 api des privaten registers zu benutzen?
Haben Sie versucht, das Bild aus dem Läufer zu ziehen? Vielleicht mit der "externen" IP? Was ist mit dem Bild vom Host? – Martin
@mgansler Wenn ich in das gitlab_runner Bild eingebe ('docker exec -it comptest_gitlab_runner_1 bash') gibt es keinen docker Befehl. Aber die Registrierung wird gesehen, weil ich die HTTP-API der Registrierung mit curl verwenden kann. –