Kunzwisisa Docker

Ndanga ndichishandisa Docker kwemwedzi yakati wandei ikozvino kuronga kuvandudza / kuburitsa maitiro emawebhu mapurojekiti. Ini ndinopa vaverengi veHabrakhabr dudziro yechinyorwa chekutanga nezve docker - "Kunzwisisa docker".

Chii chinonzi docker?

Docker ipuratifomu yakavhurika yekuvandudza, kuendesa, uye kushanda maapplication. Docker yakagadzirirwa kuendesa zvikumbiro zvako nekukurumidza. Ne docker, unogona kudhindisa application yako kubva kune yako masikirwo uye kubata zvivakwa seyakagadziriswa application. Docker inokubatsira kutumira kodhi yako nekukurumidza, kuyedza nekukurumidza, kutumira zvikumbiro nekukurumidza, uye kuderedza nguva pakati pekunyora kodhi uye inomhanya kodhi. Docker inoita izvi kuburikidza neyakareruka mudziyo virtualization papuratifomu, uchishandisa maitiro uye zvishandiso zvinokubatsira iwe kubata uye kugamuchira zvikumbiro zvako.

Papakati payo, docker inokutendera kuti umhanye chero application, yakachengeteka yakasarudzika mumudziyo. Kuzviparadzanisa nevamwe kunobvumira iwe kuti umhanye midziyo yakawanda pane imwechete saiti panguva imwe chete. Iyo yakareruka chimiro chemudziyo, iyo inomhanya isina yakawedzera mutoro we hypervisor, inokutendera iwe kuti uwane zvakawanda kubva kune yako hardware.

Iyo mudziyo virtualization chikuva uye maturusi anogona kubatsira mune anotevera kesi:

  • kurongedza application yako (uye zvinhu zvaunoshandisa) mumidziyo yedocker;
  • kugovera uye kuendeswa kwemidziyo iyi kuzvikwata zvako zvekusimudzira uye kuyedzwa;
  • kuisa midziyo iyi panzvimbo dzako dzekugadzira, zvese munzvimbo dzedata uye mumakore.

Chii chandingashandise docker?

Kurumidza buritsa zvikumbiro zvako

Docker yakanakira kuronga kutenderera kwekusimudzira. Docker inobvumira vanogadzira kumhanyisa midziyo yemuno nemaapplication nemasevhisi. Izvo zvinozobvumira iwe kuti ubatanidze nemaitiro ekuenderera mberi kwekubatanidza uye kutumira mafambiro.

Semuenzaniso, vagadziri vako vanonyora kodhi munharaunda uye vagovane yavo yekuvandudza stack (seti yeDocker mifananidzo) nevamwe vavanoshanda navo. Kana vagadzirira, vanosundira kodhi uye midziyo kunzvimbo yekuyedza uye vanomhanyisa chero bvunzo dzinodiwa. Kubva panzvimbo yekuedza, vanogona kutumira kodhi nemifananidzo kune kugadzirwa.

Zviri nyore kuisa uye kubhedhenura

Iyo docker mudziyo-yakavakirwa chikuva inoita kuti zvive nyore kutakura mubhadharo wako. Docker midziyo inogona kumhanya pamushini wako wepanzvimbo, ingave chaiyo kana pamushini chaiwo uri munzvimbo yedata, kana mugore.

Iyo inotakurika uye isina huremu hunhu hwedocker inoita kuti zvive nyore kubata zvine simba mutoro webasa rako. Unogona kushandisa docker kuendesa kana kudzima application yako kana masevhisi. Iyo yekumhanyisa yedocker inobvumira izvi kuti zviitwe mukati menguva chaiyo.

Mitoro yepamusoro uye mitoro yakawanda

Docker ikareruka uye inokurumidza. Inopa yakagadzikana, inodhura-inoshanda imwe nzira kune hypervisor-yakavakirwa virtual michina. Inonyanya kukosha munzvimbo dzakaremerwa, semuenzaniso, paunenge uchigadzira yako wega gore kana chikuva-sebasa. Asi zvakare inobatsira kune zvidiki uye zvepakati-saizi zvikumbiro kana iwe uchida kuwana zvakawanda kubva kune zviwanikwa zvaunazvo.

