VM a i ʻole Docker?

Pehea ʻoe e ʻike ai inā makemake ʻoe iā Docker a ʻaʻole kahi VM? Pono ʻoe e hoʻoholo i ka mea āu e makemake ai e hoʻokaʻawale. Inā makemake ʻoe e hoʻokaʻawale i kahi ʻōnaehana me nā kumuwaiwai i hoʻolaʻa ʻia a me nā lako virtual, a laila ʻo ka koho he VM. Inā pono ʻoe e hoʻokaʻawale i nā noi holo e like me nā kaʻina ʻōnaehana kaʻawale, pono ʻoe iā Docker.

No laila he aha ka ʻokoʻa ma waena o nā pahu Docker a me nā VM?

Mīkini uila (VM) he lolouila uila me nā mea uila a pau a me kahi diski paʻakikī ma luna o kahi OS kūʻokoʻa hou i hoʻokomo pū ʻia me nā mea hoʻokele uila, hoʻokele hoʻomanaʻo a me nā mea ʻē aʻe. ʻO ia hoʻi, loaʻa iā mākou kahi abstraction o nā lako kino e hiki ai iā mākou ke holo i nā kamepiula virtual he nui ma kahi kamepiula hoʻokahi.
Hiki i kahi VM i hoʻokomo ʻia ke lawe i ka lewa ma ka disk o kāu kamepiula ma nā ʻano like ʻole:

  • wahi paʻa paʻa paʻa paʻa, kahi e hiki ai ke komo wikiwiki i ka hard disk virtual a pale i ka ʻāpana faila;
  • hoʻokaʻawale hoʻomanaʻo ikaika. Ke kau ʻana i nā noi hou, e hoʻokaʻawale ʻia ka hoʻomanaʻo no lākou a hiki i ka nui o ka nui i hāʻawi ʻia iā ia.

ʻOi aku ka nui o nā mīkini virtual ma kēlā me kēia kikowaena, ʻoi aku ka nui o nā wahi a lākou e lawe ai, a koi pū kekahi i ke kākoʻo mau no ke kaiapuni i koi ʻia no kāu noi e holo.

Docker he lako polokalamu no ka hana ʻana i nā noi e pili ana i ka pahu. Loaʻa i nā pahu a me nā mīkini virtual nā pōmaikaʻi like, akā ʻokoʻa ka hana. Hoʻemi ka liʻiliʻi o ka wahi i nā pahu no ka mea... e hoʻohana hou i nā kumuwaiwai like ʻole o ka ʻōnaehana hoʻokipa ma mua o ka VM, no ka mea ʻAʻole like me VM, hāʻawi ia i ka virtualization ma ka pae OS, ʻaʻole ma ka pae ʻenehana. Loaʻa kēia ala i ka wāwae hoʻomanaʻo haʻahaʻa, hoʻolalela wikiwiki, a maʻalahi hoʻi ka scaling.

Hāʻawi ka pahu i kahi mīkini ʻoi aku ka maikaʻi no ka hoʻopili ʻana i nā noi ma o ka hāʻawi ʻana i nā pilina kūpono i ka ʻōnaehana host. Hāʻawi kēia hiʻohiʻona i nā ipu e kaʻana like i ke kumu o ka ʻōnaehana, me ka holo ʻana o kēlā me kēia pahu ma ke ʻano he kaʻina OS host kaʻawale i loaʻa i kāna mau wahi hoʻomanaʻo ponoʻī. No ka mea nona pono'i ka wahi kiko'ī o kēlā me kēia pahu, 'a'ole hiki ke ho'ololi 'ia ka 'ikepili no nā wahi ho'omana'o like 'ole.
ʻO ka OS maoli no Docker ʻo Linux (hiki ke hoʻohana ʻia ʻo Docker ma Windows a me MacOS), pono ia i kāna mau pono nui, e hiki ai iā ia ke hoʻonohonoho i ka mahele o ka kernel. E holo ana nā pahu Docker ma Windows i loko o kahi mīkini virtual e holo ana i Linux OS, no ka mea kaʻana like nā ipu i ka OS o ka ʻōnaehana hoʻokipa a ʻo ka OS nui no lākou ʻo Linux.

Container - pehea e hana ai?

