Pagsabut sa Docker

Gigamit nako ang Docker sa daghang mga bulan karon aron ma-istruktura ang proseso sa pag-uswag/paghatud sa mga proyekto sa web. Gitanyagan nako ang mga magbabasa sa Habrakhabr usa ka paghubad sa pasiuna nga artikulo bahin sa docker - "Pagsabot sa docker".

Unsa ang docker?

Ang Docker usa ka bukas nga plataporma alang sa pagpalambo, paghatud, ug pagpadagan sa mga aplikasyon. Gidisenyo ang Docker aron ihatud ang imong mga aplikasyon nga mas paspas. Uban sa docker, mahimo nimong i-decouple ang imong aplikasyon gikan sa imong imprastraktura ug pagtratar ang imprastraktura ingon usa ka gidumala nga aplikasyon. Gitabangan ka sa Docker nga ipadala ang imong code nga mas paspas, mas paspas ang pagsulay, mas paspas nga ipadala ang mga aplikasyon, ug makunhuran ang oras tali sa pagsulat sa code ug running code. Gibuhat kini ni Docker pinaagi sa usa ka gaan nga container virtualization platform, gamit ang mga proseso ug mga gamit nga makatabang kanimo sa pagdumala ug paghatud sa imong mga aplikasyon.

Sa kinauyokan niini, ang docker nagtugot kanimo sa pagpadagan sa halos bisan unsang aplikasyon, luwas nga nahimulag sa usa ka sudlanan. Ang luwas nga pag-inusara nagtugot kanimo sa pagpadagan sa daghang mga sudlanan sa parehas nga host sa parehas nga oras. Ang gaan nga kinaiya sa sudlanan, nga nagdagan nga wala’y dugang nga palas-anon sa usa ka hypervisor, nagtugot kanimo nga makakuha labi pa sa imong hardware.

Ang container virtualization nga plataporma ug mga himan mahimong mapuslanon sa mosunod nga mga kaso:

  • pagputos sa imong aplikasyon (ug ang mga sangkap nga imong gigamit) ngadto sa mga sudlanan sa docker;
  • pag-apod-apod ug paghatud niini nga mga sudlanan sa imong mga koponan alang sa pag-uswag ug pagsulay;
  • pagbutang niini nga mga sudlanan sa imong mga site sa produksiyon, sa mga sentro sa datos ug sa mga panganod.

Unsa man ang akong magamit nga docker?

Imantala dayon ang imong mga aplikasyon

Ang Docker maayo alang sa pag-organisar sa siklo sa pag-uswag. Gitugotan sa Docker ang mga developer nga magpadagan sa mga lokal nga sulud nga adunay mga aplikasyon ug serbisyo. Nga sa ulahi nagtugot kanimo sa pag-apil sa proseso sa padayon nga panagsama ug pag-deploy sa workflow.

Pananglitan, ang imong mga developers magsulat og code sa lokal ug ipaambit ang ilang development stack (usa ka set sa Docker images) sa mga kauban. Kung andam na sila, ilang iduso ang code ug mga sudlanan sa lugar sa pagsulay ug magpadagan sa bisan unsang kinahanglan nga mga pagsulay. Gikan sa site sa pagsulay, mahimo silang magpadala mga code ug mga imahe sa produksiyon.

Mas dali nga pagbutang ug pagbuklad

Gipasayon ​​sa docker container-based nga plataporma ang pag-port sa imong payload. Ang mga sudlanan sa Docker mahimong modagan sa imong lokal nga makina, bisan tinuod o sa usa ka virtual nga makina sa usa ka sentro sa datos, o sa panganod.

Ang pagkadaladala ug gaan nga kinaiya sa docker nagpasayon ​​sa dinamikong pagdumala sa imong workload. Mahimo nimong gamiton ang docker aron i-deploy o i-shut down ang imong aplikasyon o serbisyo. Ang katulin sa docker nagtugot niini nga mahimo sa hapit sa tinuud nga oras.

Mas taas nga load ug mas daghang payloads

Ang Docker gaan ug paspas. Naghatag kini usa ka lig-on, epektibo nga gasto nga alternatibo sa mga virtual nga makina nga nakabase sa hypervisor. Labi nga mapuslanon kini sa mga palibot nga adunay taas nga karga, pananglitan, kung nagmugna sa imong kaugalingon nga panganod o platform-as-serbisyo. Apan mapuslanon usab kini alang sa gagmay ug medium-kadako nga mga aplikasyon kung gusto nimo makakuha labi pa sa mga kapanguhaan nga naa nimo.

