Locked History Actions

Skirtumas „Docker Networking“

Pakeitimai tarp versijų 8 ir 11 (patvirtinamos 3 versijos)
Versija 8 nuo 2020-12-08 09:57:54
Dydis: 9557
Redaktorius: Deividas
Komentaras:
Versija 11 nuo 2020-12-08 11:39:43
Dydis: 9726
Redaktorius: Deividas
Komentaras:
Pašalinimai yra pažymėti taip. Pridėjimai yra pažymėti taip.
Eilutė 17: Eilutė 17:
'''1 pav. '''„Virtual machine“ koncepcija {{attachment:1.png}} '''1 pav. '''„Virtual machine“ koncepcija
Eilutė 29: Eilutė 29:
'''2 pav. '''„Container“ koncepcija {{attachment:2.png}}'''2 pav. '''„Container“ koncepcija
Eilutė 39: Eilutė 39:
'''3 pav. '''„Docker“ platformos diagrama {{attachment:3.png}}'''3 pav. '''„Docker“ platformos diagrama
Eilutė 43: Eilutė 43:
'''4 pav. '''„Docker“ veikimas§ {{attachment:4.png}}'''4 pav. '''„Docker“ veikimas§
Eilutė 57: Eilutė 57:
'''5 pav. '''„Docker networking“ {{attachment:5.png}}'''5 pav. '''„Docker networking“
Eilutė 61: Eilutė 61:
'''6 pav. '''„Bridge network“ schema {{attachment:6.png}}'''6 pav. '''„Bridge network“ schema
Eilutė 65: Eilutė 65:
'''7 pav. '''„Host network“ schema· {{attachment:7.png}}'''7 pav. '''„Host network“ schema·
Eilutė 69: Eilutė 69:
'''8 pav. '''„None Network“ schema· {{attachment:8.png}}'''8 pav. '''„None Network“ schema·
Eilutė 73: Eilutė 73:
'''9 pav. '''„Overlay network“ schema {{attachment:9.png}}'''9 pav. '''„Overlay network“ schema
Eilutė 75: Eilutė 75:
Išvados = Išvados =
Eilutė 79: Eilutė 79:
Literatūra = Literatūra =
Eilutė 81: Eilutė 81:
1. https://www.docker.com/why-docker 2. https://www.upgrad.com/blog/introduction-to-docker-networking/ 3. https://www.simplilearn.com/tutorials/docker-tutorial/docker-networking 4. https://opensource.com/resources/what-docker 5. https://blog.netapp.com/blogs/containers-vs-vms/ 6. https://docs.docker.com/network/''' ''' 1. https://www.docker.com/why-docker
2. https://www.upgrad.com/blog/introduction-to-docker-networking/
3. https://www.simplilearn.com/tutorials/docker-tutorial/docker-networking
4. https://opensource.com/resources/what-docker
5. https://blog.netapp.com/blogs/containers-vs-vms/
6. https://docs.docker.com/network/''' '''

Įvadas

„Konteinerių talpinimas“ (angl. „Containerization“) tapo pagrindinė programinės įrangos kūrimo tendencija kaip alternatyva virtualizacijai(angl. „Virtualization“) . Tai apima programinės įrangos kodo ir visų jo priklausomybių konteineriavimą, kad jis galėtų veikti vienodai ir nuosekliai bet kurioje sistemoje.

Konteinerių(angl. „Container“) naudojimas leidžia programuotojams greičiau kurti ir diegti programas. Taikant tradicinius metodus, kodas yra kuriamas konkrečioje aplinkoje, kuri perkėlus į naują vietą dažnai atsiranda klaidų. Pavyzdžiui, kai programuotojas perkelia kodą iš kompiuterio į virtualią mašiną (angl. „virtual machine“) arba iš „Linux“ į „Windows“ operacinę sistemą. Konteinerių talpinimas pašalina šią problemą, sujungdamas programos kodą su susijusiais konfigūracijos failais, bibliotekomis ir priklausomybėmis, reikalingomis jam paleisti. Šis programinės įrangos paketas arba „konteineris“ yra nepriklausomas nuo pagrindinės operacinės sistemos, todėl gali veikti su bet kokią platformą ar debesimi.

Konteinerių ir procesų izoliavimo koncepcija yra dešimtmečių senumo, tačiau 2013 m. atvirojo kodo „Docker Engine“ pasirodymas - pramoninių konteinerių standartas su paprastais programiniais įrankiais ir universaliu pakavimo metodu - paspartino šios technologijos pritaikymą. Tyrimų firma „Gartner“ prognozuoja, kad daugiau nei 50% įmonių iki 2022 m. naudos konteinerių technologijas. 2017 m. pabaigos IBM atliktos apklausos rezultatai rodo, kad adaptacija vyksta dar greičiau, atskleidžiant, kad 59% naudotojų pagerino programų kokybę ir sumažino defektus rezultate.

