Programmēšana

Docker apmācība: sāciet darbu ar Docker tīklu

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.

$config[zx-auto] not found$config[zx-overlay] not found