Docker Swarm - не удается подключиться к сервису - PullRequest
0 голосов
/ 27 октября 2019

Я хотел изучить роя Docker, но я не могу заставить его работать на свежем экземпляре Azure с Debian 10.1 (редактировать: я также пробовал Debian 9.11)

Я выделил проблему только для следующегокоманды, которые должны дать мне простую страницу приветствия nginx на порту 9000:

docker swarm init
docker service create --name nginx -p 9000:80 nginx
curl -vvv localhost:9000

Но на самом деле зависание curl и служба не отвечает:

* Expire in 1 ms for 1 (transfer 0x5574dbd88f50)
* Expire in 1 ms for 1 (transfer 0x5574dbd88f50)
* Expire in 1 ms for 1 (transfer 0x5574dbd88f50)
*   Trying ::1...
* TCP_NODELAY set
* Expire in 149998 ms for 3 (transfer 0x5574dbd88f50)
* Expire in 200 ms for 4 (transfer 0x5574dbd88f50)
* Connected to localhost (::1) port 9000 (#0)
> GET / HTTP/1.1
> Host: localhost:9000
> User-Agent: curl/7.64.0
> Accept: */*
>

Запуск nginx с docker runна машине работает.

Выполнение вышеуказанных команд на моем компьютере с Windows также с Docker также работает.

Но как только я использую docker stack deploy или docker service create, я не могу подключитьсяна открытые порты.

Это как-то связано с debian? Моя установка? Я пропустил некоторые настройки? Что я могу сделать, чтобы исследовать эту проблему?

Версия Docker 19.03.4

Ответы [ 2 ]

1 голос
/ 27 октября 2019

Возможно, что curl использует IPv6, а Nginx не настроен для него. Попробуйте:

curl -vvv 127.0.0.1:9000

0 голосов
/ 27 октября 2019

Используйте команду docker service ls для просмотра списка услуг. Там вы найдете колонку с информацией о состоянии вашего сервиса. Если он указан в списке, тогда узнайте, есть ли какая-либо ошибка. Используйте команду docker service ps nginx и проверьте столбец Current state. Если все в порядке, проверьте логи nginx с помощью команды docker service logs -f nginx. Покажите нам это, и мы продолжим помогать.

...