Kumvetsetsa Docker

Ndakhala ndikugwiritsa ntchito Docker kwa miyezi ingapo tsopano kukonza njira zopangira / kutumiza ma projekiti apa intaneti. Ndimapereka owerenga a Habrakhabr kumasulira kwa nkhani yoyambira yokhudza docker - "Kumvetsetsa docker".

Kodi docker ndi chiyani?

Docker ndi nsanja yotseguka yopanga, kutumiza, ndi kugwiritsa ntchito mapulogalamu. Docker idapangidwa kuti ipereke mapulogalamu anu mwachangu. Ndi docker, mutha kutsitsa pulogalamu yanu kuchokera kuzinthu zanu ndikuwona zomanga ngati ntchito yoyendetsedwa. Docker imakuthandizani kutumiza nambala yanu mwachangu, kuyesa mwachangu, kutumiza mapulogalamu mwachangu, ndikuchepetsa nthawi pakati pa kulemba manambala ndi manambala othamanga. Docker amachita izi kudzera papulatifomu yopepuka yachidebe chopepuka, pogwiritsa ntchito njira ndi zofunikira zomwe zimakuthandizani kuyang'anira ndikusunga mapulogalamu anu.

Pakatikati pake, docker imakulolani kuti mugwiritse ntchito pafupifupi pulogalamu iliyonse, yokhazikika m'chidebe. Kudzipatula kotetezedwa kumakupatsani mwayi woyendetsa zotengera zambiri pagulu lomwelo nthawi imodzi. Chikhalidwe chopepuka cha chidebecho, chomwe chimayenda popanda cholemetsa chowonjezera cha hypervisor, chimakupatsani mwayi wopeza zambiri pazida zanu.

Chidebe virtualization nsanja ndi zida zitha kukhala zothandiza pazifukwa izi:

  • kulongedza pulogalamu yanu (ndi zida zomwe mumagwiritsa ntchito) muzotengera za docker;
  • kugawa ndi kutumiza zotengerazi kumagulu anu kuti azitukuka ndikuyesedwa;
  • kuyika zotengera izi patsamba lanu lopangira, m'malo opangira ma data komanso pamtambo.

Kodi docker ndingagwiritse ntchito chiyani?

Sindikizani mapulogalamu anu mwachangu

Docker ndiyabwino pokonzekera kuzungulira kwachitukuko. Docker imalola opanga kuyendetsa zotengera zakomweko ndi mapulogalamu ndi ntchito. Zomwe pambuyo pake zimakulolani kuti muphatikize ndi njira yophatikizira mosalekeza ndi kutumizirana ntchito.

Mwachitsanzo, opanga anu amalemba khodi kwanuko ndikugawana zotukuka zawo (zithunzi za Docker) ndi anzanu. Akakonzeka, amakankhira ma code ndi zotengera kumalo oyesera ndikuyesa mayeso oyenera. Kuchokera pamalo oyesera, amatha kutumiza ma code ndi zithunzi kuti apange.

Kuyika kosavuta komanso kufutukuka

Pulatifomu yokhazikitsidwa ndi docker imapangitsa kukhala kosavuta kunyamula katundu wanu. Zotengera za Docker zimatha kuthamanga pamakina akomweko, kaya enieni kapena pamakina apakatikati pa data, kapena pamtambo.

Kusunthika komanso kupepuka kwa docker kumapangitsa kukhala kosavuta kuwongolera ntchito yanu. Mutha kugwiritsa ntchito docker kuyika kapena kutseka pulogalamu kapena ntchito zanu. Kuthamanga kwa docker kumalola kuti izi zichitike pafupi nthawi yeniyeni.

Katundu wapamwamba komanso wolipira zambiri

Docker ndiyopepuka komanso yachangu. Amapereka njira yokhazikika, yotsika mtengo kusiyana ndi makina enieni opangidwa ndi hypervisor. Ndizothandiza makamaka m'malo okhala ndi katundu wambiri, mwachitsanzo, popanga mtambo wanu kapena nsanja-monga-ntchito. Koma ndizothandizanso pamapulogalamu ang'onoang'ono komanso apakatikati mukafuna kupeza zambiri kuchokera pazomwe muli nazo.

Main Docker Components

