Сериятуториалов
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リンク)?
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[статье]мыобсудимкакпланировщики(スケジューラ)исредстваоркестровки(オーケストレーションツール)позволяютуправлятькластерамиконтейнеров。