Почему я не могу подключиться к своему docker -композитному сервису из Gitlab CI на localhost - PullRequest
0 голосов
/ 27 апреля 2020

Я запускаю это на бегунах CI Gitlab.com. Усеченная версия моего .gitlab-ci.yml -

image: docker/compose:1.25.5
services:
  - docker:dind
Test:
  - script/test

И усеченная версия моего скрипта / теста -

docker-compose run -d --name app1_test -p 8080:8080 app1 bash
docker-compose run -d --name app2_test -p 8081:8080 app2 bash
curl -s ORIGIN:8081/healthz

. Я считаю, что независимо от того, является ли мой ORIGIN localhost, docker, 0.0.0.0 и др. 1015 *. Я всегда получаю can't connect to remote host (0.0.0.0): Connection refused

Я видел так много ответов на форумах Gitlab и переполнение стека, и ни один из них не решил проблему. Что происходит и как мне решить / диагностировать проблему?

1 Ответ

0 голосов
/ 27 апреля 2020

Прежде всего, многие ответы на форумах указывают на решение, с которым я в итоге согласился. На практике я хотел проверить этот сервис, чтобы другой сервис из моего docker -compose.yml мог общаться с ним. Так почему бы просто не использовать этот сервис для пинга? Тогда вы получите лучший тест и можете использовать Docker автоматизированный c DNS с опцией --name.

docker exec -t app1_test curl -s app2_test:8080/healthz

Теперь, если это все еще вызывает у вас проблемы, потому что вы просто хотите знать, почему что происходит и как его диагностировать / решить, или вам действительно нужно поговорить с контейнером с хоста. Я рекомендую вам проверить некоторые вещи в вашем скрипте

cat /etc/hosts
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' app1_test
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' app2_test

что меня удивило

 $ cat /etc/hosts
 127.0.0.1  localhost
 ::1    localhost ip6-localhost ip6-loopback
 fe00::0    ip6-localnet
 ff00::0    ip6-mcastprefix
 ff02::1    ip6-allnodes
 ff02::2    ip6-allrouters
 127.0.0.1  0hshit.hopto.org
 127.0.0.1  daymndaymn.myftp.org
 127.0.0.1  loba.webhop.me
 172.17.0.3 docker 26f99c2de716 runner-fa6cab46-project-18056856-concurrent-0-3b5b3ec1f3220cec-docker-0
 172.17.0.4 runner-fa6cab46-project-18056856-concurrent-0

$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' app1_test
172.20.0.3172.19.0.4

$ docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' app2_test
172.20.0.2172.19.0.3

Так что другие ответы об использовании docker не работали, потому что это указывает до 172.17.0.3, но ни один из моих контейнеров там нет. Теперь я должен быть в состоянии выполнить от curl до 172.20.0.2:8080 и быть в порядке, но я не пробовал, потому что к тому времени я убедил себя, что лучше просто запустить curl в контейнере.

Я на самом деле не знаю, почему там два таких IP-адреса, но некоторые кролики просто делают поворот в яме, которую вы не знаете, знаете ли?

...