VM ko Docker?

Yadda ake fahimtar cewa kuna buƙatar Docker ba VM ba? Kuna buƙatar ƙayyade ainihin abin da kuke son ware. Idan kuna son ware tsarin tare da ingantaccen albarkatu da kayan aikin kama-da-wane, to zaɓin yakamata ya faɗi akan VM. Idan kuna buƙatar ware aikace-aikacen da ke gudana azaman tsarin tsarin daban, kuna buƙatar Docker.

Don haka menene bambanci tsakanin kwantena Docker da VMs?

Injin Virtual (VM) kwamfuta ce mai kama-da-wane tare da dukkan na'urori masu kama-da-wane da kuma rumbun kwamfyuta, wanda aka sanya sabuwar OS mai zaman kanta tare da direbobin na'urar kama-da-wane, sarrafa ƙwaƙwalwar ajiya da sauran abubuwa. Wato, muna samun taƙaitaccen kayan aikin jiki wanda ke ba ku damar sarrafa kwamfutoci da yawa akan kwamfuta ɗaya.
VM da aka shigar zai iya ɗaukar sarari diski ta hanyoyi daban-daban:

  • kafaffen sararin faifan diski, wanda ke ba da damar shiga cikin sauri zuwa rumbun kwamfyuta mai kama-da-wane kuma yana guje wa rarrabuwar fayil;
  • ƙayyadaddun ƙwaƙwalwar ajiya mai ƙarfi. Lokacin shigar da ƙarin aikace-aikacen, ƙwaƙwalwar ajiya za a keɓance su da ƙarfi har sai ta kai matsakaicin adadin da aka ware mata.

Yawancin injunan kama-da-wane akan uwar garken, ƙarin sarari suna ɗauka, kuma suna buƙatar ci gaba da goyan bayan yanayin da ake buƙata don aikace-aikacenku yayi aiki.

Docker software ce don gina aikace-aikace dangane da kwantena. Kwantena da injunan kama-da-wane suna da fa'idodi iri ɗaya, amma suna aiki daban. Kwantena suna ɗaukar ƙasa kaɗan, saboda yi amfani da ƙarin albarkatun da aka raba na tsarin runduna fiye da VM, saboda ba kamar VM ba, yana ba da ingantaccen aiki a matakin OS, ba kayan aiki ba. Wannan hanya tana ba da ƙarancin sawun ƙwaƙwalwar ajiya, saurin turawa, da sauƙin ƙima.

Kwangilar tana ba da ingantacciyar hanya don ƙaddamar da aikace-aikacen ta hanyar samar da musaya masu mahimmanci ga tsarin runduna. Wannan fasalin yana ba da damar kwantena su raba ainihin tsarin, inda kowane ɗayan kwantena yana gudana azaman tsari daban na babban OS, wanda ke da nasa tsarin wuraren ƙwaƙwalwar ajiya (wurin adireshi mai kama da kansa). Tunda sararin adireshin rumbun kowane akwati nasa ne, ba za a iya canza bayanan da ke cikin wuraren ƙwaƙwalwar ajiya daban-daban ba.
Asalin OS na Docker shine Linux (Docker kuma ana iya amfani dashi akan Windows da MacOS), yana amfani da babban fa'idodinsa, wanda ke ba shi damar tsara tsaga kwaya. Kaddamar da kwantena Docker akan Windows zai faru a cikin na'ura mai kama da Linux, saboda kwantena suna raba OS na tsarin runduna kuma babban OS a gare su shine Linux.

Kwantena - yaya yake aiki?

Akwati abstraction ne a matakin aikace-aikacen da ke haɗa lamba da abin dogaro. Ana ƙirƙira kwantena koyaushe daga hotuna, ƙara saman rubutu mai rubutu da fara sigogi daban-daban. Saboda kwantena yana da rubutun rubutun kansa kuma ana adana duk canje-canje a cikin wannan Layer, kwantena da yawa na iya raba damar zuwa hoton babban hoto iri ɗaya.

Ana iya daidaita kowane akwati ta hanyar fayil a cikin aikin rubutaccen docker wanda aka haɗa a cikin babban bayani, docker-compose.yml. A can zaku iya saita sigogi daban-daban kamar sunan kwantena, tashar jiragen ruwa, masu ganowa, iyakokin albarkatu, dogaro tsakanin sauran kwantena. Idan ba ku ƙididdige sunan ganga a cikin saitunan ba, to Docker zai ƙirƙiri sabon akwati kowane lokaci, sanya masa suna ba da gangan ba.

Lokacin da aka fara akwati daga hoto, Docker yana hawa tsarin karantawa/rubutu a saman kowane yadudduka da ke ƙasa. Anan ne duk hanyoyin da muke son kwandon Docker ɗinmu ya gudana zasu gudana.

Lokacin da Docker ya fara fara akwati, farkon karantawa/rubutu babu komai. Lokacin da canje-canje ya faru, ana amfani da su a kan wannan Layer; misali, idan kuna son gyara fayil, za a kwafi wannan fayil ɗin daga layin karantawa kawai da ke ƙasa zuwa Layer-write Layer.
Sigar fayil ɗin karantawa kawai zai kasance har yanzu, amma yanzu yana ɓoye ƙarƙashin kwafin. Ana amfani da juzu'i don adana bayanai, ba tare da la'akari da yanayin rayuwar akwati ba. Ana fara ƙara ƙararrawa lokacin da aka ƙirƙiri akwati.

