Waa maxay Docker: dalxiis kooban oo ku saabsan taariikhda iyo waxyaabaha aasaasiga ah

Wuxuu ka bilaabmay Ogosto 10-keedii gudaha Slurm Koorsada fiidiyowga ee Docker, kaas oo aan si buuxda u falanqeyneyno - laga bilaabo abstractions aasaasiga ah ilaa xuduudaha shabakada.

Maqaalkan waxaan ka hadli doonaa taariikhda Docker iyo waxyaabaha ugu muhiimsan: Image, Cli, Dockerfile. Muxaadarada waxaa loogu talagalay kuwa bilowga ah, sidaa darteed uma badna inay xiiseeyaan isticmaalayaasha khibradda leh. Ma jiri doono wax dhiig ah, lifaaq ama gundhig qoto dheer. Aasaaska aad u badan.

Waa maxay Docker: dalxiis kooban oo ku saabsan taariikhda iyo waxyaabaha aasaasiga ah

Waa maxay Docker

Aynu eegno qeexida Docker ee Wikipedia.

Docker waa kombuyuutar si otomaatig ah u dirida iyo maaraynta codsiyada meelaha weelka ku jira.

Waxba kama cadda qeexitaankan. Gaar ahaan ma cadda micnaha "deegaanka taageera weelka" macnaha. Si aan u ogaano, aan dib ugu noqono wakhtiga. Aan ku bilowno waagii aan sida caadiga ah ugu yeero "Xilligii Monolithic."

Xilligii monolithic

Xilligii monolithic waa horraantii 2000-meeyadii, markii dhammaan codsiyada ay ahaayeen monolithic, oo leh farabadan ku-tiirsanaan. Horumarku wuxuu qaatay waqti dheer. Isla mar ahaantaana, ma jirin wax badan oo server ah, dhammaanteen waan naqaannay iyaga oo aan la soconno iyaga. Waxaa jira is barbar dhig qosol badan:

Xayawaanku waa xayawaan guri. Xilligii monolithic, waxaan ula dhaqmi jirnay adeegayaashayada sidii xayawaan rabaayad ah, oo la qurxiyay oo la qaddariyo, anagoo iska fogeynayna boodhka. Si loo maareeyo kheyraadka wanaagsan, waxaan isticmaalnay qaab-dhismeedka: waxaan qaadnay server-ka oo aan u jarnay dhowr mashiinno farsamo, si aan u hubinno go'doominta deegaanka.

Nidaamyada wax-ku-oolka ku salaysan ee Hypervisor

Qof kastaa wuxuu u badan yahay inuu maqlay wax ku saabsan hababka wax-ku-oolka ah: VMware, VirtualBox, Hyper-V, Qemu KVM, iwm. Waxay bixiyaan go'doomin codsiga iyo maareynta kheyraadka, laakiin sidoo kale waxay leeyihiin faa'iido darrooyin. Si aad u samayso muuqaal-yaqaannimo, waxaad u baahan tahay hypervisor. Iyo hypervisor-ku waa kheyraad ka sarreeya. Mashiinka farsamada laftiisa badanaa waa kolossus dhan - sawir culus oo ka kooban nidaamka hawlgalka, Nginx, Apache, iyo suurtogalnimada MySQL. Sawirku waa weyn yahay oo mashiinka dalwaddu kuma habboona in la shaqeeyo. Natiijo ahaan, ku shaqeynta mashiinnada farsamada gacanta waxay noqon kartaa mid gaabis ah. Si loo xalliyo dhibaatadan, nidaamyada tarjumaadda ayaa la abuuray heerka kernel.

Nidaamyada wax-soo-saarka kernel-ka

Farsamaynta heerka Kernel waxaa taageera OpenVZ, Systemd-nspawn, nidaamyada LXC. Tusaalaha cajiibka ah ee hab-dhaqanka noocaas ah waa LXC (Containers Linux).

LXC waa nidaam-hawlgalnimo oo heer-sare ah oo loogu talagalay in lagu socodsiiyo marar badan oo go'doonsan nidaamka hawlgalka Linux hal nood. LXC ma isticmaasho mashiinada farsamada gacanta, laakiin waxay abuurtaa jawi macmal ah oo leh meel nidaamsan oo u gaar ah iyo xidhmooyin shabakadeed.