Docker imakhala ndi zigawo ziwiri zazikulu:

  • Docker: nsanja yotseguka yowonekera;
  • Docker Hub: nsanja yathu-monga-ntchito yogawa ndikuwongolera zotengera za Docker.

Zindikirani! Docker imagawidwa pansi pa layisensi ya Apache 2.0.

Docker zomangamanga

Docker amagwiritsa ntchito kasitomala-server zomangamanga. Makasitomala a Docker amalumikizana ndi daemon ya Docker, yomwe imatenga zovuta kupanga, kuyendetsa, ndikugawa zotengera zanu. Onse kasitomala ndi seva amatha kuthamanga pamakina omwewo, mutha kulumikiza kasitomala ku daemon yakutali ya docker. Makasitomala ndi seva amalumikizana kudzera pa socket kapena RESTful API.

Kumvetsetsa Docker

Docker daemon

Monga momwe zikuwonekera pachithunzichi, daemon imagwira ntchito pamakina ochitira. Wogwiritsa ntchito samalumikizana ndi seva mwachindunji, koma amagwiritsa ntchito kasitomala pa izi.

Docker kasitomala

Makasitomala a Docker, pulogalamu ya docker, ndiye mawonekedwe akulu ku Docker. Imalandila malamulo kuchokera kwa wogwiritsa ntchito ndikulumikizana ndi docker daemon.

Mkati docker

Kuti mumvetse zomwe docker ili, muyenera kudziwa za zigawo zitatu:

  • zithunzi
  • kaundula
  • muli

Zithunzi

Chithunzi cha Docker ndi template yowerengera yokha. Mwachitsanzo, chithunzicho chikhoza kukhala ndi Ubuntu opaleshoni dongosolo ndi Apache ndi ntchito pa izo. Zithunzi zimagwiritsidwa ntchito kupanga zotengera. Docker imapangitsa kukhala kosavuta kupanga zithunzi zatsopano, kusintha zomwe zilipo kale, kapena mutha kutsitsa zithunzi zopangidwa ndi anthu ena. Zithunzi ndi zigawo za docker build.

Kaundula

Registry ya Docker imasunga zithunzi. Pali zolembera zapagulu komanso zapadera zomwe mutha kutsitsa kapena kutsitsa zithunzi. Registry yapagulu ya Docker ndi Docker likulu. Pali zithunzi zambiri zomwe zasungidwa pamenepo. Monga mukudziwa, zithunzi zitha kupangidwa ndi inu kapena mutha kugwiritsa ntchito zithunzi zopangidwa ndi ena. Registries ndi gawo logawa.

Zotengera

Zotengera ndizofanana ndi zolemba. Zotengera zili ndi zonse zomwe pulogalamuyo ikufunika kuti igwire. Chidebe chilichonse chimapangidwa kuchokera ku chithunzi. Zotengera zimatha kupangidwa, kuyambika, kuyimitsidwa, kusamutsidwa kapena kuchotsedwa. Chidebe chilichonse chili chodzipatula ndipo chimapereka nsanja yotetezeka yogwiritsira ntchito. Zotengera ndi zigawo za ntchito.

Ndiye Docker amagwira ntchito bwanji?

Mpaka pano tikudziwa kuti:

  • tikhoza kupanga zithunzi zomwe mapulogalamu athu ali;
  • tikhoza kupanga zotengera kuchokera pazithunzi kuti tigwiritse ntchito;
  • Titha kugawa zithunzi kudzera pa Docker Hub kapena zolembera zina.

Tiyeni tiwone momwe zigawozi zikugwirizanirana.

Kodi chithunzicho chimagwira ntchito bwanji?

Tikudziwa kale kuti chithunzi ndi template yowerengera yokha pomwe chotengera chimapangidwa. Chithunzi chilichonse chimakhala ndi magawo angapo. Docker amagwiritsa ntchito Union file system kuphatikiza magawo awa kukhala chithunzi chimodzi. Mafayilo a Union amalola mafayilo ndi maupangiri ochokera kumafayilo osiyanasiyana (nthambi zosiyanasiyana) kuti azilumikizana mowonekera, ndikupanga fayilo yogwirizana.

