ЭкосистемаDocker:сетевоевзаимодействие
Сериятуториалов
Этоттуториалявляется4-ойчастьюиз5-тивсериистатейЭкосистемаDocker。
Введение
ПрипроектированиираспределённыхсистемработающихсDocker-контейнерами、сетевоевзаимодействие Сервис-ориентированнаяархитектура、бесспорно、опираетсянавзаимодействиемеждукомпонентамид
Вданномруководствемырассмотримразличныестратегиисетевоговзаимодействияиинструменты、используемыедляформированияжелаемойконфигурациисетей、используемыхконтейнерами。 ВнекоторыхситуацияххорошоподходятвстроенныерешенияотDocker、втовремякаквдругихлучшеисп
Docker
Dockerпредоставляетмногобазовогофункционаласетевоговзаимодействия、необходимогодлясвязей
Docker-процесса、онсоздаетновыйвиртуальногоинтерфейстипа“мост”сназваниемdocker0
ЭтотинтерфейспозволяетDockerсоздатьвиртуальнуюподсетьдляиспользованияконтейнерами、которы Мостбудетслужитьосновнойточкойвзаимодействиямеждусетьювнутриконтейнераисетьюхоста。
Dockerзапускаетконтейнер、создаетсяновыйвиртуальныйинтерфейсиемуназначаетсяадресвди IP-адрессвязансвнутреннейсетьюконтейнера、предоставляяпутьдлясетиконтейнеракмосту[X93] ドッカーавтоматическиконфигурируетправилавiptables
дляобеспеченияпереадресациииконфигурирует NAT длятрафикаизdocker0
вовнешнююсеть。
Какконтейнерыделаютсвоисервисыдоступнымидляпотребителей?
Другиеконтейнерынатомжехостеспособныосуществлятьдоступксервисам、предоставляемымсос Хост-системапростобудетнаправлятьзапросыкинтерфейсуdocker0
всоответствующееместо。
Контейнерымогутоткрыватьсвоипортыдляхоста、накоторыеонимогутприниматьтрафик、приход Открытыепортымогутбытьотображены(マッピングされる)нахост-системулибопутемвыбораконкретногопорта、либоразрешениемドッカーвыбратьслучайныйнеиспользуемыйпортсбольшимадресом。 ВэтихслучаяхDockerпозаботитсяовсехправилахпереадресациииконфигурацииiptables
длякоррект
Вчемразницамеждуоткрытием(公開)ипубликацией(公開)порта?
ПрисозданииобразаконтейнераилиегозапускеуВасестьвыбормеждуоткрытиемипубликациейп Разницамеждуэтивариантамизначительная、номожетбытьзаметнанесразу。
Открытие(公開)портапростоозначает、чтоDockerбудетиметьввиду、чтоданныйпортиспользуетсяконте Этоиспользуетсявцеляхобнаруженияисвязи。 Например、проверка(検査)контейнерадастВаминформациюоботкрытыхпортах。 Когдаконтейнерысвязаны、переменныеокружениявновомконтейнеребудутустановленынеобходимымобразом、всоответствиесоткрытымипортамиисходногоконтейнера。
Поумолчанию、контейнерыбудутдоступныдляхост-системыилюбыхдругихконтейнеров、расположенныхнатомжехосте、независимооттого、открытылипорты。 情報は、情報を提供します。情報は、情報を提供します。
Вотличиеотэтого、публикация(出版)портамаппируетегонаинтерфейсхоста、делаяегодоступны Портыконтейнерамогутбытьпривязаныкконкретномупортухоста、илиDockerможетавтоматическивыбр
ЧтотакоеDocker-связи(Dockerリンク)?
DockerпредоставляетмеханизмподназваниемDocker-связидляконфигурациивзаимодействиямеждуконтейнерами Еслиновыйконтейнерсвязанссуществующимпосредствомドッカー-связи、новыйконтейнерполучитинформациюоподключенииксуществующемучерезпеременныеокружения。
Этопозволяетлегкоустанавливатьсвязимеждудвумяконтейнерамипутемпередачиновомуконтейнеруявнойинформацииотом、какосуществлятьдоступкего「партнеру」。 Переменныеокруженияустанавливаютсявсоответствииспортами、открытымидругимконтейнером。 IP-Docker。
Проекты、расширяющиесетевоевзаимодействиеDocker
Описаннаявышемодельсетевоговзаимодействияявляетсяхорошейбазовоймодельюдляорганизаци Взаимодействиемеждуконтейнераминаодномитомжехостедостаточнопростореализуется、взаимодействиемеждухостамиможетпроисходитьпосредствомиспользованияпубличныхсетейприусловииправильнойнастройкипортовипередачиинформации、необходимойдлянастройкиэтоговзаимодействия、непосредственнохостам、участвующемвэтомвзаимодействии。
Темнеменее、многиеприложениятребуютособыхусловийсетевоговзаимодействияизсоображенийбезопасностиилидляихправильногофункционированиявцелом。 ДляэтихслучаевнативныхрешенийDockerоказываетсянедостаточно。 Поэтойпричине、существуетмножествопроектов、расширяющихфункциональностьэкосистемыDocker。
Созданиеоверлейныхсетейдляабстрагированияоттопологиисети
Сразунесколькопроектовсфокусировалисвоиусилиянасозданииоверлейныхсетей。 Оверлейнаясеть-этовиртуальнаясеть、построеннаяповерхсуществующейсети。
СозданиеоверлейнойсетипозволяетВамсоздатьболеепредсказуемуюиединообразнуюсетевую Этоупрощаетсетевоевзаимодействиемеждуконтейнерамивнезависимостиоттого、гдеонифизи Однавиртуальнаясетьможетохватыватьмножествохостовилиотдельныхфизическихподсетей。
Ещёоднимпримеромиспользованияоверлейныхсетейявляетсясозданиеполносвязнойвычислительн Вполносвязнойвычислительнойсредемножествохостовпредставляетсяввидеболееабстрактнойи Реализацияполносвязнойвычислительнойсредыпозволяетконечномупользователюуправлятькластером、какединымцелым、вместотого、чтобыработатьсотдельнымихостами。 Организациясетевоговзаимодействияиграетприэтомключевуюроль。
Организацияпродвинутогосетевоговзаимодействия
Существуютпроекты、расширяющиесетевыевозможностиDockerипредоставляющиебольшуюгибкость
Dockerсетевыенастройкифункциональны、ноограниченыпосвоимвозможностям。 Этиограниченияособеннозаметныприорганизациивзаимодействиямеждухостами、атакжепринеобходимостинастроитьболеенестандартноесетевоевзаимодействиенаодномхосте。
Дополнительнаяфункциональностьпредоставляетсяприпомощи“встраиваемых”возможностей。 Этипроектынепредоставляютконфигурацию「изкоробки」、ноприэтомпозволяютВамвручнуюнастроекто、чтовамнеобходимодляреализацииболеесложныхсценариевсетевоговзаимодействия。 Примерамитакого「нестандартного」сетевоговзаимодействиямогутбытьнастройкаприватнойсетимеждуопределённымихостами、настройкамостов(ブリッジ)、виртуальныхлокальныхсетей、подсетей、шлюзов(ゲートウェイ)。
Существуетрядинструментовипроектов、которыеизначальнобылиразработанынедляприменениясドッカー、но、темнеменее、частоиспользуютсявドッカーдляобеспечениянеобходимойфункциональности。 Вчастности、существующиерешениядляпостроенияприватныхсетейитехнологиитуннелированиячастоиспользуютсядляобеспечениябезопасноговзаимодействиямеждухостамииконтейнерами。
НаиболеепопулярныепроектыдляулучшениясетевыхвозможностейDocker
Существуетнесколькопроектов、фокусирующихсянапостроенииоверлейныхсетейдляDocker-хостов。 Наиболеераспространеннымиявляются:
- フランネル:ИзначальноразработанкомандойCoreOSдляобеспеченияхоставозможностьюсоздавать Это、впервуюочередь、необходимодляфункционированияинструментадляоркестровкиотGoogleのподназваниемkubernetes、нополезноивнекоторыхдругихситуациях。
- weave :Weaveсоздаетвиртуальнуюсеть、объединяющуюкаждыйхоствединоецелое。 Этоупрощаетмаршрутизацию、посколькуприэтомкаждыйконтейнервыглядиттак、какбудтоот
Для“продвинутого”управлениясетьюиспользуютсяследующиепроекты:
- 【X0X】配管