Asal ahaan LXC waxay abuurtaa weelal. Waa maxay faraqa u dhexeeya mashiinnada farsamada gacanta iyo weelasha?

Waa maxay Docker: dalxiis kooban oo ku saabsan taariikhda iyo waxyaabaha aasaasiga ah

Weelku kuma habboona habka go'doominta: dayacanka waxaa laga helaa nidaamyada qiyamka ee heerka kernel kaas oo u oggolaanaya inay ka baxsadaan weelka oo ay u gudbaan martida loo yahay. Sidaa darteed, haddii aad u baahan tahay inaad wax ka saarto, waxaa fiican inaad isticmaasho mashiinka farsamada.

Farqiga u dhexeeya hab-samaynta iyo haynta waxa lagu arki karaa jaantuska.
Waxaa jira qalab kor-u-qaadayaal, kor-u-qaadayaal korka OS ah, iyo weelal.

Waa maxay Docker: dalxiis kooban oo ku saabsan taariikhda iyo waxyaabaha aasaasiga ah

Hardware hypervisors waa qabow haddii aad runtii rabto inaad wax ka saarto. Sababtoo ah waa suurtagal in la go'doomiyo heerka boggaga xusuusta iyo processor-rada.

Waxaa jira hypervisors barnaamij ahaan, waxaana jira weelal, oo aan ka sii hadli doono. Nidaamyada konteeneraynta ma laha hypervisor, laakiin waxa jira mishiin kontaynar ah oo abuura oo maamula weelasha. Shaygani wuu ka khafiifsan yahay, markaa la shaqaynta xudunta awgeed waxaa jira culays yar ama midnaba.

Waxa loo isticmaalo weel dhigista heerka kernel-ka

Farsamooyinka ugu muhiimsan ee kuu ogolaanaya inaad abuurto weel ka go'an hababka kale waa Magacyada iyo Kooxaha Xakamaynta.

Meelaha Magaca: PID, Isku-xidhka, Buurta iyo Isticmaalaha. Way badan yihiin, laakiin si loo fududeeyo fahamka waxaan diiradda saari doonaa kuwan.

PID Namespace waxay xadidaysaa hababka Marka, tusaale ahaan, aan samayno PID Namespace oo aan dhigno hannaan halkaas, waxay ku noqotaa PID 1. Sida caadiga ah nidaamyada PID 1 waa nidaam ama init. Sidaa darteed, marka aan meel dhigno hab-raac magac cusub, waxay sidoo kale helaysaa PID 1.

Networking Namespace waxay kuu ogolaanaysaa inaad xaddiddo/go'doomiso shabakadda oo aad dhex geliso is-dhexgalyadaada. Mount waa xaddidaadda nidaamka faylka. Isticmaale β€” xaddidaadda isticmaalayaasha.

Kooxaha Xakamaynta: Xusuusta, CPU, IOPS, Shabakadda - ilaa 12 goobood guud ahaan. Haddii kale waxaa sidoo kale loo yaqaan koox-kooxeed ("C-koox").

Kooxaha xakamaynta ayaa maamula agabka weelka. Iyadoo loo marayo kooxaha kantaroolka waxaan dhihi karnaa weelku waa inuusan cunin wax ka badan xaddi cayiman.

Si weel dhigistu si buuxda ugu shaqeyso, tignoolajiyada dheeraadka ah ayaa la isticmaalaa: Awoodaha, Nuqul-ku-qorista iyo kuwa kale.

Awooduhu waa marka aan u sheegno hab-socodka waxa uu samayn karo iyo waxa aanu samayn karin. Marka la eego heerka kernel, kuwani waa si fudud khariidado yar oo leh cabbirro badan. Tusaale ahaan, isticmaalaha xididku wuxuu leeyahay mudnaan buuxda wuxuuna samayn karaa wax kasta. Adeegga wakhtiga ayaa bedeli kara wakhtiga nidaamka: waxa uu awood ku leeyahay Kaabsoosha Time-ka, waana taas. Adigoo isticmaalaya mudnaanta, waxaad si dabacsanaan ah u habeyn kartaa xannibaadaha geeddi-socodka, oo markaas aad naftaada ilaaliso.

Nidaamka nuqul-ku-qorista wuxuu noo ogolaanayaa inaan la shaqeyno sawirada Docker oo aan u isticmaalno si hufan.