Ta yaya hoton yake da alaƙa da akwati?

Hoton hoto - babban kashi ga kowane akwati. An ƙirƙiri hoton daga Dockerfile da aka ƙara zuwa aikin kuma tsari ne na tsarin fayiloli (yadudduka) waɗanda aka jera a saman juna kuma an haɗa su tare, akwai don karantawa kawai; Matsakaicin adadin yadudduka shine 127.

A zuciyar kowane hoto akwai hoton tushe, wanda umarnin FROM ya kayyade - wurin shigarwa lokacin samar da hoton Dockerfile. Kowane Layer Layer ne kawai na karantawa kuma ana wakilta ta da umarni guda ɗaya wanda ke canza tsarin fayil, wanda aka rubuta a cikin Dockerfile.
Don haɗa waɗannan yadudduka zuwa hoto guda ɗaya, Docker yana amfani da Advanced Multi-layered Union file system (An gina AuFS akan saman UnionFS), yana ba da damar fayiloli daban-daban da kundayen adireshi daga yaduddukan fayil daban-daban don haɗawa a sarari, ƙirƙirar tsarin fayil mai alaƙa.

Layers sun ƙunshi metadata waɗanda ke ba ku damar adana bayanai masu alaƙa game da kowane Layer a lokacin aiki da lokacin ginawa. Kowane Layer ya ƙunshi hanyar haɗi zuwa Layer na gaba, idan Layer ba shi da hanyar haɗi, to wannan shine mafi girman Layer a cikin hoton.

Dockerfile na iya ƙunsar umarni kamar:

  • DAGA - wurin shigarwa a cikin samuwar hoton;
  • MAI KYAUTA - sunan mai hoton;
  • RUN - aiwatar da umarni yayin taron hoto;
  • ADD - kwafin fayil ɗin mai watsa shiri zuwa sabon hoto, idan kun ƙididdige fayil ɗin URL, Docker zai saukar da shi zuwa ƙayyadadden jagorar;
  • ENV - masu canjin yanayi;
  • CMD - fara ƙirƙirar sabon akwati bisa ga hoton;
  • SHIGA - Ana aiwatar da umarnin lokacin da aka fara kwantena.
  • WORKDIR shine jagorar aiki don aiwatar da umarnin CMD.
  • USER - Yana saita UID don kwandon da aka ƙirƙira daga hoton.
  • VOLUME - Yana hawa kundin jagora zuwa akwati.
  • EXPOSE saitin tashoshin jiragen ruwa ne da ake saurare a cikin kwantena.

Ta yaya UnionFS ke aiki?

UnionFS - Tsarin fayil ɗin sabis (FS) don Linux da FreeBSD. Wannan FS tana aiwatar da tsarin kwafi-kan-rubutu (Copy-on-Rubuta, COW). Ƙungiyar aiki ta UnionFS Layer ce, kowane Layer yakamata a yi la'akari da shi azaman tsarin fayil ɗin cikakken tsari tare da tsarin shugabanci daga tushen kansa. UnionFS tana ƙirƙira dutsen ƙungiyar don sauran tsarin fayil kuma yana ba ku damar haɗe fayiloli da kundayen adireshi daga tsarin fayil daban-daban (wanda ake kira rassa) cikin tsarin fayil guda ɗaya, a bayyane ga mai amfani.

Abubuwan da ke cikin kundayen adireshi tare da hanyoyi iri ɗaya za a nuna su tare a cikin haɗin kai guda ɗaya (a cikin sararin suna ɗaya) na tsarin fayil ɗin da aka samu.

UnionFS ta haɗu da yadudduka bisa ka'idodi masu zuwa:

  • daya daga cikin yadudduka ya zama babban matakin matakin, na biyu da na gaba ya zama ƙananan matakan;
  • Layer abubuwa suna samuwa ga mai amfani "daga sama zuwa kasa", watau. idan abin da ake nema yana cikin "babban" Layer, an mayar da shi, ba tare da la'akari da kasancewar wani abu mai suna guda a cikin "ƙananan" Layer ba; in ba haka ba, an mayar da abin Layer na "kasa"; idan abin da ake nema ba ya nan ko can, kuskuren "Babu irin wannan fayil ko kundin adireshi" an dawo da shi;
  • Layer mai aiki shine "saman", wato, duk ayyukan mai amfani don canza bayanai suna nunawa ne kawai a saman matakin matakin, ba tare da rinjayar abubuwan da ke cikin ƙananan matakan ba.

Docker ita ce fasaha ta gama gari don amfani da kwantena a cikin aikin aikace-aikacen. Ya zama ma'auni a wannan yanki, yana ginawa akan ƙungiyoyi da wuraren suna da Linux kernel ke bayarwa.

Docker yana ba mu damar tura aikace-aikace da sauri kuma muyi mafi kyawun amfani da tsarin fayil ta hanyar raba kernel OS tsakanin duk kwantena, yana gudana azaman hanyoyin OS daban.

source: www.habr.com

Add a comment