Container he abstraction pae noi e hoʻohui i nā code a me nā hilinaʻi. Hoʻokumu mau ʻia nā pahu mai nā kiʻi, hoʻohui i kahi papa luna hiki ke kākau ʻia a hoʻomaka i nā ʻāpana like ʻole. No ka mea, loaʻa i kahi pahu kona papa kākau ponoʻī a mālama ʻia nā hoʻololi āpau i kēlā papa, hiki i nā pahu he nui ke kaʻana like i ke kiʻi haku like.

Hiki ke hoʻonohonoho ʻia kēlā me kēia pahu ma o kahi faila i ka papahana docker-compose i hoʻokomo ʻia i ka hopena nui - docker-compose.yml. Ma laila hiki iā ʻoe ke hoʻonohonoho i nā ʻāpana like ʻole e like me ka inoa pahu, nā awa, nā mea ʻike, nā palena waiwai, nā hilinaʻi ma waena o nā ipu ʻē aʻe. Inā ʻaʻole ʻoe e kuhikuhi i kahi inoa pahu i nā hoʻonohonoho, e hana ʻo Docker i kahi pahu hou i kēlā me kēia manawa, e hāʻawi ana i kahi inoa maʻamau.

Ke hoʻomaka ʻia kahi pahu mai kahi kiʻi, kau ʻo Docker i kahi faila heluhelu-kākau ma luna o nā papa ma lalo. ʻO kēia kahi e holo ai nā kaʻina hana a mākou e makemake ai i kā mākou pahu Docker.

I ka hoʻomaka mua ʻana o Docker i kahi pahu, ʻaʻohe kaʻawale ka papa heluhelu-kākau mua. Ke hoʻololi ʻia, hoʻohana ʻia lākou i kēia papa; no ka laʻana, inā makemake ʻoe e hoʻololi i kahi faila, e kope ʻia kēlā faila mai ka papa heluhelu-wale ma lalo a i ka papa heluhelu-kākau.
E mau ana ka mana heluhelu-wale o ka faila, akā ua hūnā ʻia ma lalo o ke kope. Hoʻohana ʻia nā volumes no ka mālama ʻana i ka ʻikepili, me ka nānā ʻole i ke ola o ka pahu. Hoʻomaka ʻia nā leo i ka wā i hana ʻia ai ka ipu.

Pehea ka pili o ke kiʻi i ka ipu?

Kiʻi - ka mea nui no kēlā me kēia pahu. Hana ʻia ke kiʻi mai kahi Dockerfile i hoʻohui ʻia i ka papahana a he pūʻulu o nā ʻōnaehana faila (nā papa) i hoʻopaʻa ʻia ma luna o kekahi a hui pū ʻia, heluhelu-wale; ʻO ka nui o nā papa he 127.

Aia ma ka puʻuwai o kēlā me kēia kiʻi kahi kiʻi kumu, i kuhikuhi ʻia e ke kauoha FROM - ka helu komo i ke kūkulu ʻana i ke kiʻi Dockerfile. ʻO kēlā me kēia papa he papa heluhelu wale nō a hōʻike ʻia e kahi kauoha hoʻokahi e hoʻololi i ka ʻōnaehana faila, i kākau ʻia ma kahi Dockerfile.
No ka hoʻohui ʻana i kēia mau papa i hoʻokahi kiʻi, hoʻohana ʻo Docker i ka ʻōnaehana file Advanced multi layered Union (Ua kūkulu ʻia ʻo AuFS ma luna o UnionFS), e ʻae ana i nā faila a me nā papa kuhikuhi mai nā papa waihona like ʻole e uhi ʻia me ka maopopo, e hana ana i kahi ʻōnaehana file cohesive.

Loaʻa i nā papa ka metadata e hiki ai iā ʻoe ke mālama i ka ʻike pili e pili ana i kēlā me kēia papa i ka wā holo a me ka manawa kūkulu. Loaʻa i kēlā me kēia papa kahi loulou i ka papa aʻe; inā ʻaʻohe loulou kahi papa, a laila ʻo ia ka papa luna loa o ke kiʻi.

