VM o Docker?

Giunsa nimo mahibal-an kung kinahanglan nimo ang Docker ug dili usa ka VM? Kinahanglan nimo nga mahibal-an kung unsa gyud ang gusto nimo nga ihimulag. Kung gusto nimo ihimulag ang usa ka sistema nga adunay garantiya nga gipahinungod nga mga kapanguhaan ug virtual nga hardware, nan ang kapilian kinahanglan usa ka VM. Kung kinahanglan nimo nga ihimulag ang nagdagan nga mga aplikasyon ingon lahi nga mga proseso sa sistema, kinahanglan nimo ang Docker.

Busa unsa man ang kalainan tali sa mga sudlanan sa Docker ug mga VM?

Virtual nga makina (VM) usa ka virtual nga kompyuter nga adunay tanan nga virtual nga mga aparato ug usa ka virtual nga hard disk diin ang usa ka bag-ong independente nga OS gi-install kauban ang mga driver sa virtual device, pagdumala sa memorya ug uban pang mga sangkap. Sa ato pa, nakakuha kami usa ka abstraction sa pisikal nga hardware nga nagtugot kanamo sa pagpadagan sa daghang mga virtual nga kompyuter sa usa ka kompyuter.
Ang usa ka na-install nga VM mahimong makakuha og espasyo sa disk sa imong computer sa lainlaing mga paagi:

  • fixed hard disk space, nga nagtugot sa mas paspas nga pag-access sa virtual hard disk ug malikayan ang pagkabahinbahin sa file;
  • dinamikong alokasyon sa memorya. Kung mag-install ug dugang nga mga aplikasyon, ang memorya mahimong dinamikong igahin alang kanila hangtod nga maabot ang labing kadaghan nga kantidad nga gigahin niini.

Ang mas daghang virtual nga makina matag server, mas daghang espasyo ang ilang magamit, ug nanginahanglan usab kanunay nga suporta alang sa palibot nga gikinahanglan aron makadagan ang imong aplikasyon.

Docker mao ang software alang sa paghimo sa mga aplikasyon nga nakabase sa sulud. Ang mga sudlanan ug virtual machine adunay parehas nga mga benepisyo, apan lahi ang paglihok. Ang mga sudlanan gamay ra ang magamit nga lugar tungod kay... gamiton pag-usab ang daghang gipaambit nga mga kapanguhaan sa host system kaysa sa VM, tungod kay dili sama sa VM, naghatag kini virtualization sa lebel sa OS, dili sa lebel sa hardware. Kini nga pamaagi moresulta sa ubos nga memory footprint, mas paspas nga pag-deploy, ug mas sayon ​​nga scaling.

Ang sudlanan naghatag ug mas episyente nga mekanismo sa pag-encapsulate sa mga aplikasyon pinaagi sa paghatag sa gikinahanglang mga interface sa host system. Gitugotan niini nga bahin ang mga sudlanan nga ipaambit ang kinauyokan sa sistema, nga ang matag sudlanan nagdagan ingon usa ka bulag nga proseso sa host OS nga adunay kaugalingon nga set sa mga lugar sa panumduman (kaugalingon nga virtual address space). Tungod kay ang virtual address space sa matag sudlanan iya man, ang data nga iya sa lain-laing mga memory area dili mausab.
Ang lumad nga OS alang sa Docker mao ang Linux (Ang Docker mahimo usab nga gamiton sa Windows ug MacOS), kini naggamit sa mga nag-unang bentaha niini, nga nagtugot niini sa pag-organisar sa kernel separation. Ang pagpadagan sa mga sudlanan sa Docker sa Windows mahitabo sa sulod sa usa ka virtual machine nga nagpadagan sa Linux OS, tungod kay Ang mga sudlanan nag-ambit sa OS sa host system ug ang nag-unang OS alang kanila mao ang Linux.

Container - giunsa kini pagtrabaho?

Kontainer usa ka abstraction sa lebel sa aplikasyon nga naghiusa sa code ug dependencies. Ang mga sulud kanunay gihimo gikan sa mga imahe, pagdugang usa ka masulat nga top layer ug pagsugod sa lainlaing mga parameter. Tungod kay ang usa ka sudlanan adunay kaugalingon nga layer sa pagsulat ug ang tanan nga mga pagbag-o gitipigan sa kana nga layer, daghang mga sudlanan ang makapaambit sa access sa parehas nga master nga imahe.

Ang matag sudlanan mahimong ma-configure pinaagi sa usa ka file sa docker-compose nga proyekto nga gilakip sa panguna nga solusyon - docker-compose.yml. Didto mahimo nimong itakda ang lainlaing mga parameter sama sa ngalan sa sudlanan, mga pantalan, mga identifier, mga limitasyon sa kapanguhaan, mga dependency tali sa ubang mga sudlanan. Kung dili nimo ipiho ang usa ka ngalan sa sudlanan sa mga setting, ang Docker maghimo usa ka bag-ong sudlanan matag higayon, hatagan kini usa ka ngalan nga random.

Kung ang usa ka sudlanan gisugdan gikan sa usa ka imahe, ang Docker nagbutang usa ka read-write filesystem sa ibabaw sa bisan unsang mga layer sa ubos. Dinhi diin ang tanan nga mga proseso nga gusto namon nga ang among Docker container modagan.