Panguna nga mga sangkap sa Docker

Ang Docker naglangkob sa duha ka punoan nga sangkap:

  • Docker: usa ka open source virtualization platform;
  • Docker Hub: Ang among platform-as-a-service alang sa pag-apod-apod ug pagdumala sa mga sudlanan sa Docker.

Hinumdomi! Ang Docker giapod-apod ubos sa lisensya sa Apache 2.0.

Docker nga arkitektura

Gigamit ni Docker ang arkitektura sa kliyente-server. Ang kliyente sa Docker nakigsulti sa Docker nga daemon, nga nagdala sa palas-anon sa paghimo, pagpadagan, ug pag-apod-apod sa imong mga sudlanan. Ang pareho nga kliyente ug server mahimong modagan sa parehas nga sistema, mahimo nimong ikonektar ang kliyente sa usa ka hilit nga docker daemon. Ang kliyente ug server nakigsulti pinaagi sa usa ka socket o usa ka RESTful API.

Pagsabut sa Docker

Docker nga daemon

Sama sa gipakita sa diagram, ang daemon nagdagan sa host machine. Ang tiggamit dili direktang makig-uban sa server, apan naggamit sa kliyente alang niini.

Kliyente sa Docker

Ang kliyente sa Docker, ang programa sa docker, mao ang panguna nga interface sa Docker. Nakadawat kini og mga sugo gikan sa tiggamit ug nakig-uban sa docker nga daemon.

Sa sulod docker

Aron masabtan kung unsa ang naglangkob sa docker, kinahanglan nimo mahibal-an ang bahin sa tulo nga mga sangkap:

  • mga larawan
  • rehistro
  • mga sudlanan

Mga hulagway

Ang imahe sa Docker usa ka read-only nga template. Pananglitan, ang imahe mahimong adunay sulud nga operating system nga Ubuntu nga adunay Apache ug usa ka aplikasyon niini. Ang mga imahe gigamit sa paghimo og mga sudlanan. Gipadali sa Docker ang paghimo og bag-ong mga imahe, pag-update sa mga naa na, o mahimo nimong i-download ang mga imahe nga gihimo sa ubang mga tawo. Ang mga imahe mga sangkap sa usa ka pagtukod sa docker.

Rehistro

Ang rehistro sa Docker nagtipig og mga imahe. Adunay publiko ug pribado nga mga rehistro diin mahimo nimong i-download o i-upload ang mga imahe. Ang usa ka publiko nga rehistro sa Docker mao ang Hub sa pantalan. Adunay usa ka dako nga koleksyon sa mga imahe nga gitipigan didto. Sama sa imong nahibal-an, ang mga imahe mahimo nimo nga buhaton o mahimo nimong gamiton ang mga imahe nga gihimo sa uban. Ang mga rehistro usa ka bahin sa pag-apod-apod.

Mga sudlanan

Ang mga sudlanan susama sa mga direktoryo. Ang mga sudlanan naglangkob sa tanan nga gikinahanglan sa aplikasyon sa pagdagan. Ang matag sudlanan gihimo gikan sa usa ka imahe. Ang mga sudlanan mahimong mugnaon, sugdan, ihunong, ibalhin o tangtangon. Ang matag sudlanan gilain ug naghatag usa ka luwas nga plataporma alang sa aplikasyon. Ang mga sudlanan mga sangkap sa trabaho.

Busa giunsa pagtrabaho ang Docker?

Sa pagkakaron nahibal-an namon nga:

  • makahimo kita og mga hulagway diin nahimutang ang atong mga aplikasyon;
  • makahimo kita og mga sudlanan gikan sa mga hulagway aron sa pagpadagan sa mga aplikasyon;
  • Mahimo namon nga ipang-apod-apod ang mga imahe pinaagi sa Docker Hub o uban pang rehistro sa imahe.

Atong tan-awon kon sa unsang paagi mohaom kini nga mga sangkap.

Giunsa pagtrabaho ang imahe?

Nahibal-an na namon nga ang usa ka imahe usa ka read-only nga template diin gihimo ang usa ka sudlanan. Ang matag imahe naglangkob sa usa ka set sa lebel. Gigamit sa Docker sistema sa file sa unyon aron mahiusa kini nga mga lebel sa usa ka imahe. Ang sistema sa file sa unyon nagtugot sa mga file ug mga direktoryo gikan sa lainlaing mga sistema sa file (nagkalain-laing mga sanga) nga magsapaw nga transparent, nga maghimo usa ka managsama nga sistema sa file.