Main Docker Zvikamu

Docker ine zvikamu zviviri zvikuru:

  • Docker: yakavhurika sosi virtualization chikuva;
  • Docker Hub: Yedu chikuva-se-se-sevhisi yekugovera uye kubata Docker midziyo.

Cherechedza! Docker inogoverwa pasi peiyo Apache 2.0 rezinesi.

Docker architecture

Docker inoshandisa mutengi-server architecture. Mutengi weDocker anotaurirana neDocker daemon, iyo inotora mutoro wekugadzira, kumhanya, uye kugovera midziyo yako. Vese mutengi uye sevha vanogona kumhanya pane imwecheteyo system, unogona kubatanidza mutengi kune iri kure docker daemon. Mutengi uye sevha vanotaurirana kuburikidza nesoketi kana RESTful API.

Kunzwisisa Docker

Docker daemon

Sezvinoratidzwa mumufananidzo, daemon inomhanya pamushini wekutambira. Mushandisi haadyidzane nesevha zvakananga, asi anoshandisa mutengi kune izvi.

Docker mutengi

Iyo Docker mutengi, iyo docker chirongwa, ndiyo huru interface kuDocker. Iyo inogamuchira mirairo kubva kumushandisi uye inodyidzana neiyo docker daemon.

Inside docker

Kuti unzwisise kuti chii chine docker, unofanirwa kuziva nezvezvinhu zvitatu:

  • mifananidzo
  • registry
  • midziyo

Mifananidzo

Iyo Docker mufananidzo ndeye yekuverenga-chete template. Semuenzaniso, mufananidzo wacho unogona kunge uine Ubuntu unoshanda sisitimu neApache uye application pairi. Mifananidzo inoshandiswa kugadzira midziyo. Docker inoita kuti zvive nyore kugadzira mifananidzo mitsva, kugadzirisa iripo, kana unogona kudhawunirodha mifananidzo yakagadzirwa nevamwe vanhu. Mifananidzo zvikamu zvedocker kuvaka.

Registry

Iyo Docker registry inochengetedza mifananidzo. Kune ruzhinji uye zvakavanzika registries kubva kwaunogona kudhawunirodha kana kurodha mifananidzo. Iyo yeruzhinji Docker registry ndeye Docker hub. Pane muunganidzwa wakakura wemifananidzo wakachengetwa ipapo. Sezvaunoziva, mifananidzo inogona kugadzirwa newe kana iwe unogona kushandisa mifananidzo yakagadzirwa nevamwe. Registries chikamu chekugovera.

Containers

Containers yakafanana nedhairekitori. Mumidziyo ine zvese zvinodiwa kuti application ishande. Chigadziko chimwe nechimwe chinogadzirwa kubva pamufananidzo. Midziyo inogona kugadzirwa, kutanga, kumira, kutamiswa kana kudzimwa. Chigadziko chega chega chakasarudzika uye chinopa yakachengeteka chikuva chekushandisa. Zvirongo zvikamu zvebasa.

Saka Docker inoshanda sei?

Kusvika ikozvino tinoziva kuti:

  • tinogona kugadzira mifananidzo umo maapplication edu arimo;
  • isu tinogona kugadzira midziyo kubva pamifananidzo kuti timhanye maapplication;
  • Tinogona kugovera mifananidzo kuburikidza neDocker Hub kana imwe mufananidzo registry.

Ngationei kuti zvikamu izvi zvinopindirana sei.

Mufananidzo wacho unoshanda sei?

Isu tinotoziva kuti mufananidzo ndeye yekuverenga-chete template kubva iyo mudziyo unogadzirwa. Mufananidzo wega wega une seti yemazinga. Docker inoshandisa union file system kubatanidza mazinga aya kuita mufananidzo mumwe. Union faira system inobvumira mafaera uye madhairekitori kubva kune akasiyana faira masisitimu (akasiyana matavi) kuti apindire pachena, achigadzira inowirirana faira system.

