IP-адреса контейнеров и узлов в Docker Swarm - PullRequest
3 голосов
/ 11 марта 2019

Я просматриваю учебники по Docker и немного растерялся, почему контейнеры могут иметь IP-адреса, отличные от узлов, содержащих их в рое.Моя путаница основана на приведенной ниже диаграмме, начиная с этой страницы в руководстве.

enter image description here

Большие зеленые прямоугольники - это узлыв рое;у каждого из них есть собственный IP и балансировщик нагрузки, и они внешне прослушивают порт 8080. Я считаю, что желтые прямоугольники - это контейнеры / задачи в службе my-web.Они прослушивают порт 80, и я полагаю, что служба настроена на внешнее сопоставление порта 80 от каждого контейнера с портом 8080.

Это я понимаю более или менее, но не понимаю, почему контейнер / задачабудет иметь / нужен другой IP-адрес от узла, на котором он работает.Кто-нибудь может объяснить это?

Если бы мне пришлось угадывать, это было бы потому, что каждый контейнер в основном является виртуальной машиной, и виртуальные машины нуждаются в своих собственных IP-адресах, и никакие две виртуальные машины не могут иметь одинаковый IP-адрес, поэтому контейнер не может иметьтот же IP, что и у узла.Но я не уверен, что это объяснение верно.

1 Ответ

2 голосов
/ 11 марта 2019

Я все еще довольно новичок в докере / контейнерах, но, насколько я понимаю, вы имеете в виду внутренние и внешние IP-адреса. А именно, что 192.168.99.100-102 будет внешне адресуемым (он же общедоступный), тогда как 10.0.0.1-2 адрес только для внутренней адресации.

Причина внутренней адресации заключается в том, что вы можете иметь больший пул ip-адресов для работы с вашими контейнерами, поэтому используется адресное пространство 10.0.0.0/8. Эти узлы по-прежнему должны быть адресуемыми, чтобы ваш балансировщик нагрузки мог правильно распределить нагрузку. И согласно записи в википедии, у вас есть 16,777,216 доступных IP-адресов , что позволяет вашему рою масштабироваться до множества контейнеров, если вам это нужно. Принимая во внимание, что у вас есть только ограниченное количество внешних IP-адресов для ваших сервисов.

...