VM kapena Docker?

Mumvetsetsa bwanji kuti mukufuna Docker osati VM? Muyenera kudziwa chomwe mukufuna kudzipatula. Ngati mukufuna kupatula dongosolo lomwe lili ndi zida zotsimikizika komanso zida zenizeni, ndiye kuti chisankhocho chiyenera kugwera pa VM. Ngati mukufuna kudzipatula kugwiritsa ntchito ngati njira zosiyana siyana, mudzafunika Docker.

Ndiye pali kusiyana kotani pakati pa zotengera za Docker ndi ma VM?

Makina owonera (VM) ndi kompyuta yeniyeni yokhala ndi zida zonse ndi diski yolimba, yomwe OS yatsopano yodziyimira yokha imayikidwa pamodzi ndi madalaivala a chipangizo, kasamalidwe ka kukumbukira ndi zigawo zina. Ndiko kuti, timapeza chidule cha zida zakuthupi zomwe zimakulolani kuyendetsa makompyuta ambiri pakompyuta imodzi.
VM yokhazikitsidwa imatha kutenga malo a disk m'njira zosiyanasiyana:

  • danga lokhazikika la hard disk, lomwe limalola mwayi wofikira ku hard disk ndikupewa kugawikana kwa mafayilo;
  • dynamic memory allocation. Mukakhazikitsa mapulogalamu owonjezera, kukumbukira kumaperekedwa kwa iwo mwamphamvu mpaka kufika pamlingo waukulu womwe waperekedwa kwa iwo.

Makina ochulukirachulukira pa seva, m'pamene amatenga malo ochulukirapo, komanso amafunikira kuthandizira kosalekeza kwa chilengedwe chofunikira kuti pulogalamu yanu igwire ntchito.

Docker ndi pulogalamu yopangira mapulogalamu potengera zotengera. Zotengera ndi makina enieni ali ndi maubwino ofanana, koma amagwira ntchito mosiyana. Zotengera zimatenga malo ochepa, chifukwa kugwiritsa ntchito mopitilira muyeso zogawana zapagulu kuposa VM, chifukwa mosiyana ndi VM, imapereka virtualization pamlingo wa OS, osati hardware. Njirayi imapereka kukumbukira pang'ono, kutumizira mwachangu, komanso kukulitsa kosavuta.

Chidebecho chimapereka njira yabwino kwambiri yolumikizira mapulogalamu popereka mawonekedwe ofunikira ku makina opangira. Izi zimalola kuti zotengerazo zizigawana pachimake cha dongosolo, pomwe zotengerazo zimayenda ngati njira yosiyana ya OS yayikulu, yomwe ili ndi malo ake okumbukira (malo ake enieni adilesi). Popeza malo a adiresi a chidebe chilichonse ndi chake, deta yomwe ili m'malo osiyanasiyana amakumbukiro singasinthidwe.
OS yachibadwidwe ya Docker ndi Linux (Docker itha kugwiritsidwanso ntchito pa Windows ndi MacOS), imagwiritsa ntchito zabwino zake zazikulu, zomwe zimalola kuti ikonzekere kernel yogawanika. Kukhazikitsidwa kwa zotengera za Docker pa Windows kudzachitika mkati mwa makina a Linux. zitsulo zimagawana OS ya makina osungira ndipo OS yayikulu kwa iwo ndi Linux.

Container - imagwira ntchito bwanji?

Chotsitsa ndi chidule pamlingo wogwiritsa ntchito womwe umaphatikiza ma code ndi kudalira. Zotengera zimapangidwa nthawi zonse kuchokera pazithunzi, ndikuwonjezera cholembera chapamwamba ndikuyambitsa magawo osiyanasiyana. Chifukwa chidebe chimakhala ndi gawo lake lolemba ndipo zosintha zonse zimasungidwa pamalowo, zotengera zingapo zimatha kugawana mwayi wopeza chithunzi chomwecho.

Chidebe chilichonse chikhoza kukonzedwa kudzera mu fayilo mu docker-compose project yomwe ikuphatikizidwa mu yankho lalikulu, docker-compose.yml. Kumeneko mutha kukhazikitsa magawo osiyanasiyana monga dzina la chidebe, madoko, zozindikiritsa, malire azinthu, kudalira pakati pa zotengera zina. Ngati simutchula dzina lachidebe pazokonda, ndiye kuti Docker amapanga chidebe chatsopano nthawi iliyonse, ndikuchipatsa dzina mwachisawawa.

Chidebe chikayamba kuchokera pachithunzi, Docker amakweza mafayilo owerengera / kulemba pamwamba pazigawo zilizonse pansipa. Apa ndipamene njira zonse zomwe tikufuna kuti chidebe chathu cha Docker chiyendetse.

Docker akayambitsa chidebe choyamba, gawo loyamba lowerenga / kulemba lilibe kanthu. Zosintha zikachitika, zimayikidwa pagawolo; mwachitsanzo, ngati mukufuna kusintha fayilo, fayiloyo idzakopera kuchokera pagawo lowerengeka lomwe lili m'munsimu kupita kugawo lowerenga-lemba.
Fayilo yowerengeka yokha idzakhalapobe, koma tsopano yabisika pansi pa kopelo. Ma voliyumu amagwiritsidwa ntchito kusunga deta, mosasamala kanthu za moyo wa chidebecho. Ma voliyumu amayambika pamene chidebe chimapangidwa.