Chimwe chezvikonzero nei docker ikareruka imhaka yekuti inoshandisa matinji akadai. Paunoshandura chifananidzo, sekuvandudza chishandiso, dhizaini nyowani inogadzirwa. Saka, pasina kutsiva iyo yese mufananidzo kana kuivaka patsva, sezvaungaite nemuchina chaiwo, iyo chete layer inowedzerwa kana kuvandudzwa. Uye iwe haufanirwe kugovera iyo yose mufananidzo mutsva, iyo yekuvandudza chete ndiyo inogoverwa, zvichiita kuti zvive nyore uye nekukurumidza kugovera mifananidzo.

Pamwoyo wemufananidzo wega wega mufananidzo wekutanga. Semuenzaniso, ubuntu, iyo base image yeUbuntu, kana fedora, iyo base image yekugovera Fedora. Iwe unogona zvakare kushandisa mifananidzo sehwaro hwekugadzira mifananidzo mitsva. Semuenzaniso, kana uine mufananidzo weapache, unogona kuushandisa semufananidzo wekutanga wewebhu yako yekushandisa.

Cherechedza! Docker kazhinji inodhonza mifananidzo kubva kuDocker Hub registry.

Docker mifananidzo inogona kugadzirwa kubva kune iyi base mifananidzo; isu tinodaidza matanho ekugadzira iyi mifananidzo mirairo. Murairo wega wega unogadzira mufananidzo mutsva kana nhanho. Mirayiridzo ichave inotevera:

  • run command
  • kuwedzera faira kana dhairekitori
  • kugadzira shanduko yemamiriro ekunze
  • mirairo yezvekuita kana chigaba chemufananidzo uyu chavhurwa

Iyi mirairo inochengetwa mufaira Dockerfile. Docker anoverenga izvi Dockerfile, paunovaka chifananidzo, shandisa mirairo iyi uye unodzorera mufananidzo wekupedzisira.

Docker registry inoshanda sei?

Iyo registry inzvimbo yekuchengetedza mifananidzo yedocker. Kana mufananidzo wacho wagadzirwa, unogona kuushambadza kune yeruzhinji Docker Hub registry kana kune yako registry.

Nemutengi wedocker, unogona kutsvaga mifananidzo yakatoburitswa uye kudhawunirodha kumushini wako wedocker kugadzira midziyo.

Docker Hub inopa yeruzhinji uye yakavanzika mifananidzo repositori. Kutsvaga uye kudhawunirodha mifananidzo kubva kuruzhinji repositori inowanikwa kune wese munhu. Zviri mukati mezvichengetedzo zvepachivande hazvina kuisirwa mumibairo yekutsvaga. Uye iwe chete nevashandisi vako munogona kugamuchira iyi mifananidzo uye kugadzira midziyo kubva kwavari.

Ko mudziyo unoshanda sei?

Mudziyo une sisitimu yekushandisa, mafaera emushandisi, uye metadata. Sezvatinoziva, mudziyo wega wega unogadzirwa kubva pamufananidzo. Uyu mufananidzo unoudza docker zviri mumudziyo, maitiro ekutanga, kana mudziyo watanga, uye imwe data yekumisikidza. Mufananidzo weDocker unoverengwa-chete. Kana docker yatanga mudziyo, inogadzira chinyorwa chekuverenga / kunyora pamusoro pemufananidzo (uchishandisa iyo yemubatanidzwa faira system sezvambotaurwa) umo application inogona kuitwa.

Chii chinoitika kana mudziyo ukatanga?

Kana kushandisa purogiramu docker, kana kushandisa iyo RESTful API, mutengi wedocker anoudza docker daemon kuti atange mudziyo.

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

Ngatitarisei murairo uyu. Mutengi anotangwa achishandisa murairo docker, ine sarudzo run, iyo inoti pachaparurwa mudziyo mutsva. Izvo zvishoma zvinodikanwa kuti umhanye mudziyo ndeaya anotevera maitiro:

  • mufananidzo upi wokushandisa kugadzira mudziyo. Munyaya yedu ubuntu
  • murairo waunoda kumhanya kana mudziyo watangwa. Kwatiri /bin/bash

