Docker ke eng: ketelo e khutšoane ea nalane le lintlha tsa mantlha

E qalile ka la 10 Phato ho Slurm Lenaneo la video la Docker, eo ho eona re e hlahlobisisang ka ho feletseng - ho tloha lits'ebetsong tsa motheo ho ea ho li-parameter tsa marang-rang.

Sehloohong sena re tla bua ka nalane ea Docker le lintlha tsa eona tsa mantlha: Setšoantšo, Cli, Dockerfile. Puo e reretsoe ba qalang, kahoo ha ho na monyetla oa hore e be e thahasellisang ho basebelisi ba nang le phihlelo. Ho ke ke ha e-ba le mali, sehlomathiso kapa ho qoelisoa ho tebileng. Lintho tsa motheo haholo.

Docker ke eng: ketelo e khutšoane ea nalane le lintlha tsa mantlha

Docker ke eng

Ha re shebeng tlhaloso ea Docker ho tsoa Wikipedia.

Docker ke software bakeng sa ho tsamaisa phepelo le taolo ea lits'ebetso libakeng tse nang le lisebelisoa.

Ha ho letho le hlakileng ho tsoa tlhalosong ena. Ha ho tsejoe hantle hore na "libakeng tse tšehetsang ho kenya lisebelisoa" ho bolela eng. Ho fumana karabo, a re khutleleng morao nakong. Ha re qaleng ka nako eo ke e bitsang "Monolithic Era".

Mehla ea Monolithic

Nako ea monolithic ke mathoasong a lilemo tsa bo-2000, ha likopo tsohle li ne li le monolithic, tse nang le lihlopha tse ngata tse itšetlehileng ka tsona. Tsoelopele e nkile nako e telele. Ka nako e ts'oanang, ho ne ho se na li-server tse ngata; re ne re li tseba kaofela ka mabitso le ho li beha leihlo. Ho na le papiso e qabolang joalo:

Liphoofolo tse ruuoang lapeng ke liphoofolo tse ruuoang lapeng. Mehleng ea monolithic, re ne re tšoara li-server tsa rona joalo ka liphoofolo tse ruuoang lapeng, re hloekisitsoe le ho ratoa, re fothola lerōle. 'Me bakeng sa tsamaiso e ntle ea lisebelisoa, re sebelisitse virtualization: re ile ra nka seva' me ra e khaola ka mechine e mengata ea sebele, kahoo re netefatsa ho aroloa ha tikoloho.

Sistimi ea Virtualization e thehiloeng ho Hypervisor

Mohlomong motho e mong le e mong o utloile ka mekhoa ea ts'ebetso ea sebele: VMware, VirtualBox, Hyper-V, Qemu KVM, joalo-joalo Ba fana ka ho itšehla thajana ha kopo le tsamaiso ea lisebelisoa, empa ba boetse ba na le mefokolo. Ho etsa virtualization, o hloka hypervisor. 'Me hypervisor ke mohloli o ka holimo oa lisebelisoa. 'Me mochini o sebetsang ka boeona hangata ke colossus e felletseng - setšoantšo se boima se nang le sistimi e sebetsang, Nginx, Apache, mohlomong le MySQL. Setšoantšo se seholo 'me mochine oa sebele ha o bonolo ho sebetsa. Ka lebaka leo, ho sebetsa ka mechine ea sebele ho ka lieha. Ho rarolla bothata bona, lits'ebetso tsa virtualization li entsoe maemong a kernel.

Sistimi ea virtualization ea boemo ba kernel

Virtualization ea boemo ba Kernel e tšehetsoa ke OpenVZ, Systemd-nspawn, litsamaiso tsa LXC. Mohlala o tsotehang oa virtualization e joalo ke LXC (Linux Containers).

LXC ke sistimi ea ts'ebetso ea boemo bo holimo bakeng sa ho tsamaisa maemo a mangata a ikhethileng a sistimi e sebetsang ea Linux sebakeng se le seng. LXC ha e sebelise mechini ea sebele, empa e theha tikoloho e nang le sebaka sa eona sa ts'ebetso le stack ea marang-rang.