Docker wuxuu hadda leeyahay arrimo la jaan qaadaya Cgroups v2, marka maqaalkani wuxuu si gaar ah diiradda u saarayaa Cgroups v1.

Balse aan taariikhda u soo noqono.

Marka hababka wax-ku-oolka ahi ay ka soo muuqdeen heerka kernel, waxay bilaabeen in si firfircoon loo isticmaalo. Dusha sare ee hypervisor-ka ayaa la waayay, laakiin dhibaatooyinka qaar ayaa hadhay:

  • sawirro waaweyn: waxay ku riixaan nidaamka hawlgalka, maktabadaha, farabadan software kala duwan oo isku mid ah OpenVZ, iyo dhamaadka sawirku wali wuxuu noqonayaa mid aad u weyn;
  • Ma jiro halbeeg caadi ah oo baakooyinka iyo keenista, markaa dhibaatada ku tiirsanaanta ayaa weli ah. Waxaa jira xaalado marka laba qaybood oo kood ah ay isticmaalaan maktabad isku mid ah, laakiin leh noocyo kala duwan. Waxaa laga yaabaa in khilaaf dhexdooda ah.

Si loo xalliyo dhibaatooyinkan oo dhan, xilliga xiga ayaa yimid.

Waagii weelka

Markii Era of Konteenarada yimid, falsafada la shaqaynta iyaga ayaa isbedelay:

  • Hal hab - hal weel.
  • Waxaan gaarsiinaa dhammaan ku tiirsanaanta geeddi-socodku u baahan yahay weelkeeda. Tani waxay u baahan tahay in monolith-yada loo gooyo adeegyo yaryar.
  • Sawirka yar, ayaa ka sii wanaagsan - waxaa jira dayac-yaraan suurtagal ah oo suurtagal ah, si dhakhso ah ayey u soo baxdaa, iyo wixii la mid ah.
  • Tusaalooyinku waxay noqdaan kuwo lama filaan ah.

Xusuusnow waxa aan ka idhi xayawaanka iyo lo'da? Markii hore, xaaladuhu waxay la mid ahaayeen xoolaha nool, haddase waxay noqdeen sidii lo' oo kale. Markii hore, waxaa jiray monolith - hal codsi. Hadda waa 100 microservices, 100 weel. Qaar ka mid ah weelasha ayaa laga yaabaa inay leeyihiin 2-3 nuqul. Waxa ay noqonaysaa mid aad muhiim noogu ah in aan xakameyno weel kasta. Waxa noo muhimsan waa helitaanka adeegga laftiisa: waxa weelku qabtaan. Tani waxay bedeshaa hababka kormeerka.

2014-2015, Docker wuu kobcay - tignoolajiyada aan hadda ka hadli doono.

Docker waxa uu beddelay falsafada iyo baakadaha codsiga caadiga ah. Isticmaalka Docker, waxaan ku xiri karnaa arjiga, u diri karnaa meel kayd ah, ka soo dejisan karnaa, oo geyn karnaa.

Wax kasta oo aan u baahanahay waxaan gelinaa weelka Docker, si dhibaatada ku tiirsanaanta loo xalliyo. Docker wuxuu dammaanad qaaday tarankiisa. Waxaan u maleynayaa in dad badan ay la kulmeen dib-u-soo-celin la'aan: wax walba way kuu shaqeynayaan, waxaad ku riixdaa wax-soo-saarka, halkaasna waxay ku joojinaysaa shaqada. Iyadoo Docker dhibaatadani way ka baxaysaa. Haddii weelka Docker-kaaga uu bilaabo oo uu sameeyo waxa uu u baahan yahay inuu sameeyo, ka dibna leh heer sare oo suurtogal ah waxay ka bilaabi doontaa wax soo saarka oo sidaas oo kale ku samee halkaas.

Digression ku saabsan dusha sare

Had iyo jeer waxaa jira khilaaf ku saabsan madax-kordhinta. Dadka qaarkiis waxay aamminsan yihiin in Docker uusan qaadin culeys dheeri ah, maadaama ay isticmaasho kernel Linux iyo dhammaan geeddi-socodkeeda lagama maarmaanka u ah weelka. Sida, "haddii aad tiraahdo Docker waa ka sarreeyaa, markaa kernel Linux ayaa ka sarreeya."

