Programavimas

„Docker“ mokymo programa: pradėkite naudoti „Docker“ tinklą

Dažnas „Docker“ naudojimo atvejis yra tinklo paslaugos, o „Docker“ turi savo tinklo modelį, leidžiantį konteineriams kalbėti tiek tarpusavyje, tiek su išoriniu pasauliu.

Iš pradžių „Docker“ konteineriai turėjo būti sujungiami rankomis arba rankiniu būdu atidengti išoriniam pasauliui. Dabartinis tinklo modelis leidžia konteineriams automatiškai surasti vienas kitą tame pačiame pagrindiniame kompiuteryje (arba skirtinguose pagrindiniuose kompiuteriuose) ir valdomam pasauliui.

Yra keturi pagrindiniai būdai, kuriais „Docker“ aprūpina kūrėjus tinklų kūrimu konteineriams. Pirmieji du, tiltas ir perdanga tinkluose, apima dažniausiai naudojamus gamybos atvejus. Kiti du, vedėjas ir Macvlanas tinklai, skirti apimti rečiau pasitaikančius atvejus.

Docker tinklai: tiltiniai tinklai

Tiltiniai tinklai leiskite konteineriams, važiuojantiems tuo pačiu „Docker“ kompiuteriu, bendrauti. Naujas „Docker“ egzempliorius turi numatytąjį tiltinį tinklą, pavadintą tiltasir pagal nutylėjimą prie jo prisijungia visi naujai pradėti konteineriai.

tiltas tinkle yra daugybė patogių numatytųjų numatytų parinkčių, tačiau jas gali reikėti tiksliai sureguliuoti. Pavyzdžiui, konteineriai tiltas automatiškai visi uostai bus veikiami vienas kito, bet nė vieno - su išoriniu pasauliu. Tai naudinga, kai reikia išbandyti ryšį tarp konteinerių, bet ne norint įdiegti tiesioginę paslaugą.

Norėdami pasiekti geriausių rezultatų, sukurkite savo tiltinį tinklą. Vartotojo apibrėžti tiltai turi daug funkcijų tiltas tiltas neturi:

  • DNS skiriamoji geba veikia automatiškai tarp konteinerių pasirinktiniame tiltelyje. Tokiu būdu jums nereikia naudoti neapdorotų IP adresų, norint bendrauti tarp jų, kaip jūs darote tiltas tiltas. Konteineriai gali rasti kitus konteinerius per DNS naudodami konteinerio pavadinimą.
  • Konteinerius galima pridėti ir pašalinti nuo pasirinkto tilto, kol jie veikia.
  • Aplinkos kintamuosius galima bendrinti tarp talpyklų ant pasirinktinio tilto.

Trumpai tariant, galite pradėti naudoti konteinerius naudodami numatytąjį tiltą, tačiau atlikdami bet kokį rimtą gamybos darbą, norėtumėte sukurti pasirinktinį tiltą.

„Docker“ tinklas: perdangos tinklai

Tiltiniai tinklai skirti tam pačiam pagrindiniame kompiuteryje esantiems konteineriams. Perdanga tinklai skirti konteineriams, veikiantiems skirtinguose pagrindiniuose kompiuteriuose, pavyzdžiui, „Docker“ spiečiuje. Tai leidžia visuose pagrindiniuose kompiuteriuose esančiuose konteineriuose surasti vienas kitą ir bendrauti, jums nereikia nerimauti, kaip tai nustatyti kiekvienam atskiram dalyvaujančiam sudėtiniam rodiniui.

„Docker“ būrio režimo orkestratorius automatiškai sukuria perdangos tinklą, patekimas. Pagal numatytuosius nustatymus prie spiečiaus prisijungia visos paslaugos patekimas. Bet kaip ir pagal nutylėjimą tiltas, tai nėra geriausias pasirinkimas gamybos sistemai, nes numatytieji parametrai gali būti netinkami. Geriausia yra sukurti pasirinktinį perdangos tinklą su būriu ar be jo ir prireikus prie jo pridėti mazgus.

Jei norite naudoti perdangos tinklą su konteineriais, neveikiančiais spiečiuje, tai dar vienas tinkinto perdangos tinklo kūrimo atvejis. Atkreipkite dėmesį, kad kiekviename perdangos tinklo „Docker“ pagrindiniame kompiuteryje turi būti atviri tinkami prievadai, kuriuos gali matyti savo bendraamžiai, ir be spiečiaus režimo kiekvienam mazgui reikia prieigos prie tam tikros rūšies rakto vertės saugyklos.

Taip pat atkreipkite dėmesį, kad perdangos tinklai pagal numatytuosius nustatymus leidžia tik 256 skirtingus IP adresus. Galite padidinti šią ribą, tačiau „Docker“ rekomenduoja vietoj to naudoti kelis perdangas.

„Docker“ tinklas: pagrindinio tinklo tinklas

