Сериятуториалов

4-тоттуториалявляется4-ойчастьюиз5-тивсериистатей*ЭкосистемаDocker *。

Введение

ПрипроектированиираспределённыхсистемработающихсDocker-контейнерами、сетевоевзаимодийтатриестановитсетнекизнека Сервис-ориентированнаяархитектура、бесспорно、опираетсянавзаимодействиемеждукомпиноооооооооооо

Вданномруководствемырассмотримразличныестратегиисетевоговзаимодействияиинструменты、используемыедляформированияжелаемойконфигурациисетей、используемыхконтейнерами。 ВнекоторыхситуацияххорошоподходятвстроенныерешенияотDocker、втовремякаквдтутотототототото

DockerからDockerにアクセスする

СамDockerпредоставляетмногобазовогофункционаласетевоговзаимодействия、необходимогенокдлясвязет

Docker-процесса、онсоздаетновыйвиртуальногоинтерфейстипа“мост”сназванием + docker0 +。 тотинтерфейспозволяетDockerсоздатьвиртуальнуюподсетьдляиспользованияконтейнерами、которыеонота Мостбудетслужитьосновнойточкойвзаимодействиямеждусетьювнутриконтейнераисетьюхоста。

КогдаDockerзапускаетконтейнер、создаетсяновыйвиртуальныйинтерфейсиемуназначаеттяддесодиеедиеедиеениресодиено IP-адрессвязансвнутреннейсетьюконтейнера、предоставляяпутьдлясетиконтейнеракмосту `+ docker0 `иместе Dockerавтоматическиконфигурируетправилав ` iptables +`дляобеспеченияпереадресациииконфигуридядоитутидутидутидутидра

Какконтейнерыделаютсвоисервисыдоступнымидляпотребителей?

Другиеконтейнерынатомже865 Хост-системапростобудетнаправлятьзапросыкинтерфейсу `+ docker0 +`всоответствующееместо。

Контейнерымогутоткрыватьсвоипортыдляхоста、накоторыеонимогутприниматьтрафик、приходищининийинийининищинищинищиниминотидояпортыдляхоста Открытыепортымогутбытьотображены(マッピングされる)нахост-системулибопутемвыбораконкретногопорта、либоразрешениемドッカーвыбратьслучайныйнеиспользуемыйпортсбольшимадресом。 Docker Dockerпозаботитсяовсехправилахпереадресациииконфигурации `+ iptables +`длякорректнориматротаотрока

Вчемразницамеждуоткрытием(Exposing)ипубликацией(Publishing)порта?

созданииобразаконтейнераилиегозапускеуВасестьвыбормеждуоткрытиемипубликациейпортов。 Разницамеждуэтивариантамизначительная、номожетбытьзаметнанесразу。

Открытие(exposed)портапростоозначает、чтоDockerбудетиметьввиду、чтоданныйпортиспользуетсяконтейнтейнтейнтейноетьиметьввиду Этоиспользуетсявцеляхобнаруженияисвязи。 Например、проверка(検査)контейнерадастВаминформациюоботкрытыхпортах。 Когдаконтейнерысвязаны、переменныеокружениявновомконтейнеребудутустановленынеобходимымобразом、всоответствиесоткрытымипортамиисходногоконтейнера。

Поумолчанию、контейнерыбудутдоступныдляхост-системыилюбыхдругихконтейнеровотоототот Открытиепортапростодокументируетфактиспользованияпортаиделаетэтуинформацианоиноидоядлядоступнойдля

Вотличиеотэтого、публикация(publishing)портамаппируетегонаинтерфейсхоста、делаяегодоступнымдлядлядлядлядлядлядлядлядлядлядлядлядлядлягодоступнымдлягодоступнымго Портыконтейнерамогутбытьпривязаныкконкретномупортухоста、илиDockerможетавтоматоороооотооороооо

DockerпредоставляетмеханизмподназваниемDocker-связидляконфигурациивзаимодействиямеждууконтейнерами。 Еслиновыйконтейнерсвязанссуществующимпосредствомドッカー-связи、новыйконтейнерполучитинформациюоподключенииксуществующемучерезпеременныеокружения。

Этопозволяетлегкоустанавливатьсвязимеждудвумяконтейнерамипутемпередачиновомуконтейнеруявнойинформацииотом、какосуществлятьдоступкего「партнеру」。 Переменныеокруженияустанавливаютсявсоответствииспортами、открытымидругимконтейнером。 IP-адресидругаяинформациябудетнастроенасамимDocker。

Проекты、расширяющиесетевоевзаимодействиеDocker

Описаннаявышемодельсетевоговзаимодействияявляетсяхорошейбазовоймодельюдояооиоооог. Взаимодействиемеждуконтейнераминаодномитомжехостедостаточнопростореализуется、взаимодействиемеждухостамиможетпроисходитьпосредствомиспользованияпубличныхсетейприусловииправильнойнастройкипортовипередачиинформации、необходимойдлянастройкиэтоговзаимодействия、непосредственнохостам、участвующемвэтомвзаимодействии。