Loaʻa paha i ka Dockerfile nā ​​kauoha e like me:

  • FROM — wahi komo i ka hana ʻana i kiʻi;
  • MAINTAINER - inoa o ka mea nona ke kiʻi;
  • RUN — hoʻokō kauoha i ka wā o ka hui kiʻi;
  • ADD - ke kope ʻana i ka faila host i kahi kiʻi hou; inā ʻoe e kuhikuhi i ka URL o ka faila, e hoʻoiho ʻo Docker iā ia i ka papa kuhikuhi i kuhikuhi ʻia;
  • ENV - nā hoʻololi kaiapuni;
  • CMD - hoʻomaka i ka hana ʻana i kahi pahu hou e pili ana i ke kiʻi;
  • ENTRYPOINT - hoʻokō ʻia ke kauoha i ka wā e hoʻomaka ai ka ipu.
  • ʻO WORKDIR ka papa kuhikuhi hana no ka hoʻokō ʻana i ke kauoha CMD.
  • USER - hoʻonohonoho i ka UID no ka ipu i hana ʻia ma muli o ke kiʻi.
  • VOLUME - kau i ka papa kuhikuhi host i loko o ka ipu.
  • ʻO EXPOSE kahi pūʻulu o nā awa i hoʻolohe ʻia i loko o ka ipu.

Pehea e hana ai ʻo UnionFS?

UnionFS - ʻōnaehana waihona waihona (FS) no Linux a me FreeBSD. Hoʻokomo kēia FS i kahi hana kope-ma-kākau (Copy-On-Write, COW). ʻO ka ʻāpana hana o UnionFS he papa; pono e noʻonoʻo ʻia kēlā me kēia papa ma ke ʻano he ʻōnaehana faila piha kaʻawale me kahi hierarchy o nā papa kuhikuhi mai ke kumu ponoʻī. Hoʻokumu ʻo UnionFS i kahi mauna hui no nā ʻōnaehana faila ʻē aʻe a hiki i nā faila a me nā papa kuhikuhi mai nā ʻōnaehana faila like ʻole (i kapa ʻia ʻo forks) e hoʻohui ʻia i hoʻokahi ʻōnaehana file coherent, maopopo i ka mea hoʻohana.

E ʻike pū ʻia nā ʻike o nā papa kuhikuhi me nā ala like i hoʻokahi papa kuhikuhi i hoʻohui ʻia (ma kahi inoa inoa hoʻokahi) o ka ʻōnaehana faila.

Hoʻohui ʻo UnionFS i nā papa e pili ana i kēia mau loina:

  • lilo kekahi o nā papa i ka papa kiʻekiʻe, ʻo ka lua a me nā papa hope e lilo i mau papa haʻahaʻa;
  • Loaʻa nā mea papa i ka mea hoʻohana "mai luna a lalo", i.e. inā aia ka mea i noi ʻia ma ka papa "luna", e hoʻihoʻi ʻia, me ka nānā ʻole i ke alo o kahi mea me ka inoa like ma ka papa "lalo"; i ʻole e hoʻihoʻi ʻia ka mea o ka papa "lalo"; inā ʻaʻole ma laila a ʻaʻole ma laila ka mea i noi ʻia, ua hoʻihoʻi ʻia ka hewa "ʻAʻohe faila a papa kuhikuhi";
  • ʻO ka papa hana ka "luna", ʻo ia hoʻi, ʻike ʻia nā hana a pau o ka mea hoʻohana e hoʻololi i ka ʻikepili ma ka papa luna kiʻekiʻe, me ka ʻole o ka hoʻopili ʻana i nā mea o nā papa o nā pae haʻahaʻa.

ʻO Docker ka ʻenehana maʻamau no ka hoʻohana ʻana i nā ipu e holo i nā noi. Ua lilo ia i mea maʻamau i ke kula, e kūkulu ana ma luna o nā cgroups a me nā namespaces i hāʻawi ʻia e ka Linux kernel.

Hāʻawi ʻo Docker iā mākou e hoʻolalelale wikiwiki i nā noi a hoʻohana maikaʻi i ka ʻōnaehana faila ma ka hoʻokaʻawale ʻana i ka kernel OS ma waena o nā pahu āpau, e holo ana ma ke ʻano he kaʻina OS kaʻawale.

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka