J'utilise 2 conteneurs sur mon système d'exploitation Ubuntu: Gitlab-ce et gitlab-runner
Les noms des conteneurs sont: gitlab_gitlab_1
et gitlab_gitlab-runner_1
J'accède à mon application gitlab via gitlab.localhost.com:801
J'inscris avec succès un coureur avec cette commande:
docker exec -it gitlab_gitlab-runner_1 gitlab-runner register --non-interactive --url http://gitlab_gitlab_1 --registration-token _wgMgEx3nBocYQtoi83c --executor docker --docker-image Alpine:latest
Puis, quand je commence le travail, j'ai reçu ce message d'erreur:
Running with gitlab-runner 10.7.1 (b9bba623)
on 589a617ee407 12ba77f7
Using Docker executor with image Alpine:latest ...
Pulling docker image Alpine:latest ...
Using docker image sha256:3fd9065eaf02feaf94d68376da52541925650b81698c53c6824d92ff63f98353 for Alpine:latest ...
Running on runner-12ba77f7-project-1-concurrent-0 via 01196621a827...
Cloning repository...
Cloning into '/builds/root/test'...
fatal: unable to access 'http://gitlab-ci-token:[email protected]/root/test.git/': Could not resolve Host: gitlab.localhost.com
ERROR: Job failed: exit code 1
Dans les deux conteneurs, je peux accéder au nom d'hôte gitlab.localhost.com
. Je pense que le problème vient de l'image Alpine qui ne peut pas résoudre l'hôte.
Comment puis-je résoudre ce problème?
Merci
Modifier 1
docker-compose.yml
version: '3'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.localhost.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.localhost.com'
ports:
- '801:80'
- '443:443'
- '22:22'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
networks:
- 'default'
gitlab-runner:
image: 'gitlab/gitlab-runner:latest'
depends_on:
- 'gitlab'
restart: always
volumes:
- '/srv/gitlab-runner/config:/etc/gitlab-runner'
- '/var/run/docker.sock:/var/run/docker.sock'
networks:
- 'default'
links:
- 'gitlab:gitlab.localhost.com'
networks:
default:
driver: 'bridge'
Modifier 2
docker-compose.yml
version: '3'
services:
gitlab:
image: 'gitlab/gitlab-ce:latest'
restart: always
hostname: 'gitlab.localhost.com'
environment:
GITLAB_OMNIBUS_CONFIG: |
external_url 'http://gitlab.localhost.com'
ports:
- '801:80'
- '443:443'
- '22:22'
volumes:
- '/srv/gitlab/config:/etc/gitlab'
- '/srv/gitlab/logs:/var/log/gitlab'
- '/srv/gitlab/data:/var/opt/gitlab'
networks:
default:
aliases:
- 'gitlab.localhost.com'
gitlab-runner:
image: 'gitlab/gitlab-runner:latest'
depends_on:
- 'gitlab'
restart: always
volumes:
- '/srv/gitlab-runner/config:/etc/gitlab-runner'
- '/var/run/docker.sock:/var/run/docker.sock'
networks:
- 'default'
networks:
default:
driver: 'bridge'
Grâce au lien de Tarun Lalwan et à la publication de Joyce Babu, il existe une option non documentée depuis le dépôt de coureur de gitlab dans le fichier. [runners.docker] section
network_mode : Add container to a custom network
Je dois donc définir cette option avec le nom de mon réseau dans le config.toml
comme
[[runners]]
...
[runners.docker]
...
network_mode = "gitlab_default"
OU quand créer le coureur à partir de la ligne de commande
docker exec -it gitlab_gitlab-runner_1 gitlab-runner register \
--non-interactive \
--url http://gitlab_gitlab_1 \
--registration-token _wgMgEx3nBocYQtoi83c \
--executor docker \
--docker-image Alpine:latest \
--docker-network-mode gitlab_default
Si cela aide les autres à la recherche de cela ..
Même problème, mais GitLab et GitLab Runner s’exécutent sur des machines différentes du réseau local. DNS fonctionne et ping gitlab
fonctionne, sauf à l'intérieur des dockers:
$ Sudo docker run -it Alpine ping gitlab
ping: bad address 'gitlab'
^C
Mais fonctionne avec le DNS donné:
$ Sudo docker run -it --dns=172.168.0.1 Alpine ping gitlab
PING gitlab (172.168.0.5): 56 data bytes
64 bytes from 172.168.0.5: seq=0 ttl=63 time=0.536 ms
^C
Editez /etc/docker/daemon.json
sur GitLab Runner (le fichier n’existait pas encore) avec le contenu suivant:
{
"dns": ["172.168.0.1", "1.1.1.1"]
}
Testez à nouveau, maintenant OK:
$ Sudo docker run -it --dns=172.168.0.1 Alpine ping gitlab
PING gitlab (172.168.0.5): 56 data bytes
64 bytes from 172.168.0.5: seq=0 ttl=63 time=0.455 ms
64 bytes from 172.168.0.5: seq=1 ttl=63 time=0.905 ms
^C
Si ce n'est pas comme cela est censé être fait, je serais heureux de l'entendre.
Si ce problème ne devait pas exister, je serais heureux de l'entendre aussi. J'ai été surpris de ne pas trouver beaucoup de références en ligne à ce problème pour GitLab Runner ..
Comme je peux le constater, vous avez déjà défini un réseau, ce qui signifie que gitlab
et gitlab-runner
sont tous deux dans le même réseau. vous pouvez le vérifier en utilisant docker inspect
. vous devez donc supprimer links
car vous n'en avez pas besoin.
Afin de définir un alias de réseau, vous devez modifier le composant réseau du service gitlab
comme suit:
gitlab:
...
networks:
default:
aliases:
- gitlab.localhost.com
Références: