VM atanapi Docker?

Kumaha ngartos yén anjeun peryogi Docker sanés VM? Anjeun kudu nangtukeun naon kahayang rék ngasingkeun. Upami anjeun hoyong ngasingkeun sistem kalayan sumber daya anu dijamin sareng hardware virtual, maka pilihanna kedah digolongkeun kana VM. Upami anjeun kedah ngasingkeun aplikasi anu ngajalankeun salaku prosés sistem anu misah, anjeun peryogi Docker.

Janten naon bédana wadah Docker sareng VM?

Mesin virtual (VM) nyaéta komputer virtual sareng sadaya alat virtual sareng hard disk virtual, dimana OS mandiri énggal dipasang sareng supir alat virtual, manajemén mémori sareng komponén sanésna. Hartina, urang meunang abstraksi hardware fisik nu ngidinan Anjeun pikeun ngajalankeun loba komputer virtual dina hiji komputer.
VM anu dipasang tiasa nyandak rohangan disk ku sababaraha cara:

  • spasi hard disk dibereskeun, anu ngamungkinkeun aksés leuwih gancang kana hard disk maya jeung avoids fragméntasi file;
  • alokasi memori dinamis. Nalika masang aplikasi tambahan, mémori bakal dialokasikeun sacara dinamis pikeun aranjeunna dugi ka ngahontal jumlah maksimal anu dialokasikeun.

Beuki mesin virtual dina server, beuki spasi maranéhna butuh nepi, sarta ogé merlukeun rojongan konstan lingkungan diperlukeun pikeun aplikasi Anjeun jalan.

Docker nyaéta software pikeun ngawangun aplikasi dumasar kana wadahna. Wadah sareng mesin virtual gaduh mangpaat anu sami, tapi jalanna béda. Wadah nyandak kirang spasi, sabab overuse leuwih sumberdaya dibagikeun tina sistem host ti VM, sabab Teu kawas VM, nyadiakeun virtualization dina tingkat OS, teu hardware. Pendekatan ieu nyayogikeun kirang tapak mémori, panyebaran langkung gancang, sareng skala anu langkung gampang.

wadahna nyadiakeun mékanisme leuwih efisien keur encapsulating aplikasi ku nyadiakeun interfaces diperlukeun pikeun sistem host. Fitur ieu ngamungkinkeun wadah pikeun ngabagi inti sistem, dimana masing-masing wadahna dijalankeun salaku prosés anu misah tina OS utama, anu ngagaduhan daérah mémori sorangan (spasi alamat virtual sorangan). Kusabab spasi alamat maya unggal wadahna sorangan, data milik wewengkon memori béda teu bisa dirobah.
OS asli pikeun Docker nyaéta Linux (Docker ogé tiasa dianggo dina Windows sareng MacOS), ngagunakeun kaunggulan utamina, anu ngamungkinkeun pikeun ngatur kernel pamisah. Peluncuran wadah Docker dina Windows bakal lumangsung di jero mesin virtual Linux, sabab wadahna ngabagi OS tina sistem host sareng OS utama pikeun aranjeunna nyaéta Linux.

Wadahna - kumaha jalanna?

wadah mangrupa abstraksi dina tingkat aplikasi nu ngagabungkeun kode jeung kagumantungan. Wadahna sok dijieun tina gambar, nambahkeun lapisan luhur nu bisa ditulis tur initializing rupa parameter. Kusabab wadahna gaduh lapisan nyerat sorangan sareng sadaya parobihan disimpen dina lapisan éta, sababaraha wadah tiasa ngabagi aksés kana gambar master anu sami.

Unggal wadahna tiasa dikonpigurasikeun ngaliwatan file dina proyék docker-compose anu kalebet dina solusi utama, docker-compose.yml. Aya anjeun tiasa nyetél rupa-rupa parameter sapertos nami wadahna, palabuhan, identifier, wates sumberdaya, katergantungan antara wadah anu sanés. Upami anjeun henteu netepkeun nami wadahna dina setélan, maka Docker bakal nyiptakeun wadah énggal unggal waktos, napelkeun nami sacara acak.

Nalika wadahna dimimitian tina gambar, Docker masang sistem file baca / tulis dina luhureun lapisan naon waé di handap. Ieu dimana sadaya prosés anu urang hoyongkeun wadahna Docker bakal dijalankeun.

Nalika Docker mimiti ngamimitian wadah, lapisan baca / tulis awal kosong. Nalika parobahan lumangsung, aranjeunna dilarapkeun ka lapisan éta; Contona, upami anjeun hoyong ngarobih file, file éta bakal disalin ti lapisan baca-hijina di handap ka lapisan baca-tulis.
Versi maca wungkul tina file bakal tetep aya, tapi ayeuna disumputkeun handapeun salinan. Jilid dipaké pikeun nyimpen data, paduli daur hirup wadahna. Jilid dimimitian nalika wadahna didamel.

