Programiranje

Vadnica za Docker: Začnite z omrežjem Docker

Pogosti primeri uporabe Dockerja so omrežne storitve, Docker pa ima lasten mrežni model, s katerim lahko vsebniki govorijo med seboj in z zunanjim svetom.

Prvotno so morali biti zabojniki Docker ročno povezani v mrežo ali ročno izpostavljeni zunanjemu svetu. Trenutni mrežni model omogoča vsebnikom, da se samodejno najdejo na istem gostitelju (ali med različnimi gostitelji) in so bolj nadzorovano izpostavljeni svetu.

Obstajajo štirje osnovni načini, kako Docker razvijalce oskrbi z omrežjem za zabojnike. Prva dva, mostu in prekrivanje omrežja, pokrivajo najpogostejše primere uporabe v proizvodnji. Druga dva, gostitelj in Macvlan omrežja obstajajo za pokrivanje manj pogostih primerov.

Dockerjevo mreženje: mostna omrežja

Premostitvena omrežja naj vsebniki, ki se izvajajo na istem gostitelju Docker, komunicirajo med seboj. Nov primerek Dockerja ima privzeto mostno omrežje z imenom mostuin privzeto se nanjo povežejo vsi na novo zagnani vsebniki.

The mostu omrežje je opremljeno s številnimi priročnimi privzetimi privzetimi nastavitvami, vendar jih bo morda treba natančno nastaviti v proizvodnji. Na primer zabojniki na mostu samodejno izpostavijo vsa vrata druga drugemu, nobena pa zunanjemu svetu. To je koristno, kadar morate preizkusiti komunikacijo med vsebniki, ne pa tudi za uvedbo storitve v živo.

Za najboljše rezultate ustvarite lastno omrežje za premostitev. Uporabniško določeni mostovi imajo veliko funkcij mostu most ne:

  • Ločljivost DNS deluje samodejno med vsebniki na mostu po meri. Tako vam za komunikacijo med njimi ni treba uporabljati surovih naslovov IP, kot na spletnem mestu mostu most. Vsebniki lahko poiščejo druge vsebnike prek DNS z uporabo imena vsebnika.
  • Med izvajanjem je mogoče vsebnike dodati in odstraniti z mostu po meri.
  • Spremenljivke okolja lahko delite med vsebniki na mostu po meri.

Skratka, lahko začnete izdelovati kontejnerje z uporabo privzetega mostu, toda za vsa resna produkcijska dela boste želeli ustvariti most po meri.

Dockerjevo omrežje: prekrivna omrežja

Premostitvena omrežja so namenjena zabojnikom na istem gostitelju. Prekrivanje omrežja so namenjena zabojnikom, ki se izvajajo na različnih gostiteljih, na primer v Dockerjevem roju. Tako lahko vsebniki med gostitelji najdejo drug drugega in komunicirajo, ne da bi vam bilo treba skrbeti, kako to nastaviti za vsak posamezen sodelujoči vsebnik.

Dockerjev orkestrator načina rojenja samodejno ustvari prekrivno omrežje, vdor. Privzeto se nanje priklopijo vse storitve v roju vdor. Toda tako kot privzeto mostu, to ni najboljša izbira za proizvodni sistem, ker privzete vrednosti morda niso ustrezne. Najbolje je, da ustvarite mrežo s prekrivanjem po meri z rojem ali brez in mu po potrebi pritrdite vozlišča.

Če želite uporabiti prekrivno omrežje s kontejnerji, ki se ne izvajajo v roju, je to še en primer uporabe za ustvarjanje prekrivnega omrežja po meri. Upoštevajte, da mora imeti vsak gostitelj Dockerja v prekrivnem omrežju ustrezna vrata, odprta za njihove vrstnike, in brez načina rojenja vsako vozlišče potrebuje dostop do neke vrste shrambe ključ-vrednost.

Upoštevajte tudi, da prekrivna omrežja privzeto omogočajo samo 256 različnih naslovov IP. To omejitev lahko zvišate, vendar Docker priporoča, da namesto tega uporabite več prekrivnih elementov.

Omrežje Docker: omrežje gostitelja