„Virtual machine“ koncepcija

Virtuali mašina (VM) yra kompiuterinės sistemos emuliacija. Paprasčiau tariant, tai leidžia paleisti, atrodo, daug atskirų kompiuterių aparatinėje įrangoje, kai iš tikrųjų yra vienas kompiuteris.

Operacinės sistemos (OS) ir jų programos dalijasi aparatinės įrangos ištekliais iš vieno pagrindinio serverio arba iš pagrindinio serverio grupės. Kiekvienai VM reikia savo pagrindinės OS, o aparatinė įranga yra virtualizuota. „Hypervisor“ sudaro programinė įranga, programinė-aparatinė arba aparatinė įranga, kuri reikalinga VM veikimui. „Hypervisor“ yra tarp aparatūros ir virtualios mašinos ir yra būtinas serveriui virtualizuoti.

Nuo to laiko, kai atsirado prieinamos virtualizacijos technologijos ir debesų kompiuterijos paslaugos, dideli ir maži IT skyriai VM naudojo kaip būdą sumažinti išlaidas ir padidinti efektyvumą.

1.png 1 pav. „Virtual machine“ koncepcija

Tačiau VM gali užimti daug sistemos išteklių. Kiekviena virtualioji mašina paleidžia ne tik visą operacinės sistemos kopiją, bet ir visos aparatinės įrangos, kurią reikia paleisti operacinei sistemai, virtualią kopiją. Tai greitai prideda daug RAM ir CPU ciklų. Tai vis dar ekonomiška, palyginti su atskirų kompiuterių naudojimu, tačiau kai kurioms programoms tai gali būti per daug, todėl buvo sukurti konteineriai.

Kas yra „Container“?

Naudojant konteinerius, užuot virtualizavus pagrindinį kompiuterį kaip VM, virtualizuojama tik OS.

Konteineriai yra „virš“ kompiuterio aparatinės ir OS dalies. Kiekvienas konteineris dalijasi pagrindinio kompiuterio „host OS“ branduoliu(angl. „Kernel)“ bei bibliotekomis. Dalijantis OS ištekliais, sumažėja poreikis atkurti operacinės sistemas, o tai reiškia, kad serveris gali vykdyti keletą darbo krūvių su vienu operacinės sistemos diegimu. Taigi konteineriai yra išskirtinai lengvi – užima megabaitais ir užtrunka vos kelias sekundes paleisti. Palyginus su konteineriais, VM paleidimo laikas yra kelios minutės ir ir lyginant dydžiais, užima daug daugiau.

Priešingai nei VM, viskas, ko reikia konteineriui, tai operacinės sistemos, palaikančioms programas, bibliotekas bei sistemos išteklius, kad būtų galima paleisti konkrečią programą. Praktiškai tai reiškia, kad galite naudoti du tris kartus daugiau programų viename serveryje su konteineriais, nei galite su VM. Be to, naudodami konteinerius galite sukurti nešiojamą, nuoseklią darbo aplinką, skirtą kūrimui, testavimui ir diegimui.

2.png2 pav. „Container“ koncepcija

„Docker“ platforma

„Docker“ yra platforma, supakuojanti programą ir visas jos priklausomybes konteineriu pavidalu. Šis talpinimo aspektas užtikrina, kad programa veikia bet kurioje aplinkoje.

Kaip matome diagramoje, kiekviena programa veikia atskiruose konteineriuose ir turi savo priklausomybių ir bibliotekų rinkinį. Tai užtikrina, kad kiekviena programa yra nepriklausoma nuo kitų programų, suteikdama programuotojams garantiją, kad jie gali kurti programas, kurios netrukdys viena kitai.

Taigi programuotojas gali pastatyti konteinerį, kuriame yra įdiegtos skirtingos programos, ir ją suteikti QA komandai. Tada kokybės užtikrinimo komandai tereikės paleisti sudėtinį rodinį, kad būtų pakartota kūrėjo aplinka.

3.png3 pav. „Docker“ platformos diagrama

„Dockerfile“, „Docker Images“ ir „Docker Containers“ yra trys svarbūs terminai naudojant „Docker“.

4.png4 pav. „Docker“ veikimas§