Chii chinoitika pasi pehodhi patinomhanyisa uyu murairo?

Docker, mukurongeka, anoita zvinotevera:

  • download mufananidzo we ubuntu: docker inotarisa kuwanikwa kwemufananidzo ubuntu pamushini wepano, uye kana usipo, wobva wadhawunirodha kubva Docker hub. Kana paine mufananidzo, inoushandisa kugadzira mudziyo;
  • inogadzira mudziyo: kana mufananidzo wacho wagamuchirwa, docker inoshandisa iyo kugadzira mudziyo;
  • inotanga iyo faira system uye inoisa iyo yekuverenga-chete nhanho: mudziyo unogadzirwa mufaira system uye mufananidzo unowedzerwa kune yekuverenga-chete nhanho;
  • inotanga network/bhiriji: inogadzira network network inobvumira docker kutaurirana nemuchina wekutambira;
  • Kuseta IP kero: anowana uye anoseta kero;
  • Inotanga nzira yakatarwa: inotangisa application yako;
  • Maitiro uye anoburitsa zvinobuda kubva kune yako application: inobatanidza nekuisa zvakajairwa kupinza, kubuda, uye kukanganisa kwechishandiso chako kuitira kuti utarise mafambiro ari kuita application yako.

Iwe zvino une mudziyo unoshanda. Iwe unogona kubata mudziyo wako, kupindirana nechishandiso chako. Paunosarudza kumisa application, bvisa mudziyo.

Technologies yakashandiswa

Docker yakanyorwa muGo uye inoshandisa mamwe maficha eLinux kernel kuita zviri pamusoro apa.

Namespaces

Docker inoshandisa tekinoroji namespaces kuronga nzvimbo dzekushandira dziri dzoga, dzatinodaidza kuti midziyo. Kana isu tatanga mudziyo, docker inogadzira seti yemazita eiyo mudziyo.

Izvi zvinogadzira yakasarudzika layer, ine yega yega yemudziyo inomhanya munzvimbo yayo yezita uye isina kuwana kune yekunze system.

Rondedzero yedzimwe nzvimbo dzemazita dzinoshandiswa nedocker:

  • pid: kuparadzanisa nzira;
  • mambure: yekutarisa network interfaces;
  • ipc: kubata IPC zviwanikwa. (ICP: InterProccess Communication);
  • mnt: kugadzirisa makomo;
  • utc: kuparadzanisa kernel uye kutonga shanduro chizvarwa (UTC: Unix timesharing system).

Kudzora mapoka

Docker inoshandisawo tekinoroji cgroups kana kudzora mapoka. Kiyi yekumhanyisa application uri wega ndeyekupa iyo application chete zviwanikwa zvaunoda kupa. Izvi zvinovimbisa kuti midziyo ichava vavakidzani vakanaka. Mapoka ekudzora anotendera iwe kugovera zviripo hardware zviwanikwa uye, kana zvichidikanwa, isa miganhu uye zvirambidzo. Semuyenzaniso, dzikamisa huwandu hunobvira hwendangariro yemudziyo.

Union File System

Union File Sysem kana UnionFS ifaira sisitimu inoshanda nekugadzira matara, ichiita kuti ive yakareruka uye nekukurumidza. Docker inoshandisa UnionFS kugadzira zvidhinha kubva pakavakirwa mudziyo. Docker inogona kushandisa akati wandei eUnionFS anosanganisira: AUFS, btrfs, vfs uye DeviceMapper.

Mafomu emudziyo

Docker inosanganisa zvinhu izvi kuita wrapper yatinodaidza kuti mudziyo fomati. The default format inonzi libcontainer. Docker zvakare inotsigira iyo yechinyakare mudziyo fomati paLinux uchishandisa LXC. Mune ramangwana, Docker inogona kutsigira mamwe mafomati emidziyo. Semuenzaniso, kubatanidza neBSD Jails kana Solaris Zones.

Source: www.habr.com

Voeg