Dhanka kale, haddii aad si qoto dheer u sii socoto, waxaa jira waxyaabo badan oo Docker ah, oo leh fidsan, oo la odhan karo waa ka sarreeyaan.

Ka hore waa magaca PID. Marka aan meel dhigno hab-raac magaceed, waxaa loo qoondeeyaa PID 1. Isla markaa, habkani wuxuu leeyahay PID kale, kaas oo ku yaal meesha magaca martida loo yahay, meel ka baxsan weelka. Tusaale ahaan, waxaan ku soo saarnay Nginx weel, waxay noqotay PID 1 (habka sare). Oo martida loo yahay waxay leedahay PID 12623. Wayna adagtahay in la sheego inta ay le'eg tahay dusha sare.

Midda labaad waa kooxo. Aynu ku soo qaadanno kooxo-kooxeedka xusuusta, taas oo ah, awoodda xaddididda xusuusta weelka. Marka la furo, xisaabaadka iyo xisaabinta xusuusta ayaa la hawlgeliyaa: kernel-ku wuxuu u baahan yahay inuu fahmo inta bog ee loo qoondeeyay iyo inta weli bilaash u ah weelkan. Tani waxay suurtogal tahay inay tahay lacag dulsaar ah, laakiin ma aanan arag daraasado sax ah oo ku saabsan sida ay u saamayso waxqabadka. Aniga naftayda ma dareemin in arjiga ka socda Docker uu si lama filaan ah u la kulmay khasaaro aad u weyn xagga waxqabadka.

Iyo hal qoraal oo kale oo ku saabsan waxqabadka. Qaar ka mid ah xuduudaha kernel-ka ayaa laga gudbiyaa martida loo yahay weelka. Gaar ahaan, xuduudaha shabakada qaarkood. Sidaa darteed, haddii aad rabto inaad wax ka qabato wax-qabad sare oo Docker ah, tusaale ahaan, wax si firfircoon u isticmaali doona shabakada, markaa waxaad u baahan tahay ugu yaraan inaad hagaajiso xuduudahan. Qaar ka mid ah nf_conntrack, tusaale ahaan.

Ku saabsan fikradda Docker

Docker wuxuu ka kooban yahay dhowr qaybood:

  1. Docker Daemon waa matoorka weel la mid ah; waxay soo saartaa weelasha.
  2. Docker CII waa utility maamulka Docker.
  3. Dockerfile - tilmaamo ku saabsan sida loo dhiso sawirka.
  4. Sawirka - sawirka weelka laga soo rogo.
  5. Konteenar.
  6. Diiwaanka Docker waa kayd sawir.

Nidaam ahaan waxay u egtahay sidan:

Waa maxay Docker: dalxiis kooban oo ku saabsan taariikhda iyo waxyaabaha aasaasiga ah

Docker daemon wuxuu ku shaqeeyaa Docker_host wuxuuna bilaabayaa weelasha. Waxaa jira macmiil soo dira amarrada: dhis sawirka, soo deji sawirka, fur weelka. Docker daemon wuxuu aadaa diiwaanka wuuna fulinayaa. Macmiilka Docker wuxuu ka geli karaa labadaba gudaha (goobka Unix) iyo TCP ee martigeliyaha fog.

Aynu soo marno qayb kasta.

Docker daemon - kani waa qaybta server-ka, waxay ku shaqeysaa mashiinka martida loo yahay: soo dejiso sawirada waxayna ka soo saartaa weelasha iyaga, waxay abuurtaa shabakad u dhaxaysa weelasha, waxay soo ururisaa logs. Markaan nidhaahno "sameeya sawir," jinniguna sidaas oo kale ayuu sameynayaa.

Docker CLI - Qaybta macmiilka Docker, utility console ee la shaqaynta daemon-ka. Waxaan ku celinayaa, ma shaqeyn karto oo keliya gudaha, laakiin sidoo kale shabakadda.

Awaamiirta aasaasiga ah:

docker ps - tus weelasha hadda ku shaqeeya Docker host.
sawirada docker - waxay muujinayaan sawirada laga soo dejiyay gudaha.
docker search <> - ka raadi sawir ku jira diiwaanka.
docker pull <> - ka soo deji sawirka diiwaanka mashiinka.
docker dhis < > - ururi sawirka.
docker run <> - fur weelka.
docker rm <> - ka saar weelka.
docker logs <> - diiwaannada weelka
docker start/stop/reboot <> - la shaqaynta weelka