vedėjas tinklo tvarkyklė leidžia konteineriams jų tinklo kaminus paleisti greta su kaupu pagrindiniame kompiuteryje. Žiniatinklio serveris 80 uoste a vedėjas-netinkamą konteinerį galima įsigyti iš 80 prievado pačiame priegloboje.

Didžiausias priimančiosios tinklo pranašumas yra greitis. Jei jums reikia suteikti prieigą prie konteinerio prievado ir norite, kad jis būtų kuo arčiau pagrindinės OS, tai yra kelias. Tačiau tai kainuoja lankstumas: jei 80 prievadą pridedate prie konteinerio, joks kitas konteineris negali jo naudoti tame pagrindiniame kompiuteryje.

„Docker“ tinklas: „Macvlan“ tinklas

„Macvlan“ tinklas skirtas programoms, kurios veikia tiesiogiai su pagrindiniu fiziniu tinklu, pavyzdžiui, tinklo srauto stebėjimo programoms. macvlan tvarkyklė ne tik priskiria IP adresą konteineriui, bet ir fizinį MAC adresą.

Atkreipkite dėmesį, kad šio tipo „Docker“ tinkle yra daug tų pačių įspėjimų, kuriuos turėtumėte, jei, tarkime, kuriate virtualius MAC adresus naudodami VM. Trumpai tariant, „Macvlan“ turėtų būti rezervuotas tik toms programoms, kurios neveikia, nebent jos remiasi fiziniu tinklo adresu.

„Docker“ tinklų kūrimas: tinklų kūrimas ir valdymas

Visas tinklo valdymas „Docker“ programoje atliekamas naudojant dokininkų tinklas komandą. Daugelis jo pakomandų yra panašios į kitas „Docker“ komandas; pavyzdžiui, dokininkų tinklas ls rodo visus sukonfigūruotus tinklus dabartiniame „Docker“ egzemplioriuje:

$ docker tinklas ls TINKLO ID PAVADINIMAS VAIRUOTOJO APIMTIS 2e0adaa0ce4a tilto tiltas vietinis 0de3da43b973 pagrindinio kompiuterio vietinis 724a28c6d86d nėra nieko vietinis

Norėdami sukurti tinklą, naudokite sukurti subkomanda kartu su - vairuotojas pažymėti, kurį vairuotoją naudoti (tiltas, perdanga, macvlan):

$ docker tinklas sukuria - vairuotojo tiltas mano tiltas 

Priimančiojo tinklo konteineriai nereikalauja jiems sukurti tinklo. Vietoj to paleiskite konteinerį su tinklo tinklas vėliava. Visi konteinerio procesai klausosi jų iš anksto sukonfigūruotų prievadų, todėl įsitikinkite, kad jie nustatyti pirmiausia.

Tinklo sukūrimo parinktys taip pat apima jo potinklio, IP adresų diapazono ir tinklo šliuzo nurodymą, panašiai kaip būtų kuriant tinklą naudojant kitas priemones.

Konteineriai pagal numatytuosius nustatymus veikia tiltas tinklo. Norėdami naudoti tam tikrą tinklą, tiesiog naudokite - tinklas vėliava paleidžiant konteinerį ir nurodykite tinklo pavadinimą.

Taip pat galite susieti veikiantį sudėtinį rodinį su tinklu:

$ docker tinklas jungia tiltą my_container

Tai prisirišamy_container į tiltas išsaugant visus esamus tinklo ryšius.

Kai konteineris atsukamas žemyn, visi su juo susiję tinklai lieka nepažeisti. Jei norite pašalinti tinklus rankiniu būdu, galite tai padaryti naudodami lizdo tinklo rm komandą arba naudoti dokininko tinklo genėti pašalinti visus tinklus, kurie nebenaudojami pagrindiniame kompiuteryje.

„Docker“ tinklas ir „Kubernetes“ tinklai

Jei žiūrite į „Kubernetes“ kaip į orkestravimo sprendimą, bet jau turite pakankamai daug darbo, įdėto į „Docker“ tinklo sąranką, nenusiminsite išgirdę, kad nėra tiesioginio susirašinėjimo tarp to, kaip „Docker“ ir „Kubernetes“ tvarko tinklą.

Išsami informacija aprašyta „Kubernetes“ dokumentacijoje, tačiau trumpa versija yra ta, kad jose yra iš esmės skirtingi tinklo išteklių paskirstymo ir valdymo modeliai. Taigi, turėsite sukurti savo programai skirtą „Kubernetes“ tinklo sąranką.

Vienas iš galimų pusiaukelės būdų yra naudoti „Kubernetes Container Network Interface“ (CNI) papildinį, kuris veikia su paties „Docker“ tinklo valdikliais. Bet geriausiu atveju tai yra laikinas sprendimas; tam tikru momentu turėsite sukurti savo „Kubernetes“ projektus naudodamiesi savo tinklo metaforomis iš vidaus.