Ha e le hantle, LXC e theha lijana. Phapano ke efe lipakeng tsa mechini ea sebele le linkho?

Docker ke eng: ketelo e khutšoane ea nalane le lintlha tsa mantlha

Sets'oants'o ha se tšoanelehe bakeng sa lits'ebetso tsa ho itšehla thajana: bofokoli bo fumanoa lits'ebetsong tsa virtualization boemong ba kernel bo ba lumellang ho tsoa ka har'a sets'oants'o ho ea ho moamoheli. Ka hona, haeba u hloka ho arola ntho e itseng, ho molemo ho sebelisa mochine oa sebele.

Phapano lipakeng tsa virtualization le containerization e ka bonoa setšoantšong.
Ho na le li-hypervisors tsa hardware, li-hypervisors ka holim'a OS, le lijana.

Docker ke eng: ketelo e khutšoane ea nalane le lintlha tsa mantlha

Li-hypervisors tsa Hardware li ntle haeba u hlile u batla ho arola ho hong. Hobane hoa khoneha ho itšehla thajana boemong ba maqephe a memori le li-processor.

Ho na le li-hypervisors joalo ka lenaneo, 'me ho na le lijana,' me re tla bua ka tsona ho ea pele. Sistimi ea Containerization ha e na hypervisor, empa ho na le Enjene ea Container e etsang le ho laola lijana. Ntho ena e bobebe ho feta, kahoo ka lebaka la ho sebetsa le mantlha ho na le holimo kapa ha ho letho ho hang.

Se sebedisoang bakeng sa ho kenya setshelo boemong ba kernel

Theknoloji ea mantlha e u lumellang hore u thehe setshelo se arohaneng le lits'ebetso tse ling ke Mabitso le Lihlopha tsa Taolo.

Libaka tsa mabitso: PID, Networking, Mount le User. Ho na le tse ling, empa molemong oa kutloisiso re tla tsepamisa maikutlo ho tsona.

PID Namespace e fokotsa lits'ebetso. Ha, ka mohlala, re theha Sebaka sa Mabitso sa PID mme re beha ts'ebetso moo, e fetoha le PID 1. Hangata tsamaisong ea PID 1 ke systemd kapa init. Ka hona, ha re beha ts'ebetso sebakeng se secha sa mabitso, e boetse e amohela PID 1.

Networking Namespace e u lumella ho fokotsa / ho arola marang-rang le ho beha lihokelo tsa hau kahare. Mount ke moeli oa sistimi ea faele. Mosebelisi-thibelo ho basebelisi.

Lihlopha tsa Taolo: Memori, CPU, IOPS, Network - litlhophiso tse ka bang 12 ka kakaretso. Ho seng joalo li boetse li bitsoa Cgroups ("C-groups").

Control Groups laola lisebelisoa bakeng sa setshelo. Ka Li-Control Groups re ka re sets'oants'o ha sea lokela ho ja chelete e fetang palo e itseng ea lisebelisoa.

E le hore sesebelisoa se sebetse ka botlalo, ho sebelisoa mahlale a eketsehileng: Bokhoni, Kopitsa-on-write le tse ling.

Bokhoni ke ha re bolella ts'ebetso seo e ka se etsang le seo e ke keng ea se etsa. Boemong ba kernel, tsena ke li-bitmaps tse nang le liparamente tse ngata. Mohlala, mosebelisi oa motso o na le litokelo tse felletseng mme a ka etsa tsohle. Seva ea nako e ka fetola nako ea tsamaiso: e na le bokhoni ho Time Capsule, 'me ke eona. U sebelisa litokelo, u ka khona ho hlophisa lithibelo bakeng sa lits'ebetso, 'me ka hona u itšireletse.

Sistimi ea Copy-on-write e re lumella ho sebetsa le litšoantšo tsa Docker le ho li sebelisa ka nepo.

Hajoale Docker e na le mathata a ho ikamahanya le Cgroups v2, kahoo sengoloa sena se shebane haholo le Cgroups v1.

Empa ha re khutleleng nalaneng.