Haddii aad awood u yeelatid amarradan oo aad ku kalsoon tahay isticmaalkooda, tixgeli naftaada 70% aad u yaqaan Docker heerka adeegsadaha.

Dockerfile - tilmaamaha abuurista sawir. Ku dhawaad ​​amar kastaa waa lakab cusub. Bal aan tusaale u soo qaadano.

Waa maxay Docker: dalxiis kooban oo ku saabsan taariikhda iyo waxyaabaha aasaasiga ah

Tani waa sida uu u eg yahay Dockerfile: amarrada dhanka bidix, doodaha dhanka midig. Amar kasta oo halkan yaal (iyo guud ahaan ku qoran Dockerfile) wuxuu ku abuuraa lakab cusub Sawirka.

Xitaa markaad eegto dhinaca bidix, waxaad qiyaasi kartaa waxa dhacaya. Waxa aanu nidhi: β€œFul noo samee”- kani waa hal lakab. "Ka dhig in galka uu shaqeeyo" waa lakab kale, iyo wixii la mid ah. Keega lakabka ayaa nolosha fududeeya. Haddii aan abuuro Dockerfile kale oo aan wax ka beddelo safka ugu dambeeya - waxaan wadaa wax aan ahayn "python" "main.py", ama ku rakibo ku-tiirsanaanta fayl kale - ka dibna lakabyadii hore ayaa dib loo isticmaali doonaa sidii kayd ahaan.

Image - Tani waa baakad weel, weel ayaa laga bilaabay sawirka. Haddii aan ka eegno Docker dhinaca aragtida maareeyaha xirmada (sida haddii aan ku shaqeyneyno baakadaha deb ama rpm), markaa sawirku asal ahaan waa xirmo rpm ah. Iyada oo loo marayo yum install waxaan ku rakibi karnaa codsiga, tirtiri karnaa, ka heli karnaa kaydka, oo soo dejisan karnaa. Waxay la mid tahay halkan: weelasha ayaa laga soo saaray sawirka, waxaa lagu kaydiyaa diiwaanka Docker (oo la mid ah yum, meel kayd ah), sawir kastaa wuxuu leeyahay SHA-256 xashiish ah, magac iyo calaamad.

Sawirka waxaa loo dhisay si waafaqsan tilmaamaha Dockerfile. Tilmaam kasta oo ka yimid Dockerfile wuxuu abuuraa lakab cusub. Lakabyada dib ayaa loo isticmaali karaa.

Diiwaanka Docker waa kaydka sawirka Docker. Si la mid ah OS-ka, Docker wuxuu leeyahay diiwaan caam ah oo heer caam ah - dockerhub. Laakiin waxaad dhisi kartaa kayd kuu gaar ah, diiwaanka Docker-kaaga.

Kontayn - waxa laga bilaabay sawirka. Waxaan u dhisnay muuqaal iyadoo la raacayo tilmaamaha Dockerfile, ka dib waxaan ka bilownay sawirkan. Weelkani waa ka go'doonsan yahay weelasha kale, waa in uu ka kooban yahay wax kasta oo lagama maarmaanka u ah codsigu si uu u shaqeeyo. Xaaladdan oo kale, hal weel - hal hab. Waxay dhacdaa inaad sameyso laba habraac, laakiin tani waxay ka soo horjeedaa fikradda Docker.

Baahida "hal weel, hal nidaam" waxay la xiriirtaa Magaca Magaca PID. Marka habka PID 1 uu ka bilowdo Namespace, haddii uu si lama filaan ah u dhinto, markaa weelka oo dhan wuu dhimanayaa. Haddii laba hab ay halkaas ka socdaan: mid waa nool yahay kan kalena waa dhintay, markaas weelku weli wuu sii noolaan doonaa. Laakiin tani waa su'aal ah Hababka ugu Fiican, waxaan uga hadli doonaa iyaga oo ku jira agabyo kale.

Si aad u barato sifooyinka iyo barnaamijka buuxa ee koorsada, fadlan raac xiriirka: "Koorsada fiidiyowga ee Docker".

Qoraaga: Marcel Ibraev, maamulaha Kubernetes oo shahaado haysta, injineer ku takhasusay Southbridge, afhayeenka iyo horumarinta koorsooyinka Slurm.

Source: www.habr.com

Add a comment