Sa diha nga ang Docker nagsugod sa usa ka sudlanan, ang inisyal nga read-write layer walay sulod. Kung mahitabo ang mga pagbag-o, kini gipadapat sa kini nga layer; pananglitan, kung gusto nimong usbon ang usa ka payl, kana nga payl makopya gikan sa read-only layer sa ubos ngadto sa read-write layer.
Ang read-only nga bersyon sa file maglungtad gihapon, apan kini karon gitago ubos sa kopya. Ang mga volume gigamit sa pagtipig sa datos, bisan unsa pa ang siklo sa kinabuhi sa sudlanan. Ang mga volume gisugdan kung ang sudlanan gihimo.

Sa unsang paagi nalangkit ang hulagway sa sudlanan?

Hulagway - ang nag-unang elemento alang sa matag sudlanan. Ang imahe gimugna gikan sa usa ka Dockerfile nga gidugang sa proyekto ug usa ka hugpong sa mga sistema sa file (mga sapaw) nga gipatong sa ibabaw sa usag usa ug gigrupo nga managsama, read-only; Ang maximum nga gidaghanon sa mga layer mao ang 127.

Sa kasingkasing sa matag imahe usa ka base nga imahe, nga gipiho sa FROM command - ang entry point sa pagtukod sa Dockerfile nga imahe. Ang matag layer kay readonly layer ug girepresentahan sa usa ka command nga nag-usab sa file system, nga gisulat sa Dockerfile.
Aron mahiusa kini nga mga layer sa usa ka imahe, gigamit ni Docker ang Advanced multi layered Union file system (Ang AuFS gitukod sa ibabaw sa UnionFS), nga gitugotan ang lainlaing mga file ug mga direktoryo gikan sa lainlaing mga layer sa file nga transparent nga gisapawan, paghimo usa ka nagkahiusa nga sistema sa file.

Ang mga layer adunay metadata nga nagtugot kanimo sa pagtipig sa may kalabutan nga kasayuran bahin sa matag layer sa panahon sa runtime ug oras sa pagtukod. Ang matag layer adunay usa ka link sa sunod nga layer; kung ang usa ka layer walay link, nan kini ang pinakataas nga layer sa imahe.

Ang Dockerfile mahimong adunay mga sugo sama sa:

  • GIKAN - entry point sa dihang nagporma og hulagway;
  • MAINTAINER - ngalan sa tag-iya sa imahe;
  • RUN - pagpatuman sa mando sa panahon sa pag-assemble sa imahe;
  • ADD - pagkopya sa host file sa usa ka bag-ong imahe; kung imong itakda ang URL sa file, i-download kini ni Docker sa gitakda nga direktoryo;
  • ENV - mga variable sa palibot;
  • CMD - nagsugod sa paghimo sa usa ka bag-ong sudlanan base sa imahe;
  • ENTRYPOINT - ang sugo gipatuman sa diha nga ang sudlanan magsugod.
  • Ang WORKDIR mao ang working directory alang sa pagpatuman sa CMD command.
  • USER - nagtakda sa UID alang sa sudlanan nga gihimo base sa imahe.
  • VOLUME - nag-mount sa direktoryo sa host sa sulud.
  • Ang EXPOSE usa ka hugpong sa mga pantalan nga gipamati sa sulud.

Giunsa pagtrabaho ang UnionFS?

UnionFS - utility stack file system (FS) para sa Linux ug FreeBSD. Kini nga FS nagpatuman ug copy-on-write nga mekanismo (Copy-On-Write, COW). Ang working unit sa UnionFS kay usa ka layer; ang matag layer kinahanglan isipon nga usa ka bulag nga full-fledged file system nga adunay hierarchy sa mga direktoryo gikan sa gamut mismo. Naghimo ang UnionFS og unyon mount para sa ubang mga file system ug gitugotan ang mga file ug direktoryo gikan sa lain-laing mga file system (gitawag nga forks) nga mahiusa ngadto sa usa ka managsama nga file system, nga klaro ngadto sa user.

Ang mga sulod sa mga direktoryo nga adunay parehas nga mga agianan makita sa usa ka hiniusa nga direktoryo (sa usa ka namespace) sa resulta nga file system.

Ang UnionFS naghiusa sa mga layer base sa mosunod nga mga prinsipyo:

  • ang usa sa mga lut-od nahimong top-level layer, ang ikaduha ug sunod-sunod nga mga lut-od nahimong ubos nga lebel nga mga lut-od;
  • layer nga mga butang anaa sa user "gikan sa ibabaw ngadto sa ubos", i.e. kung ang gihangyo nga butang anaa sa "ibabaw" nga layer, kini ibalik, bisan unsa pa ang presensya sa usa ka butang nga adunay parehas nga ngalan sa "ubos" nga layer; kung dili ang butang sa "ubos" nga layer ibalik; kung ang gihangyo nga butang wala didto o didto, ang sayup nga "Wala sa ingon nga file o direktoryo" ibalik;
  • ang nagtrabaho nga layer mao ang "ibabaw" nga usa, nga mao, ang tanan nga mga aksyon sa tiggamit aron mabag-o ang datos gipakita lamang sa taas nga lebel nga layer, nga wala makaapekto sa sulud sa mga layer sa ubos nga lebel.

Ang Docker mao ang labing kasagaran nga teknolohiya alang sa paggamit sa mga sulud sa pagpadagan sa mga aplikasyon. Nahimo kini nga sumbanan sa natad, nga nagtukod sa mga cgroup ug mga namespace nga gihatag sa Linux kernel.

Gitugotan kami sa Docker nga dali nga ma-deploy ang mga aplikasyon ug gamiton ang labing kaayo nga sistema sa file pinaagi sa pagbahin sa kernel sa OS taliwala sa tanan nga mga sulud, nga nagdagan ingon bulag nga mga proseso sa OS.

Source: www.habr.com

Idugang sa usa ka comment