Я пытаюсь запустить Docker Swarm на одном узле, и у меня возникают проблемы с отображением порта приложения Docker для хоста.
Это похоже Порт службы Docker Swarm не выставлен , но я работаю на одном узле и предоставлю более подробную информацию по моему вопросу и исследованиям.
Например,учитывая следующий файл myapp.yml:
version: "3"
services:
app:
image: myapp
ports:
- "8123:8123"
Стек запускается через
docker stack deploy -c myapp.yml myapp
После запуска стека, когда я пытаюсь получить доступ к порту(через завиток) это терпит неудачу.Например,
curl -v http://localhost:8123/myapp
показывает, что в соединении было отказано (на этом порту ничего не прослушивалось).
Код работает при использовании Docker Run
Следующая команда запускает образ и показывает, как проверить, открыт ли порт.
docker run -p 8123:8123 --name myapp myapp
Затем работает Curl.
curl -v http://localhost:8123/myapp
Дает вывод из приложения, работающего в Docker.
Когда я запускаю docker ps
, вывод в разделе PORTS показывает: 0.0.0.0:8123:8123/tcp
.
docker network inspect bridge
- Показать, что док-контейнер назначен на bridge network.Сеть моста Docker по умолчанию используется с командой запуска Docker.
Команда docker port myapp
показывает:
8123/tcp -> 0.0.0.0:8123
, что соответствует выводу docker ps
ПОРТ поле.
при развертывании док-стека не открывается порт
После запуска docker stack deploy -c myapp.yml myapp
я запускаю команду docker ps
и вижу только 8123/tcp
вполе PORTS вывода.
Команда docker port myapp
не имеет вывода (что означает, что порты хоста Docker недоступны.
Когда я запускаю docker network ls
Я вижу:
NETWORK ID NAME DRIVER SCOPE
1234567890 bridge bridge local
9999999999 myapp_default overlay swarm
Итак, я заметил, что сеть myapp_default находится в режиме, отличном от локального моста. Я попытался использовать существующую сеть bridge , но когдаЯ ссылался на сеть bridge в моем файле стека / компоновки. Я заметил, что сеть myapp_bridge была создана.
Итак, я прочитал о сети докеров https://blog.alexellis.io/docker-stacks-attachable-networks/ была хорошая рецензия.
До сих пор я не получил ее на работу, поэтому я набросал это, чтобы попросить suggestions / help.
ПРИМЕЧАНИЕ: Эта статья (от февраля 2017 г.) говорит, что она должна работать, но не отвечает на мой вопрос.
Я думаю, что я близок.
Ресурсы и другие связанные вопросы
https://docs.docker.com/v17.12/get-started/part5/ - это основная документация докера по технологии стека докеров.Но поиск на этой странице для сетей не показывает ничего полезного.
https://blog.alexellis.io/docker-stacks-attachable-networks/ - Хорошая запись.
Не открыт порт службы Docker Swarm - аналогичновопрос, который я задаю.
https://runnable.com/docker/basic-docker-networking - Пишите в сети Docker.Он говорит следующее при создании оверлейной сети (которая используется по умолчанию при использовании развертывания стека докеров).
Для этих сетей требуется действующая служба хранилища значений ключей, например Consul, Etcd или ZooKeeper.,Вы должны установить и настроить службу хранилища ключей-значений перед созданием сети.
Невозможно использовать определяемый пользователем мост в файле Swarm Comose Yaml .