Usa sa mga hinungdan ngano nga gaan ang docker tungod kay naggamit kini mga layer nga sama niini. Kung imong usbon ang imahe, sama sa pag-update sa usa ka aplikasyon, usa ka bag-ong layer ang gihimo. Busa, nga walay pag-ilis sa tibuok nga hulagway o pagtukod pag-usab niini, ingon nga mahimo nimo nga buhaton sa usa ka virtual nga makina, ang layer lamang ang gidugang o gi-update. Ug dili nimo kinahanglan nga ipang-apod-apod ang tibuuk nga bag-ong imahe, ang pag-update ra ang giapod-apod, nga labi ka dali ug paspas ang pag-apod-apod sa mga imahe.

Sa kasingkasing sa matag imahe usa ka sukaranan nga imahe. Pananglitan, ang ubuntu, ang base nga imahe sa Ubuntu, o fedora, ang sukaranan nga imahe sa pag-apod-apod sa Fedora. Mahimo usab nimo gamiton ang mga imahe isip sukaranan sa paghimo og bag-ong mga imahe. Pananglitan, kung ikaw adunay usa ka apache nga imahe, mahimo nimo kini gamiton ingon usa ka base nga imahe alang sa imong mga aplikasyon sa web.

Hinumdomi! Kasagaran nga gibira ni Docker ang mga imahe gikan sa rehistro sa Docker Hub.

Ang mga imahen sa Docker mahimong mabuhat gikan sa mga base nga mga imahe; gitawag namon ang mga lakang aron mahimo kini nga mga panudlo sa imahe. Ang matag panudlo nagmugna og bag-ong imahe o lebel. Ang mga instruksyon mao ang mosunod:

  • run command
  • pagdugang og file o direktoryo
  • paghimo ug environment variable
  • mga instruksyon kung unsa ang pagdagan kung ang sulud niini nga imahen gilansad

Kini nga mga panudlo gitipigan sa usa ka file Dockerfile. Gibasa kini ni Docker Dockerfile, sa dihang magtukod ka sa hulagway, ipatuman kini nga mga instruksiyon ug ibalik ang kataposang hulagway.

Giunsa pagtrabaho ang rehistro sa docker?

Ang registry usa ka repository alang sa mga imahe sa docker. Kung nahimo na ang imahe, mahimo nimong imantala kini sa publiko nga rehistro sa Docker Hub o sa imong personal nga rehistro.

Uban sa kliyente sa docker, mahimo nimong pangitaon ang na-publish na nga mga imahe ug i-download kini sa imong docker machine aron makahimo mga sulud.

Naghatag ang Docker Hub og publiko ug pribado nga mga repositoryo sa imahe. Ang pagpangita ug pag-download sa mga imahe gikan sa mga pampublikong repository magamit sa tanan. Ang sulod sa mga pribadong storage wala giapil sa mga resulta sa pagpangita. Ug ikaw ra ug ang imong mga tiggamit ang makadawat niini nga mga imahe ug maghimo mga sulud gikan kanila.

Giunsa pagtrabaho ang usa ka sudlanan?

Ang usa ka sudlanan naglangkob sa usa ka operating system, user file, ug metadata. Sama sa nahibal-an namon, ang matag sudlanan gihimo gikan sa usa ka imahe. Kini nga hulagway nagsulti sa docker kung unsa ang naa sa sudlanan, unsa nga proseso ang sugdan, kung kanus-a magsugod ang sudlanan, ug uban pang datos sa pag-configure. Ang imahe sa Docker kay read-only. Sa diha nga ang docker magsugod sa usa ka sudlanan, kini nagmugna og usa ka read/write layer sa ibabaw sa hulagway (gamit ang unyon file system sama sa gipahayag kaniadto) diin ang aplikasyon mahimong ipadagan.

Unsa ang mahitabo kung magsugod ang sudlanan?

O paggamit sa programa docker, o gamit ang RESTful API, ang kliyente sa docker nagsulti sa docker daemon sa pagsugod sa sudlanan.

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

Atong tan-awon kini nga sugo. Ang kliyente gilunsad gamit ang command docker, nga adunay kapilian run, nga nag-ingon nga usa ka bag-ong sudlanan ang ilusad. Ang minimum nga kinahanglanon sa pagpadagan sa usa ka sudlanan mao ang mosunod nga mga hiyas:

  • unsa nga hulagway ang gamiton sa paghimo sa sudlanan. Sa among kaso ubuntu
  • ang sugo nga gusto nimong ipadagan sa diha nga ang sudlanan gisugdan. Sa among kaso /bin/bash

