Docker izplatīts lietojums ir tīkla pakalpojumi, un Docker ir savs tīkla modelis, kas ļauj konteineriem runāt gan savā starpā, gan ar ārpasauli.
Sākotnēji Docker konteinerus vajadzēja savienot tīklā ar rokām vai manuāli pakļaut ārējai pasaulei. Pašreizējais tīkla modelis ļauj konteineriem automātiski atrast viens otru tajā pašā resursdatorā (vai dažādos resursdatoros) un kontrolētākā veidā tikt pakļautiem visai pasaulei.
Ir četri galvenie veidi, kā Docker nodrošina izstrādātājus ar tīklu izveidi konteineriem. Pirmie divi, tilts un pārklāt tīklos, aptver visbiežāk izmantotos ražošanas gadījumus. Pārējie divi, saimnieks un Makvlans tīkliem, lai aptvertu retāk sastopamus gadījumus.
Docker tīklošana: tiltu tīkli
Tilta tīkli ļaujiet konteineriem, kas darbojas vienā un tajā pašā Docker resursdatorā, sazināties savā starpā. Jaunam Docker gadījumam ir noklusējuma tilta tīkls ar nosaukumu tilts
, un pēc noklusējuma visi jaunizveidotie konteineri tam pievienojas.
The tilts
tīklā ir daudz ērtu noklusējuma noklusējuma, taču tiem, iespējams, būs jāpielāgo ražošana. Piemēram, ieslēgti konteineri tilts
automātiski visas ostas tiek pakļautas viena otrai, bet neviena - ārpusei. Tas ir noderīgi gadījumos, kad jāpārbauda saziņa starp konteineriem, bet ne tiešsaistes pakalpojuma izvietošanai.
Lai iegūtu labākos rezultātus, izveidojiet pats savu tilta tīklu. Lietotāja definētiem tiltiem ir daudzas funkcijas tilts
tiltam nav:
- DNS izšķirtspēja darbojas automātiski starp konteineriem uz pielāgota tilta. Tādā veidā jums nav jāizmanto neapstrādātas IP adreses, lai sazinātos starp tām tāpat kā ar
tilts
tilts. Konteineri var atrast citus konteinerus, izmantojot DNS, izmantojot konteinera nosaukumu. - Konteinerus var pievienot un noņemt no pielāgota tilta, kamēr tie darbojas.
- Vides mainīgos var koplietot starp konteineriem uz pielāgota tilta.
Īsāk sakot, jūs varat sākt tvert ar konteineriem, izmantojot noklusējuma tiltu, bet jebkuram nopietnam ražošanas darbam vēlaties izveidot pielāgotu tiltu.
Docker tīklošana: Pārklājiet tīklus
Tilta tīkli ir paredzēti konteineriem tajā pašā resursdatorā. Pārklājums tīkli ir paredzēti konteineriem, kas darbojas dažādos resursdatoros, piemēram, Docker barā. Tas ļauj konteineriem starp saimniekiem atrast viens otru un sazināties, jums nav jāuztraucas par to, kā to iestatīt katram atsevišķam konteineram, kas piedalās.
Docker spieķu režīma orķestrators automātiski izveido pārklājuma tīklu, iekļūšana
. Pēc noklusējuma visi bara pakalpojumi piesaista sevi iekļūšana
. Bet tāpat kā pēc noklusējuma tilts
, šī nav labākā izvēle ražošanas sistēmai, jo noklusējumi var nebūt piemēroti. Vislabāk ir izveidot pielāgotu pārklājuma tīklu ar baru vai bez tā un pēc vajadzības pievienot tam mezglus.
Ja vēlaties izmantot pārklājuma tīklu ar konteineriem, kas nedarbojas barā, tas ir vēl viens piemērs, lai izveidotu pielāgotu pārklājuma tīklu. Ņemiet vērā, ka katram Docker resursdatoram pārklājuma tīklā jābūt pieejamiem atbilstošajiem portiem, lai tie būtu redzami vienaudžiem, un bez spietošanas režīma katram mezglam ir nepieciešama piekļuve kāda veida atslēgas vērtību krātuvei.
Ņemiet vērā arī to, ka pārklājuma tīkli pēc noklusējuma atļauj tikai 256 atšķirīgas IP adreses. Jūs varat paaugstināt šo ierobežojumu, taču Docker iesaka tā vietā izmantot vairākus pārklājumus.
Docker tīklošana: resursdatora tīklošana
The saimnieks
tīkla draiveris ļauj konteineriem to tīkla kaudzes darboties blakus, kopā ar kaudzīti uz resursdatora. Tīmekļa serveris 80. portā a saimnieks
-tīklains konteiners ir pieejams pašā resursdatorā no 80. porta.
Lielākais resursdatora tīkla ieguvums ir ātrums. Ja jums jāpiešķir piekļuve konteinera ostai un vēlaties to padarīt pēc iespējas tuvāku pamatā esošajai OS, tas ir veids, kā iet. Bet tas nāk par elastības cenu: ja kartē 80 portu konteinerā, neviens cits konteiners to nevar izmantot šajā resursdatorā.
Docker tīklošana: Macvlan tīklošana
Macvlan tīkls ir paredzēts lietojumprogrammām, kas darbojas tieši ar pamatā esošo fizisko tīklu, piemēram, tīkla trafika uzraudzības lietojumprogrammām. The macvlan
draiveris ne tikai piešķir konteineram IP adresi, bet arī fizisku MAC adresi.
Ņemiet vērā, ka šāda veida Docker tīklošanā ir daudz tādu pašu iebildumu, kādi būtu, ja, piemēram, izveidotu virtuālās MAC adreses, izmantojot VM. Īsāk sakot, Macvlan vajadzētu rezervēt tikai tām lietojumprogrammām, kuras nedarbojas, ja vien tās nepaļaujas uz fiziskā tīkla adresi.
Docker tīklošana: tīklu izveide un pārvaldība
Visa tīkla pārvaldība Docker tiek veikta, izmantojot dokstacijas tīkls
komandu. Daudzi no tā apakškomandiem ir līdzīgi citām Docker komandām; piemēram, dokstacijas tīkls ls
parāda visus konfigurētos tīklus pašreizējā Docker instancē:
$ docker network ls TĪKLA ID VADĪTĀJS DARBĪBAS JOMA 2e0adaa0ce4a tilta tilts vietējais 0de3da43b973 resursdators vietējais 724a28c6d86d neviens nav vietējs lokāls
Lai izveidotu tīklu, izmantojiet izveidot
apakškomandu kopā ar - vadītājs
karodziņš, lai norādītu, kuru vadītāju izmantot (tilts, pārklājums, macvlan
):
$ docker tīkla izveide - draivera tilts mans tilts
Saimniekiem, kuru tīklā ir konteineri, nav nepieciešams izveidot tīklu. Tā vietā palaidiet konteineru ar --tīkla resursdators
karogu. Visi konteinera procesi klausās to iepriekš konfigurētajos portos, tāpēc vispirms pārliecinieties, vai tie ir iestatīti.
Tīkla izveides iespējas ietver arī tā apakštīkla, IP adrešu diapazona un tīkla vārtejas norādīšanu, tāpat kā tīkla izveidei, izmantojot citus līdzekļus.
Konteineri pēc noklusējuma darbojas tilts
tīklā. Lai izmantotu noteiktu tīklu, vienkārši izmantojiet --tīkls
karodziņš, palaižot konteineru, un norādiet tīkla nosaukumu.
Darbojošo konteineru var arī savienot pārī ar tīklu:
$ docker tīkla savienojums tilts my_container
Tas piešķirmy_container
uz tilts
saglabājot visus jau esošos tīkla savienojumus.
Kad konteiners tiek nogāzts uz leju, visi ar to saistītie tīkli paliek neskarti. Ja vēlaties tīklus noņemt manuāli, to varat izdarīt ar sakaru tīkla rm
komandu vai izmantojiet docker tīkla apgriešana
lai noņemtu visus tīklus, kurus resursdatorā vairs neizmanto.
Docker un Kubernetes tīklošana
Ja jūs domājat par Kubernetes kā orķestrēšanas risinājumu, bet jums jau ir pietiekami daudz darba, kas iegremdēts Docker tīkla iestatījumos, jums nebūs saviļņots, dzirdot, ka nav divpusējas sarunas starp to, kā Docker un Kubernetes apstrādā tīklu.
Sīkāka informācija ir aprakstīta Kubernetes dokumentācijā, taču īsā versija ir tāda, ka tiem ir principiāli atšķirīgi modeļi, kā tīkla resursi tiek piešķirti un pārvaldīti. Tātad jūsu lietojumprogrammai būs jāizstrādā Kubernetes tīkla iestatījumi.
Viena no iespējamām pusceļa pieejām ir Kubernetes konteineru tīkla saskarnes (CNI) spraudņa izmantošana, kas darbojas ar paša Docker tīkla vadības ierīcēm. Bet tas labākajā gadījumā ir pagaidu risinājums; kādā brīdī jums būs jāveido Kubernetes projekti, izmantojot savas tīkla metaforas no iekšpuses un ārpuses.