The gostitelj mrežni gonilnik omogoča, da se njihovi skladi omrežja skladajo skupaj s skladom na gostitelju. Spletni strežnik na vratih 80 v gostitelj-networked vsebnik je na voljo od vrat 80 na samem gostitelju.

Največja blaginja gostiteljskih mrež je hitrost. Če morate omogočiti dostop do vrat posode in ga želite približati osnovnemu OS, je to prava pot. Vendar gre za ceno prilagodljivosti: če vrata 80 preslikate v vsebnik, ga na tem gostitelju ne more uporabiti noben drug vsebnik.

Povezovanje Docker: mreženje Macvlan

Omrežje Macvlan je namenjeno aplikacijam, ki delujejo neposredno z osnovnim fizičnim omrežjem, na primer aplikacijami za nadzor omrežnega prometa. The macvlan gonilnik vsebniku ne dodeli samo naslova IP, temveč tudi fizični naslov MAC.

Upoštevajte, da ima ta vrsta omrežja Docker veliko istih opozoril, ki bi jih imeli, če bi recimo ustvarjali navidezne naslove MAC z uporabo VM-jev. Skratka, Macvlan bi moral biti rezerviran samo za aplikacije, ki ne delujejo, razen če se zanašajo na fizični omrežni naslov.

Dockerjevo mreženje: Ustvarjanje in upravljanje omrežij

Vse upravljanje omrežja v Dockerju poteka z uporabo omrežje docker ukaz. Številni podkomandi so podobni drugim ukazom Docker; na primer, docker omrežje ls prikaže vsa konfigurirana omrežja na trenutnem primerku Dockerja:

$ docker network ls OMREŽJE ID IME DRIVER PODROČJE UPORABE 2e0adaa0ce4a most most lokalni 0de3da43b973 gostitelj gostitelj lokalni 724a28c6d86d noben null lokalni

Če želite ustvariti omrežje, uporabite ustvariti podkomando skupaj z - voznik zastavica, ki označuje, katerega voznika uporabiti (most, prekrivanje, macvlan):

$ docker network create --driver bridge my-bridge 

Za vsebnike, povezane z gostitelji, ni treba ustvariti omrežja zanje. Namesto tega zaženite posodo z - gostitelj omrežja zastavo. Vsi procesi v vsebniku poslušajo vnaprej nastavljena vrata, zato poskrbite, da bodo najprej nastavljena.

Možnosti za ustvarjanje omrežja vključujejo tudi določitev njegove podomrežja, obsega naslovov IP in omrežnega prehoda, podobno kot bi to veljalo za ustvarjanje omrežja z drugimi sredstvi.

Vsebniki se privzeto zaženejo na mostu omrežje. Če želite uporabiti določeno omrežje, preprosto uporabite --mreža zastavico pri zagonu vsebnika in določite ime omrežja.

Tekoči vsebnik lahko tudi povežete z omrežjem:

$ docker network connect bridge my_container

To pritrjujemy_container do mostu omrežje, hkrati pa ohrani vse obstoječe omrežne povezave, ki jih že ima.

Ko se vsebnik zavrti, vsa omrežja, povezana z njim, ostanejo nedotaknjena. Če želite omrežja odstraniti ročno, lahko to storite z docket network rm ukaz ali uporabite docker omrežje suhe slive da odstranite vsa omrežja, ki se na gostitelju ne uporabljajo več.

Dockerjevo mreženje in Kubernetesovo mreženje

Če Kubernetesa opazujete kot rešitev za orkestracijo, vendar ste že vložili precej dela v omrežno nastavitev Dockerja, ne boste navdušeni, če slišite, da medsebojna povezava med Dockerjem in Kubernetesom ne obstaja.

Podrobnosti so opisane v dokumentaciji Kubernetes, kratka različica pa je, da imajo bistveno drugačne modele za dodeljevanje in upravljanje omrežnih virov. Torej boste morali za svojo aplikacijo oblikovati omrežno nastavitev, specifično za Kubernetes.

Eden od možnih pristopov na pol poti je uporaba vtičnika Kubernetes Container Network Interface (CNI), ki deluje z lastnimi omrežnimi kontrolami Dockerja. Toda to je v najboljšem primeru začasna rešitev; na neki točki boste morali svoje projekte Kubernetes graditi z lastnimi metaforami mreženja od znotraj navzven.

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