Unsa ang mahitabo sa ilawom sa tabon kung gipadagan naton kini nga mando?

Ang Docker, sa han-ay, naghimo sa mosunod:

  • nag-download sa imahe sa ubuntu: gisusi sa docker kung adunay magamit nga imahe ubuntu sa lokal nga makina, ug kung wala kini, unya i-download kini gikan sa Hub sa pantalan. Kung adunay usa ka imahe, gigamit kini sa paghimo og sudlanan;
  • naghimo og sudlanan: kung nadawat ang imahe, gigamit kini sa docker aron makahimo usa ka sudlanan;
  • nag-initialize sa filesystem ug nag-mount sa read-only nga lebel: ang sudlanan gihimo sa file system ug ang imahe gidugang sa read-only nga lebel;
  • nag-initialize sa network/bridge: nagmugna og network interface nga nagtugot sa docker nga makigkomunikar sa host machine;
  • Pagbutang sa IP address: pagpangita ug pagtakda sa adres;
  • Nagsugod sa piho nga proseso: naglansad sa imong aplikasyon;
  • Nagproseso ug nagpatunghag output gikan sa imong aplikasyon: nagkonektar ug nag-log sa standard input, output, ug error stream sa imong aplikasyon aron masubay nimo kung giunsa ang imong aplikasyon.

Ikaw karon adunay usa ka nagtrabaho nga sudlanan. Mahimo nimong madumala ang imong sudlanan, makig-uban sa imong aplikasyon. Kung nakahukom ka nga hunongon ang aplikasyon, kuhaa ang sudlanan.

Mga teknolohiya nga gigamit

Ang Docker gisulat sa Go ug naggamit sa pipila ka mga bahin sa Linux kernel aron ipatuman ang mga gamit sa ibabaw.

Mga namespace

Ang Docker naggamit sa teknolohiya namespaces sa pag-organisar sa nahilit nga mga workspace, nga gitawag namo og mga sudlanan. Kung magsugod kami sa usa ka sudlanan, ang docker nagmugna usa ka hugpong sa mga namespace alang sa kana nga sudlanan.

Naghimo kini og usa ka nahilit nga layer, nga ang matag aspeto sa sudlanan nagdagan sa kaugalingon nga namespace ug wala’y access sa eksternal nga sistema.

Listahan sa pipila ka namespaces nga gigamit sa docker:

  • pid: aron ihimulag ang proseso;
  • net: alang sa pagdumala sa mga interface sa network;
  • ipc: sa pagdumala sa mga kapanguhaan sa IPC. (ICP: InterProccess Communication);
  • mnt: sa pagdumala sa mount points;
  • utc: aron ihimulag ang kernel ug pagkontrol sa bersyon nga henerasyon (UTC: Unix timesharing system).

Kontrol nga mga grupo

Gigamit usab ni Docker ang teknolohiya cgroups o kontrol nga mga grupo. Ang yawe sa pagpadagan sa usa ka aplikasyon nga nag-inusara mao ang paghatag sa aplikasyon sa mga kapanguhaan lamang nga gusto nimo ihatag. Kini nagsiguro nga ang mga sudlanan mahimong maayong silingan. Gitugotan ka sa mga kontrol nga grupo nga ipaambit ang magamit nga mga kahinguhaan sa hardware ug, kung kinahanglan, magbutang mga limitasyon ug mga pagdili. Pananglitan, limitahan ang posible nga gidaghanon sa memorya alang sa sudlanan.

Union File System

Ang Union File Sysem o UnionFS usa ka file system nga naglihok pinaagi sa pagmugna og mga layer, nga naghimo niini nga gaan kaayo ug paspas. Gigamit sa Docker ang UnionFS aron mahimo ang mga bloke diin gitukod ang sulud. Ang Docker mahimong mogamit daghang mga variant sa UnionFS lakip ang: AUFS, btrfs, vfs ug DeviceMapper.

Mga porma sa sudlanan

Gihiusa sa Docker kini nga mga sangkap sa usa ka wrapper nga gitawag namon nga format sa sulud. Ang default nga format gitawag libcontainer. Gisuportahan usab sa Docker ang tradisyonal nga format sa sudlanan sa Linux gamit LXC. Sa umaabot, ang Docker mahimong mosuporta sa ubang mga format sa sudlanan. Pananglitan, ang pag-apil sa BSD Jails o Solaris Zones.

Source: www.habr.com

Idugang sa usa ka comment