Темнеменее、многиеприложениятребуютособыхусловийсетевоговзаимодействияизсоображенийбезопасностиилидляихправильногофункционированиявцелом。 ДляэтихслучаевнативныхрешенийDockerоказываетсянедостаточно。 Поэтойпричине、существуетмножествопроектов、расширяющихфункциональностьэкосистемыDocker。

Созданиеоверлейныхсетейдляабстрагированияоттопологиисети

Сразунесколькопроектовсфокусировалисвоиусилиянасозданииоверлейныхсетей。 Оверлейнаясеть-этовиртуальнаясеть、построеннаяповерхсуществующейсети。

СозданиеоверлейнойсетипозволяетВамсоздатьболеепоедсказуемуюиедениообразнуюсетевуюмредумредумредумредумредумредумо тоупрощаетсетевоевзаимодействиемеждуконтейнерамивнезависIC Однавиртуальнаясетьможетохватыватьмножествохостовилиотдельныхфизическихподсетей。

Ещёоднимпримеромиспользованияоверлейныхсетейявляетсясозданиеполносвязнойвычислительный。 Вполносvers Реализацияполносвязнойвычислительнойсредыпозволяетконечномупользователюуправлятькластером、какединымцелым、вместотого、чтобыработатьсотдельнымихостами。 Организациясетевоговзаимодействияиграетприэтомключевуюроль。

Организацияпродвинутогосетевоговзаимодействия

Существуютпроекты、расширяющиесетевыевозможностиDockerипредоставляющиебольшуюгибкостьегоиспольза。

Dockerは、Dockerを使用して作成されています。 Этиограниченияособеннозаметныприорганизациивзаимодействиямеждухостами、атакжепринеобходимостинастроитьболеенестандартноесетевоевзаимодействиенаодномхосте。

Дополнительнаяфункциональностьпредоставляетсяприпомощи“встраиваемых”возможностей。 Этипроектынепредоставляютконфигурацию「изкоробки」、ноприэтомпозволяютВамвручнуюнастроекто、чтовамнеобходимодляреализацииболеесложныхсценариевсетевоговзаимодействия。 Примерамитакого「нестандартного」сетевоговзаимодействиямогутбытьнастройкаприватнойсетимеждуопределённымихостами、настройкамостов(ブリッジ)、виртуальныхлокальныхсетей、подсетей、шлюзов(ゲートウェイ)。

Существуетрядинструментовипроектов、которыеизначальнобылиразработанынедляприменениясドッカー、но、темнеменее、частоиспользуютсявドッカーдляобеспечениянеобходимойфункциональности。 Вчастности、существующиерешениядляпостроенияприватныхсетейитехнологиитуннелированиячастоиспользуютсядляобеспечениябезопасноговзаимодействиямеждухостамииконтейнерами。

Dockerを使用したDocker用のНаиболеепопулярна

Существуетнесколькопроектов、фокусирующихсянапостроенииоверлейныхсетейдляDocker-хостов。 Наиболеераспространеннымиявляются:

  • * flannel *:ИзначальноразработанкомандойCoreOSдляобеспеченияхоставозможностьюсоз​​даватьсвоюсобственнуеотеннуюотельный Это、впервуюочередь、необходимодляфункционированияинструментадляоркестровкиотнооноонооноооодоназвание

  • * weave *:Weaveсоздаетвиртуальнуюсеть、объединяющуюкаждыйхоствединоецелое。 Этоупрощаетмаршрутизацию、посколькуприэтpro

Для“продвинутого”управлениясетьюиспользуютсяследующиепроекты:

  • 配管:созданныйкаквременноерешениедотого、каквстроенныесетевыесредстваドッカーсталиболееилименее「продвинутыми」、этотпроектпредоставляетвозможность「продвинутой」настройкисетевойконфигурациидляконтейнеров。

ЕщёоднимпримеромсуществующегопрограммногообеспечениядлядобавленияфункциональностивDockerявлет:

  • * tinc *:Tinc-“то“лёгкое”средстводляпостроенияVPN、реализующеетуннелированиеишифрованиеишифрование。 Tincпредставляетсобойнадёжноерешениедляпостроениячастныхсетей“прозрачных”длялюбыхприложений。

Заключение

Предоставлениевнутреннихивнешнихсервисовспомощьюконтейнеризованныхкомпонентовпредставляетсобойвесьмамощнуюмодельпостроенияпрограммногообеспечения、новэтомслучаеособенноезначениеприобретаетсетевоевзаимодействие。 Несмотрянато、чтоドッカーпредоставляетнекоторуювстроеннуюфункциональностьдлянастройкивиртуальныхинтерфейсов、подсетей、 `+ iptablesの+`инастройкиNAT-таблиц、существуетмножествопроектов、созданныхдлярасширениясетевыхвозможностейドッカー。

Вследующейhttps://www.digitalocean.com/community/tutorials/the-docker-ecosystem-scheduling-and-orchestration[статье]мыобсудимкакпланировщики(スケジューラ)исредстваоркестровки(オーケストレーションツール)позволяютуправлятькластерамиконтейнеров。