„Dockerfile“ yra tekstinis dokumentas, kuriame yra visos komandos, kurias vartotojas gali iškviesti komandinėje eilutėje, norėdamas surinkti „Docker Image“. „Docker Image“ gali kurti vaizdus automatiškai, skaitydamas „Docker file“ instrukcijas.

„Docker Image“ galima palyginti su šablonu, kuris naudojamas kuriant „Docker Containers“. Taigi, šie tik skaitomi šablonai yra sudėtinio konteinerio elementai. „Docker Image“ vaizdai saugomi „Docker“ registre. Tai gali būti vartotojo kietajame diske arba išorinėje talpykloje, pvz., „Docker Hub“, leidžianti keliems vartotojams bendradarbiauti kuriant programą.

„Docker Container“ testinę aplinką galime vadinti „Docker Image“ todėl, nes talpina visą paketą, reikalingą programai paleisti. Taigi, „Docker Container“ iš esmės yra parengtos programos, sukurtos iš „Docker Images“, o tai yra pagrindinis „Docker“ naudingumas.

„Docker networking“

„Docker networking“ naudojamas užmegzti ryšį tarp „Docker“ konteinerių ir išorinio tinklo per pagrindinį kompiuterį arba galime sakyti, kad tai yra ryšio kanalas, per kurį visi izoliuoti konteineriai bendrauja tarpusavyje įvairiose situacijose, kad atliktų reikiamus veiksmus, toliau išskirsime kelis „Docker“ tinklo koncepcijas.

Įdiegus „Docker“, jis automatiškai sukuria tris tinklus - „Bridge“, „Host“ ir „None“. Iš kurių „Bridge“ yra numatytasis tinklas, prie kurio konteineris pridedamas jį paleidus.

5.png5 pav. „Docker networking“

Numatytasis „Bridge network“ arba dar kitaip vadinamas „docker0“ tinklas sukuriamas automatiškai ir naujai sukurti konteineriai prie jo prisijungiami taip pat. „Bridge“ tinklas priskiria jame esantiems konteinerius IP, kurių diapazonas yra 172.19.0.xx . Norėdami pasiekti šiuos konteinerius iš išorės, turite sujunti šių konteinerių prievadus su pagrindinio kompiuterio prievadais. Taip pat galima sukurti savo modifikuota „Bridge network“. Tokie tinklai dažniausiai būna pranašesni už numatytąjį tinklą. Sujungti konteineriai šiuo metodu, kaip matome paveikslėlyje, gali komunikuoti tarpusavyje per „mybridge“.

6.png6 pav. „Bridge network“ schema

„Host network“ – Atskiri konteineriai, pašalinama tinklo izoliaciją tarp konteinerio ir „Docker“ pagrindinio kompiuterio, tiesiogiai naudoja pagrindinio kompiuterio tinklą, konteineryje prieinamos visos pagrindinio kompiuterio sąsajos. Konteinerio „Docker host“ pavadinimas sutaps su pagrindinio kompiuterio pavadinimu

7.png7 pav. „Host network“ schema·

„None network“ konteineriai nėra prijungti prie tinklo ir neturi jokios prieigos prie išorinio tinklo ar kitų konteinerių. Šis tinklas naudojamas, kai norima visiškai išjungti tinklą. Tačiau turi atgalini adresą ir gali būti naudojamas paketiniams darbams vykdyti.

8.png8 pav. „None Network“ schema·

„Overlay network“ – sukuria vidinį privatų tinklą, kuris apima visus konteinerius dalyvaujančius atskiruose „Docker host“, taip palengvina ryšį tarp aplikacijų viename ir atskirose konteineriuose.

9.png9 pav. „Overlay network“ schema

Išvados

Virtualiosios mašinos ir konteineriai skiriasi keliais aspektais, tačiau pagrindinis skirtumas yra tas, kad konteineriai suteikia galimybę vienu kompiuteriu realizuoti daugiau aplikacijų mažiau apkraunant sistemą, lyginant su VM. Šiai technologijai realizuoti ir vystytis padėjo dar 2013 m. pasirodžiusi platforma „Docker“. Ir todėl vis daugiau įmonių eina link konteinerių, „Dock networking“ yra svarbus konteinerių izoliavimui nuo aplinkos. Tai leidžia kurti saugiai veikiančias aplikacijas ir padeda geriau bendrauti tarp konteinerių.

Literatūra

1. https://www.docker.com/why-docker 2. https://www.upgrad.com/blog/introduction-to-docker-networking/ 3. https://www.simplilearn.com/tutorials/docker-tutorial/docker-networking 4. https://opensource.com/resources/what-docker 5. https://blog.netapp.com/blogs/containers-vs-vms/ 6. https://docs.docker.com/network/