Ha litsamaiso tsa virtualization li hlaha boemong ba kernel, li ile tsa qala ho sebelisoa ka mafolofolo. Bokaholimo ba hypervisor bo ile ba nyamela, empa mathata a mang a ile a sala:

  • litšoantšo tse kholo: li sutumelletsa sistimi ea ts'ebetso, lilaebrari, sehlopha sa software e fapaneng ho OpenVZ e tšoanang, 'me qetellong setšoantšo se ntse se fetoha se seholo haholo;
  • Ha ho na mokhoa o tloaelehileng oa ho paka le ho pepa, kahoo bothata ba ho itšetleha ka bona bo ntse bo le teng. Ho na le maemo ha likarolo tse peli tsa khoutu li sebelisa laebrari e le 'ngoe, empa ka mefuta e fapaneng. Ho ka 'na ha e-ba le khohlano pakeng tsa bona.

Ho rarolla mathata ana kaofela, nako e latelang e fihlile.

Nako ea lijana

Ha Era of Containers e fihla, filosofi ea ho sebetsa le bona e ile ea fetoha:

  • Mokhoa o le mong - setshelo se le seng.
  • Re fana ka litšepiso tsohle tseo ts'ebetso e li hlokang ho setshelo sa eona. Sena se hloka ho khaola monoliths ka li-microservices.
  • Sets'oants'o se senyane, se betere - ho na le mefokolo e fokolang e ka bang teng, e phalla ka potlako, joalo-joalo.
  • Liketsahalo li fetoha ephemeral.

Hopola seo ke se buileng ka liphoofolo tsa lapeng vs likhomo? Pele, liketsahalo li ne li tšoana le liphoofolo tse ruuoang lapeng, empa joale li se li tšoana le likhomo. Pejana, ho ne ho e-na le monolith - kopo e le 'ngoe. Hona joale ke li-microservices tse 100, lijana tse 100. Lijana tse ling li ka ba le likopi tse 2-3. Ho ba bohlokoa ho rona ho laola setshelo se seng le se seng. Ntho ea bohlokoa le ho feta ho rona ke boteng ba ts'ebeletso ka boeona: sete sena sa lijana se etsa eng. Sena se fetola mekhoa ea ho beha leihlo.

Ka 2014-2015, Docker e ile ea atleha - theknoloji eo re tla bua ka eona hona joale.

Docker e fetotse filosofi le liphutheloana tse tloaelehileng tsa ts'ebeliso. Re sebelisa Docker, re ka paka kopo, ra e romella sebakeng sa polokelo, ra e jarolla ho tloha moo, 'me ra e tsamaisa.

Re kenya tsohle tseo re li hlokang ka har'a setshelo sa Docker, kahoo bothata ba ho itšetleha bo rarollotsoe. Docker e tiisa ho ikatisa. Ke nahana hore batho ba bangata ba kile ba kopana le ho se khonehe: ntho e 'ngoe le e' ngoe e u sebeletsa, u e sutumelletsa tlhahiso, 'me moo e khaotsa ho sebetsa. Ka Docker bothata bona boa fela. Haeba setshelo sa hau sa Docker se qala mme se etsa seo se hlokang ho se etsa, ka monyetla o moholo se tla qala tlhahiso le ho etsa se tšoanang moo.

Phapang mabapi le holimo

Ho lula ho e-na le likhohlano mabapi le li-overheads. Batho ba bang ba lumela hore Docker ha e jare mojaro o mong, kaha e sebelisa kernel ea Linux le lits'ebetso tsohle tsa eona tse hlokahalang bakeng sa ho kenya lijana. Joalo ka, "haeba u re Docker e holimo, joale kernel ea Linux e holimo."

Ka lehlakoreng le leng, haeba u tebile, ho na le lintho tse 'maloa ho Docker tseo, ka ho otlolla, ho ka thoeng li holimo.