Kumaha gambar pakait sareng wadahna?

Gambar - unsur utama pikeun tiap wadahna. Gambar dijieun tina Dockerfile ditambahkeun kana proyék jeung mangrupakeun susunan sistem file (lapisan) layered on luhureun silih tur dikelompokeun babarengan, sadia pikeun bacaan wungkul; Jumlah maksimum lapisan nyaéta 127.

Dina manah unggal gambar aya gambar dasar, anu dieusian ku paréntah FROM - titik éntri nalika ngahasilkeun gambar Dockerfile. Unggal lapisan mangrupakeun lapisan readonly sarta digambarkeun ku paréntah tunggal nu modifies sistem file, ditulis dina Dockerfile a.
Pikeun ngagabungkeun lapisan ieu kana gambar tunggal, Docker ngagunakeun Advanced multi-layered sistem file Uni (AuFS diwangun dina luhureun UnionFS), sahingga file béda jeung diréktori ti lapisan file béda pikeun transparan tumpang tindihna, nyieun hiji sistem file pakait.

Lapisan ngandung metadata nu ngidinan Anjeun pikeun nyimpen informasi patali ngeunaan unggal lapisan dina runtime jeung ngawangun waktos. Unggal lapisan ngandung tumbu ka lapisan salajengna, lamun lapisan teu boga tumbu, lajeng ieu lapisan paling luhur dina gambar.

Dockerfile tiasa ngandung paréntah sapertos:

  • FROM - titik éntri dina formasi gambar;
  • MAINTAINER - ngaran nu boga gambar;
  • RUN - palaksanaan paréntah salila assembly gambar;
  • ADD - nyalin file host kana gambar anyar, upami anjeun netepkeun file URL, Docker bakal ngaunduh kana diréktori anu ditangtukeun;
  • ENV - variabel lingkungan;
  • CMD - ngamimitian nyiptakeun wadah anyar dumasar kana gambar;
  • ENTRYPOINT - Paréntah dieksekusi nalika wadahna dimimitian.
  • WORKDIR mangrupikeun diréktori kerja pikeun ngalaksanakeun paréntah CMD.
  • USER - Nyetél UID pikeun wadah anu didamel tina gambar.
  • VOLUME - Mounts diréktori host kana wadahna.
  • EXPOSE mangrupikeun sakumpulan palabuhan anu didangukeun dina wadahna.

Kumaha carana UnionFS jalan?

UnionFS - sistem file tumpukan jasa (FS) pikeun Linux sareng FreeBSD. FS ieu ngalaksanakeun mékanisme copy-on-write (Copy-On-Write, COW). Unit kerja UnionFS mangrupakeun lapisan, unggal lapisan kudu dianggap salaku sistem file full-fledged misah jeung hirarki diréktori ti akar sorangan. UnionFS nyiptakeun union mount pikeun sistem file anu sanés sareng ngamungkinkeun anjeun ngahijikeun file sareng diréktori sacara transparan tina sistem file anu béda (disebut cabang) kana sistem file anu aya hubunganana, sacara transparan ka pangguna.

Eusi diréktori kalayan jalur anu sami bakal dipintonkeun babarengan dina hiji diréktori gabungan (dina rohangan ngaran anu sami) tina sistem file anu dihasilkeun.

UnionFS ngagabungkeun lapisan dumasar kana prinsip ieu:

  • salah sahiji lapisan janten lapisan tingkat luhur, lapisan kadua sareng lapisan salajengna janten lapisan tingkat handap;
  • objék lapisan bisa diasupan ka pamaké "ti luhur ka handap", i.e. lamun obyék dipénta dina lapisan "luhureun", eta dipulangkeun, paduli ayana hiji obyék kalawan ngaran anu sarua dina "handap" lapisan; disebutkeun, obyék lapisan "handap" balik; lamun obyék dipénta teu aya atawa aya, kasalahan "No file atawa diréktori misalna" balik;
  • Lapisan anu dianggo nyaéta "luhureun", nyaéta, sadaya tindakan pangguna pikeun ngarobih data ngan ukur ditingali dina lapisan tingkat luhur, tanpa mangaruhan eusi lapisan tingkat handap.

Docker mangrupikeun téknologi anu paling umum pikeun ngagunakeun wadah dina karya aplikasi. Eta geus jadi standar di wewengkon ieu, ngawangun dina cgroups na namespaces disadiakeun ku kernel Linux Ubuntu.

Docker ngamungkinkeun urang pikeun gancang nyebarkeun aplikasi sareng ngamangpaatkeun sistem file ku cara ngabagi kernel OS antara sadaya wadah, ngajalankeun salaku prosés OS anu misah.

sumber: www.habr.com

Tambahkeun komentar