Kodi chithunzichi chikugwirizana bwanji ndi chidebecho?

Chithunzi - chinthu chachikulu pachidebe chilichonse. Chithunzicho chimapangidwa kuchokera ku Dockerfile yowonjezeredwa ku pulojekitiyi ndipo ndi ndondomeko ya mafayilo (zosanjikiza) zosanjikizana pamwamba pa wina ndi mzake ndikuphatikizidwa pamodzi, zomwe zimapezeka kuti ziwerengedwe; chiwerengero chachikulu cha zigawo ndi 127.

Pamtima pa chithunzi chilichonse pali chithunzi choyambira, chomwe chimafotokozedwa ndi lamulo la FROM - malo olowera pamene mukupanga chithunzi cha Dockerfile. Chigawo chilichonse chimakhala chowerengera chokha ndipo chimayimiridwa ndi lamulo limodzi lomwe limasintha mafayilo amafayilo, olembedwa mu Dockerfile.
Kuti aphatikize zigawo izi kukhala chithunzi chimodzi, Docker amagwiritsa ntchito Advanced multi-layered Union file system (AuFS imamangidwa pamwamba pa UnionFS), kulola mafayilo osiyanasiyana ndi maupangiri osiyanasiyana kuchokera pamafayilo osiyanasiyana kuti azilumikizana mowonekera, ndikupanga fayilo yogwirizana nayo.

Zigawo zimakhala ndi metadata yomwe imakulolani kuti musunge zokhudzana ndi gawo lililonse panthawi yothamanga komanso nthawi yomanga. Chigawo chilichonse chimakhala ndi ulalo wotsatira, ngati wosanjikiza alibe ulalo, ndiye kuti ndiye gawo lapamwamba kwambiri pachithunzichi.

Dockerfile ikhoza kukhala ndi malamulo monga:

  • KUCHOKERA - malo olowera pakupanga chithunzi;
  • WOPEREKA - dzina la mwiniwake wa fano;
  • RUN - kulamula kuphedwa pamisonkhano yazithunzi;
  • ADD - kukopera fayilo yosungira ku chithunzi chatsopano, ngati mutchula fayilo ya URL, Docker adzaitsitsa ku chikwatu chomwe chatchulidwa;
  • ENV - zosintha zachilengedwe;
  • CMD - imayamba kupanga chidebe chatsopano potengera chithunzicho;
  • ENTRYPOINT - Lamulo limaperekedwa pomwe chidebe chayamba.
  • WORKDIR ndiye chikwatu chogwirira ntchito potsatira lamulo la CMD.
  • USER - Imakhazikitsa UID pachidebe chopangidwa kuchokera pachithunzichi.
  • VOLUME - Imayika chikwatu chosungira ku chidebe.
  • EXPOSE ndi gulu la madoko omwe amamvera muchotengera.

Kodi UnionFS imagwira ntchito bwanji?

UnionFS - service stack file system (FS) ya Linux ndi FreeBSD. FS iyi imagwiritsa ntchito njira yolembera (Copy-On-Write, COW). Chigawo chogwirira ntchito cha UnionFS ndi chosanjikiza, gawo lililonse liyenera kuonedwa ngati lapadera la fayilo lomwe lili ndi utsogoleri wotsogola kuchokera muzu womwewo. UnionFS imapanga mgwirizano wamafayilo ena ndikukulolani kuti muphatikize mafayilo ndi zolemba kuchokera kumafayilo osiyanasiyana (otchedwa nthambi) kukhala fayilo imodzi yolumikizidwa, mowonekera kwa wogwiritsa ntchito.

Zomwe zili m'madawunilodi okhala ndi njira zomwezo zidzawonetsedwa mu chikwatu chimodzi chophatikizika (m'malo omwewo) pamafayilo omwe atsatira.

UnionFS imaphatikiza zigawo kutengera mfundo izi:

  • chimodzi mwa zigawozo zimakhala zosanjikiza zapamwamba, zachiwiri ndi zotsatila zimakhala zigawo zapansi;
  • zinthu zosanjikiza zimapezeka kwa wogwiritsa ntchito "kuchokera pamwamba mpaka pansi", i.e. ngati chinthu chofunsidwa chiri mu "chapamwamba" chosanjikiza, chimabwezeretsedwa, mosasamala kanthu za kukhalapo kwa chinthu chokhala ndi dzina lomwelo mu "pansi" wosanjikiza; apo ayi, chinthu cha "pansi" chabwezedwa; ngati chinthu chofunsidwa sichilipo kapena apo, cholakwika "Palibe fayilo yotere kapena chikwatu" chabwezedwa;
  • gawo logwira ntchito ndilo "pamwamba", ndiko kuti, zochita zonse za ogwiritsa ntchito kusintha deta zimangowoneka pamtunda wapamwamba, popanda kukhudza zomwe zili m'munsimu.

Docker ndiye ukadaulo wodziwika bwino kwambiri wogwiritsa ntchito zotengera pakugwiritsa ntchito. Zakhala muyezo m'derali, kumanga pamagulu ndi malo a mayina operekedwa ndi Linux kernel.

Docker imatilola kutumizira mwachangu mapulogalamu ndikugwiritsa ntchito bwino mafayilo amafayilo pogawana kernel ya OS pakati pa zotengera zonse, zomwe zikuyenda ngati njira zosiyana za OS.

Source: www.habr.com

Kuwonjezera ndemanga