Ea pele ke sebaka sa mabitso sa PID. Ha re beha ts'ebetso sebakeng sa mabitso, e abeloa PID 1. Ka nako e ts'oanang, ts'ebetso ena e na le PID e 'ngoe, e teng sebakeng sa mabitso a baeti, ka ntle ho setshelo. Ka mohlala, re ile ra qala Nginx ka setshelo, ea fetoha PID 1 (mokhoa oa ts'ebetso). 'Me ho moamoheli o na le PID 12623. 'Me ho thata ho bolela hore na ho na le bokae ba bokae.

Ntho ea bobeli ke Cgroups. Ha re nke Cgroups ka mohopolo, ke hore, bokhoni ba ho fokotsa mohopolo oa setshelo. Ha e buletsoe, li-counter and memory accounting lia kengoa tšebetsong: kernel e hloka ho utloisisa hore na ke maqephe a makae a fanoeng le hore na ke a makae a sa ntseng a lokolohile bakeng sa sets'oants'o sena. Mohlomong ena ke taba e kholo, empa ha ke so bone lithuto tse nepahetseng mabapi le hore na e ama ts'ebetso joang. 'Me ha kea ka ka hlokomela hore ts'ebeliso e sebetsang ho Docker ka tšohanyetso e bile le tahlehelo e matla ts'ebetsong.

Le ntlha e 'ngoe hape mabapi le ts'ebetso. Likarolo tse ling tsa kernel li fetisoa ho tloha ho moamoheli ho ea setshelo. Ka ho khetheha, li-parameter tse ling tsa marang-rang. Ka hona, haeba u batla ho tsamaisa ntho e phahameng ka ho fetisisa ho Docker, ka mohlala, ntho e tla sebelisa marang-rang ka mafolofolo, joale bonyane u hloka ho fetola litekanyo tsena. Tse ling tsa nf_contrack, mohlala.

Mabapi le mohopolo oa Docker

Docker e na le likarolo tse 'maloa:

  1. Docker Daemon ke Enjene ea Container e tšoanang; e qala lijana.
  2. Docker CII ke sesebelisoa sa taolo ea Docker.
  3. Dockerfile - litaelo tsa ho etsa setšoantšo.
  4. Setšoantšo - setšoantšo seo setshelo se phuthoang ho sona.
  5. Setshelo.
  6. Registry ea Docker ke sebaka sa polokelo ea litšoantšo.

Ka moralo o shebahala tjena:

Docker ke eng: ketelo e khutšoane ea nalane le lintlha tsa mantlha

Daemon ea Docker e sebetsa ho Docker_host mme e qala lijana. Ho na le Client e romellang litaelo: haha ​​​​setšoantšo, jarolla setšoantšo, qala setshelo. Docker daemon e ea ho registry mme ea e phethahatsa. Moreki oa Docker a ka fihlella ka bobeli sebakeng sa heno (ho socket ea Unix) le ka TCP ho tsoa ho moamoheli ea hole.

Ha re hlahlobeng karolo ka 'ngoe.

Docker daemon - ena ke karolo ea seva, e sebetsa mochining oa moeti: e jarolla litšoantšo le ho qala lijana ho tsona, e theha marang-rang pakeng tsa lijana, e bokella likoti. Ha re re “etsa setšoantšo,” modemona le eena o etsa joalo.

Docker CLI - Karolo ea bareki ba Docker, sesebelisoa sa console bakeng sa ho sebetsa le daemon. Ke pheta, e ka sebetsa eseng sebakeng sa heno feela, empa hape le marang-rang.

Litaelo tsa mantlha:

docker ps - bonts'a lijana tse ntseng li sebetsa ho moamoheli oa Docker.
litšoantšo tsa docker - bonts'a litšoantšo tse jarollotsoeng sebakeng sa heno.
docker search <> - batla setšoantšo ho registry.
docker pull <> - khoasolla setšoantšo ho tsoa ho ngoliso ho ea mochining.
mohaho oa docker < > - bokella setšoantšo.
docker run <> - qala setshelo.
docker rm <> - tlosa setshelo.
li-docker logs <> - li-logs tsa setshelo
docker qala / emisa / qala hape <> - ho sebetsa le setshelo

Haeba u tseba litaelo tsena hantle 'me u itšepa hore u tla li sebelisa, inka u le 70% e nang le tsebo ho Docker boemong ba basebelisi.

dockerfile - litaelo tsa ho theha setšoantšo. Hoo e ka bang taelo e 'ngoe le e 'ngoe ea litaelo ke lera le lecha. A re hlahlobeng mohlala.

Docker ke eng: ketelo e khutšoane ea nalane le lintlha tsa mantlha

Sena ke seo Dockerfile e shebahalang ka sona: litaelo ka ho le letšehali, likhang ka ho le letona. Taelo e 'ngoe le e' ngoe e teng mona ('me ka kakaretso e ngotsoe ho Dockerfile) e theha lera le lecha ho Image.

Esita le ho sheba ka lehlakoreng le letšehali, u ka utloisisa hantle se etsahalang. Re re: "re thehele foldara" - ena ke lera le le leng. "Etsa hore foldara e sebetse" ke lera le leng, joalo-joalo. Layer cake e nolofatsa bophelo. Haeba ke theha Dockerfile e 'ngoe' me ke fetola ntho e 'ngoe moleng oa ho qetela - ke tsamaisa ntho e' ngoe ntle le "python" "main.py", kapa ke kenya litšepe ho tsoa faeleng e 'ngoe - joale likarolo tse fetileng li tla sebelisoa hape e le cache.

Image - sena ke sephutheloana sa lijana; lijana li hlahisoa setšoantšong. Haeba re sheba Docker ka pono ea mookameli oa sephutheloana (joalokaha eka re sebetsa ka liphutheloana tsa deb kapa rpm), joale setšoantšo ke sephutheloana sa rpm. Ka yum install re ka kenya ts'ebeliso, ra e hlakola, ra e fumana sebakeng sa polokelo ebe re e jarolla. Ho batla ho tšoana le mona: lijana li hlahisoa setšoantšong, li bolokiloe ho ngoliso ea Docker (e ts'oanang le yum, sebakeng sa polokelo), 'me setšoantšo ka seng se na le SHA-256 hash, lebitso le tag.

Setšoantšo se hahiloe ho latela litaelo tse tsoang ho Dockerfile. Taelo e 'ngoe le e' ngoe e tsoang ho Dockerfile e theha lera le lecha. Likarolo li ka sebelisoa hape.

Registry ea Docker ke polokelo ea litšoantšo ea Docker. Joalo ka OS, Docker e na le ngoliso e tloaelehileng ea sechaba - dockerhub. Empa o ka iketsetsa polokelo ea hau, ngoliso ea hau ea Docker.

setshelo - se qalisoang ho tsoa setšoantšong. Re thehile setšoantšo ho latela litaelo tse tsoang ho Dockerfile, ebe re e hlahisa ho tsoa setšoantšong sena. Sets'oants'o sena se arohane le lijana tse ling 'me se tlameha ho ba le tsohle tse hlokahalang hore kopo e sebetse. Tabeng ena, setshelo se le seng - ts'ebetso e le 'ngoe. Hoa etsahala hore o tlameha ho etsa lits'ebetso tse peli, empa sena se batla se le khahlanong le mohopolo oa Docker.

Tlhokahalo ea "setshelo se le seng, ts'ebetso e le 'ngoe" e amana le Sebaka sa Mabitso sa PID. Ha ts'ebetso e nang le PID 1 e qala ho Namespace, haeba e ka shoa ka tšohanyetso, setshelo kaofela le sona sea shoa. Haeba mekhoa e 'meli e ntse e sebetsa moo: e' ngoe e phela 'me e' ngoe e shoele, joale setshelo se ntse se tla tsoela pele ho phela. Empa ena ke potso ea Mekhoa e Molemo ka ho Fetisisa, re tla bua ka eona ka lisebelisoa tse ling.

Ho ithuta likarolo le lenaneo le felletseng la thupelo ka botlalo, ka kopo latela sehokela: "Lenaneo la video la Docker".

Mongoli: Marcel Ibraev, molaoli oa Kubernetes ea tiisitsoeng, moenjiniere oa boikoetliso Southbridge, sebui le moqapi oa lithuto tsa Slurm.

Source: www.habr.com

Eketsa ka tlhaloso