Chimodzi mwazifukwa zomwe docker ndi yopepuka chifukwa imagwiritsa ntchito zigawo ngati izi. Mukasintha chithunzicho, monga kukonzanso pulogalamu, gawo latsopano limapangidwa. Chifukwa chake, osasintha chithunzi chonsecho kapena kuchimanganso, monga momwe mungachitire ndi makina owoneka bwino, osanjikiza okhawo amawonjezedwa kapena kusinthidwa. Ndipo simukuyenera kugawira chithunzi chonse chatsopano, zosinthidwa zokha zimagawidwa, zomwe zimapangitsa kuti zikhale zosavuta komanso zofulumira kugawa zithunzi.

Pamtima pa chithunzi chilichonse pali chithunzi choyambira. Mwachitsanzo, ubuntu, chithunzi choyambira cha Ubuntu, kapena fedora, chithunzi choyambira cha kugawa kwa Fedora. Mukhozanso kugwiritsa ntchito zithunzi ngati maziko opangira zithunzi zatsopano. Mwachitsanzo, ngati muli ndi chithunzi cha apache, mutha kuchigwiritsa ntchito ngati chithunzi choyambira pamapulogalamu anu apa intaneti.

Zindikirani! Docker nthawi zambiri amakoka zithunzi kuchokera ku registry ya Docker Hub.

Zithunzi za Docker zitha kupangidwa kuchokera pazithunzi zoyambira izi; timatcha njira zopangira zithunzi izi malangizo. Langizo lirilonse limapanga chithunzi chatsopano kapena mlingo. Malangizowo adzakhala awa:

  • thamangani lamulo
  • kuwonjezera fayilo kapena chikwatu
  • kupanga kusintha kwa chilengedwe
  • malangizo a zomwe muyenera kuyendetsa pamene chidebe cha chithunzichi chatsegulidwa

Malangizowa amasungidwa mufayilo Dockerfile. Docker amawerenga izi Dockerfile, mukamamanga chithunzicho, tsatirani malangizowa ndikubwezeretsanso chithunzi chomaliza.

Kodi registry ya docker imagwira ntchito bwanji?

Registry ndi malo osungira zithunzi za docker. Chithunzicho chikapangidwa, mutha kuchisindikiza ku registry yapagulu ya Docker Hub kapena ku registry yanu.

Ndi kasitomala wa docker, mutha kusaka zithunzi zomwe zasindikizidwa kale ndikuzitsitsa kumakina anu a docker kuti mupange zotengera.

Docker Hub imapereka nkhokwe zapagulu komanso zachinsinsi. Kusaka ndi kutsitsa zithunzi kuchokera kumalo osungirako anthu kumapezeka kwa aliyense. Zomwe zili muzosungirako zachinsinsi sizikuphatikizidwa muzotsatira. Ndipo inu nokha ndi ogwiritsa ntchito anu mungalandire zithunzizi ndikupanga zotengera kuchokera kwa iwo.

Kodi chotengera chimagwira ntchito bwanji?

Chidebe chimakhala ndi makina ogwiritsira ntchito, mafayilo ogwiritsira ntchito, ndi metadata. Monga tikudziwira, chidebe chilichonse chimapangidwa kuchokera ku chithunzi. Chithunzichi chimauza docker zomwe zili mu chidebecho, njira yoyambira, chidebecho chikayamba, ndi zina zosintha. Chithunzi cha Docker ndichongowerengedwa. Docker ikayamba chidebe, imapanga chowerengera / kulemba pamwamba pa chithunzicho (pogwiritsa ntchito fayilo ya mgwirizano monga tanenera kale) momwe ntchitoyo ingayendetsedwe.

Chimachitika ndi chiyani chidebecho chikayamba?

Kapena kugwiritsa ntchito pulogalamu docker, kapena kugwiritsa ntchito RESTful API, kasitomala wa docker amauza docker daemon kuti ayambitse chidebecho.

$ sudo docker run -i -t ubuntu /bin/bash

Tiyeni tione lamulo ili. Wothandizirayo amayambitsidwa pogwiritsa ntchito lamulo docker, ndi njira run, yomwe imati chidebe chatsopano chidzatsegulidwa. Zofunikira zochepa kuti muyendetse chidebe ndi izi:

  • chithunzi chomwe mungagwiritse ntchito popanga chidebecho. Kwa ife ubuntu
  • lamulo lomwe mukufuna kuthamanga pamene chidebe chayamba. Kwa ife /bin/bash

Kodi chimachitika ndi chiyani pansi pa hood tikamayendetsa lamulo ili?

Docker, mwadongosolo, amachita izi:

  • tsitsani chithunzi cha ubuntu: docker imayang'ana kuti chithunzi chilipo ubuntu pamakina akomweko, ndipo ngati palibe, tsitsani kuchokera Docker likulu. Ngati pali chithunzi, chimagwiritsa ntchito kupanga chidebe;
  • amapanga chotengera: chithunzicho chikalandiridwa, docker amagwiritsa ntchito kupanga chidebe;
  • imayambitsa fayilo ndikuyika mulingo wowerengera-wokha: chidebecho chimapangidwa mu fayilo yamafayilo ndipo chithunzicho chikuwonjezeredwa pamlingo wowerengera;
  • imayambitsa netiweki/mlatho: imapanga mawonekedwe a netiweki omwe amalola docker kuyankhulana ndi makina osungira;
  • Kukhazikitsa adilesi ya IP: amapeza ndikuyika adilesi;
  • Imayamba ndondomeko yosankhidwa: ikuyambitsa pulogalamu yanu;
  • Imakonza ndikutulutsa zotuluka kuchokera ku pulogalamu yanu: imalumikiza ndikulowetsa zolowera, zotulutsa, ndi zolakwika za pulogalamu yanu kuti muwone momwe pulogalamu yanu ikuyendera.

Tsopano muli ndi chidebe chogwirira ntchito. Mutha kuyang'anira chidebe chanu, kulumikizana ndi pulogalamu yanu. Mukaganiza zosiya kugwiritsa ntchito, chotsani chidebecho.

matekinoloje ntchito

Docker yalembedwa mu Go ndipo imagwiritsa ntchito zina za Linux kernel kuti ikwaniritse zomwe zili pamwambapa.

Malo a mayina

Docker amagwiritsa ntchito ukadaulo namespaces kukonza malo ogwirira ntchito akutali, omwe timawatcha kuti makontena. Tikayambitsa chidebe, docker imapanga malo a mayina a chidebecho.

Izi zimapanga gawo lapadera, ndi gawo lililonse la chidebe lomwe likuyenda mumalo akeake komanso osapeza njira yakunja.

Mndandanda wamalo ena omwe docker amagwiritsa ntchito:

  • pid: kudzipatula ndondomeko;
  • ukonde: kuyang'anira zolumikizira netiweki;
  • ipc: kuyang'anira IPC zothandizira. (ICP: InterProccess Communication);
  • mnt: kusamalira malo okwera;
  • UTC: kupatula mtundu wa kernel ndi control version (UTC: Unix timesharing system).

Magulu owongolera

Docker amagwiritsanso ntchito ukadaulo cgroups kapena magulu olamulira. Mfungulo yoyendetsera pulogalamu mwapayokha ndikungopatsa pulogalamuyo zinthu zomwe mukufuna kupereka. Izi zimapangitsa kuti zotengerazo zikhale zoyandikana bwino. Magulu owongolera amakulolani kugawana zida zomwe zilipo ndipo, ngati kuli kofunikira, ikani malire ndi zoletsa. Mwachitsanzo, chepetsani kuchuluka kwa kukumbukira kwa chidebecho.

Union File System

Union File Sysem kapena UnionFS ndi fayilo yomwe imagwira ntchito popanga zigawo, kupangitsa kuti ikhale yopepuka komanso yachangu. Docker amagwiritsa ntchito UnionFS kupanga midadada yomwe chidebecho chimamangidwa. Docker amatha kugwiritsa ntchito mitundu ingapo ya UnionFS kuphatikiza: AUFS, btrfs, vfs ndi DeviceMapper.

Mafomu a Container

Docker amaphatikiza zinthuzi kukhala chomata chomwe timachitcha kuti chidebe. Mtundu wokhazikika umatchedwa libcontainer. Docker imathandiziranso mawonekedwe a chidebe chachikhalidwe pa Linux pogwiritsa ntchito Mtengo wa LXC. M'tsogolomu, Docker ikhoza kuthandizira mafomu ena otengera. Mwachitsanzo, kuphatikiza ndi BSD Jails kapena Solaris Zones.

Source: www.habr.com

Kuwonjezera ndemanga