Nkag siab Docker

Kuv tau siv Docker rau ob peb lub hlis tam sim no los teeb tsa kev txhim kho / xa cov txheej txheem ntawm lub vev xaib. Kuv muab Habrakhabr cov neeg nyeem ib qho kev txhais lus ntawm cov lus qhia txog docker - "Kev nkag siab docker".

Docker yog dab tsi?

Docker yog lub platform qhib rau kev tsim, xa tawm, thiab ua haujlwm daim ntawv thov. Docker yog tsim los xa koj daim ntawv thov sai dua. Nrog docker, koj tuaj yeem decouple koj daim ntawv thov los ntawm koj qhov kev tsim kho vaj tse thiab kho cov txheej txheem raws li daim ntawv thov tswj. Docker pab koj xa koj cov lej sai dua, sim nrawm dua, xa daim ntawv thov sai dua, thiab txo lub sijhawm ntawm kev sau cov lej thiab cov lej khiav. Docker ua qhov no los ntawm lub teeb yuag lub thawv virtualization platform, siv cov txheej txheem thiab cov khoom siv hluav taws xob uas pab koj tswj thiab tuav koj cov ntawv thov.

Ntawm nws qhov tseem ceeb, docker tso cai rau koj los khiav yuav luag txhua daim ntawv thov, cais nyob hauv ib lub thawv. Kev sib cais ruaj ntseg tso cai rau koj khiav ntau lub ntim ntawm tib lub tswv tsev tib lub sijhawm. Lub teeb yuag ntawm lub thawv, uas khiav tsis muaj lub nra ntxiv ntawm lub hypervisor, tso cai rau koj kom tau txais ntau dua ntawm koj cov khoom siv.

Lub thawv virtualization platform thiab cov cuab yeej tuaj yeem pab tau hauv cov xwm txheej hauv qab no:

  • ntim koj daim ntawv thov (thiab cov khoom uas koj siv) rau hauv docker ntim;
  • kev faib tawm thiab xa cov ntim khoom no rau koj pab pawg rau kev txhim kho thiab kev sim;
  • tso tawm cov thawv no ntawm koj qhov chaw tsim khoom, ob qho tib si hauv cov chaw khaws ntaub ntawv thiab hauv huab.

Kuv tuaj yeem siv docker rau dab tsi?

Tshaj tawm sai sai rau koj daim ntawv thov

Docker yog qhov zoo rau kev txhim kho lub voj voog. Docker tso cai rau cov neeg tsim khoom los khiav cov thawv hauv zos nrog cov ntawv thov thiab cov kev pabcuam. Uas tom qab tso cai rau koj los ua ke nrog cov txheej txheem ntawm kev sib koom ua ke txuas ntxiv thiab xa mus ua haujlwm.

Piv txwv li, koj cov neeg tsim khoom sau cov lej hauv zos thiab qhia lawv cov kev txhim kho pawg (ib txheej ntawm Docker dluab) nrog cov npoj yaig. Thaum lawv npaj txhij, lawv thawb cov cai thiab ntim rau hauv qhov chaw sim thiab khiav txhua qhov kev xeem tsim nyog. Los ntawm qhov chaw sim, lawv tuaj yeem xa cov lej thiab cov duab rau ntau lawm.

Yooj yim tso tawm thiab nthuav tawm

Lub docker thawv-raws li platform ua rau nws yooj yim rau chaw nres nkoj koj payload. Docker ntim tuaj yeem khiav ntawm koj lub tshuab hauv zos, tiag tiag lossis ntawm lub tshuab virtual hauv cov ntaub ntawv chaw, lossis hauv huab.

Qhov kev txav tau yooj yim thiab qhov hnyav ntawm docker ua rau nws yooj yim rau kev tswj hwm koj cov haujlwm. Koj tuaj yeem siv docker los xa lossis kaw koj daim ntawv thov lossis kev pabcuam. Qhov ceev ntawm docker tso cai rau qhov no ua tiav nyob ze lub sijhawm.

Siab loads thiab ntau payloads

Docker yog lub teeb yuag thiab nrawm. Nws muab cov kev ua haujlwm zoo, tus nqi tsim nyog rau kev siv tshuab virtual raws li hypervisor. Nws yog ib qho tseem ceeb tshwj xeeb tshaj yog nyob rau hauv high-load ib puag ncig, piv txwv li, thaum tsim koj tus kheej huab lossis platform-raws li kev pabcuam. Tab sis nws kuj tseem muaj txiaj ntsig rau cov ntawv thov me me thiab nruab nrab thaum koj xav tau ntau dua ntawm cov peev txheej uas koj muaj.

Main Docker Cheebtsam

Docker muaj ob lub ntsiab lus tseem ceeb:

  • Docker: qhib qhov chaw virtualization platform;
  • Docker Hub: Peb lub platform-raws li kev pabcuam rau kev faib thiab tswj cov thawv Docker.

Nco tseg! Docker raug faib raws li Apache 2.0 daim ntawv tso cai.

Docker architecture

Docker siv tus neeg siv khoom-neeg rau zaub mov architecture. Tus neeg siv khoom Docker sib txuas lus nrog Docker daemon, uas siv lub nra ntawm kev tsim, khiav, thiab faib koj cov ntim. Ob tus neeg siv khoom thiab cov neeg rau zaub mov tuaj yeem khiav ntawm tib lub kaw lus, koj tuaj yeem txuas tus neeg siv khoom mus rau cov chaw taws teeb docker daemon. Cov neeg siv khoom thiab cov neeg rau zaub mov sib txuas lus ntawm lub qhov (socket) lossis RESTful API.

Nkag siab Docker

Docker dab

Raws li pom hauv daim duab, lub daemon khiav ntawm lub tshuab host. Tus neeg siv tsis cuam tshuam nrog server ncaj qha, tab sis siv tus neeg siv khoom rau qhov no.

Docker tus neeg siv khoom

Tus neeg siv khoom Docker, qhov kev pab cuam docker, yog lub ntsiab interface rau Docker. Nws tau txais cov lus txib los ntawm tus neeg siv thiab cuam tshuam nrog docker daemon.

Sab hauv docker

Txhawm rau nkag siab tias docker muaj dab tsi, koj yuav tsum paub txog peb yam:

  • duab
  • npe
  • ntim

Dluab

Daim duab Docker yog tus qauv nyeem nkaus xwb. Piv txwv li, cov duab yuav muaj Ubuntu operating system nrog Apache thiab ib daim ntawv thov rau nws. Cov duab yog siv los tsim cov thawv. Docker ua kom yooj yim los tsim cov duab tshiab, hloov kho cov uas twb muaj lawm, lossis koj tuaj yeem rub tawm cov duab tsim los ntawm lwm tus neeg. Cov duab yog cov khoom ntawm docker tsim.

Sau npe

Docker sau npe khaws cov duab. Muaj cov npe pej xeem thiab ntiag tug uas koj tuaj yeem rub tawm lossis upload duab. Lub npe Docker pej xeem yog Docker hub. Muaj ib phau ntawv loj loj ntawm cov duab khaws cia rau ntawd. Raws li koj paub, cov duab tuaj yeem tsim los ntawm koj lossis koj tuaj yeem siv cov duab tsim los ntawm lwm tus. Registries yog ib feem ntawm kev faib khoom.

Ntim

Cov thawv ntim zoo ib yam li cov ntawv teev npe. Cov thawv ntim muaj txhua yam uas daim ntawv thov yuav tsum tau khiav. Txhua lub thawv yog tsim los ntawm ib daim duab. Cov thawv tuaj yeem tsim, pib, nres, tsiv teb tsaws lossis tshem tawm. Txhua lub thawv yog cais thiab muab lub platform ruaj ntseg rau daim ntawv thov. Cov thawv ntim khoom yog cov khoom siv ua haujlwm.

Yog li Docker ua haujlwm li cas?

Txog tam sim no peb paub tias:

  • peb tuaj yeem tsim cov duab uas peb cov ntawv thov nyob;
  • peb tuaj yeem tsim cov thawv los ntawm cov duab los khiav daim ntawv thov;
  • Peb tuaj yeem faib cov duab los ntawm Docker Hub lossis lwm daim ntawv sau npe.

Cia peb saib seb cov khoom no haum ua ke li cas.

Cov duab ua haujlwm li cas?

Peb twb paub lawm hais tias ib daim duab yog ib tug nyeem nkaus xwb template los ntawm lub thawv tsim. Txhua daim duab muaj cov theem. Docker siv union file system los muab cov qib no rau hauv ib daim duab. Union cov ntaub ntawv system tso cai rau cov ntaub ntawv thiab cov npe ntawm cov ntaub ntawv sib txawv (cov ceg sib txawv) sib tshooj pob tshab, tsim kom muaj cov ntaub ntawv sib koom ua ke.

Ib qho laj thawj vim li cas docker hnav yog vim nws siv cov khaubncaws sab nraud povtseg zoo li no. Thaum koj hloov daim duab, xws li hloov kho daim ntawv thov, txheej txheej tshiab yog tsim. Yog li, tsis tas yuav hloov tag nrho cov duab lossis rov tsim kho nws, raws li koj yuav tau ua nrog lub tshuab virtual, tsuas yog txheej ntxiv ntxiv lossis hloov kho. Thiab koj tsis tas yuav faib tag nrho cov duab tshiab, tsuas yog qhov hloov tshiab tau muab faib, ua kom yooj yim dua thiab nrawm dua los faib cov duab.

Hauv plawv ntawm txhua daim duab yog ib qho yooj yim duab. Piv txwv li, ubuntu, lub hauv paus duab ntawm Ubuntu, los yog fedora, lub hauv paus duab ntawm Fedora tis. Koj tseem tuaj yeem siv cov duab ua lub hauv paus tsim cov duab tshiab. Piv txwv li, yog tias koj muaj daim duab apache, koj tuaj yeem siv nws ua cov duab hauv qab rau koj daim ntawv thov web.

Nco tseg! Docker feem ntau rub cov duab los ntawm Docker Hub npe.

Docker dluab tuaj yeem tsim los ntawm cov duab hauv qab no; peb hu rau cov kauj ruam los tsim cov duab qhia no. Txhua qhov kev qhia tsim cov duab tshiab lossis qib. Cov lus qhia yuav yog cov hauv qab no:

  • khiav hais kom ua
  • ntxiv ib cov ntaub ntawv los yog directory
  • tsim kom muaj ib puag ncig hloov pauv
  • cov lus qhia txog yuav ua li cas khiav thaum lub thawv ntawm daim duab no tau qhib

Cov lus qhia no muab khaws cia rau hauv ib cov ntaub ntawv Dockerfile. Docker nyeem qhov no Dockerfile, thaum koj tsim cov duab, ua cov lus qhia no thiab xa rov qab cov duab kawg.

Docker Registry ua haujlwm li cas?

Cov ntawv sau npe yog qhov chaw khaws cia rau cov duab docker. Thaum cov duab tsim, koj tuaj yeem tshaj tawm rau pej xeem Docker Hub npe lossis rau koj tus kheej sau npe.

Nrog tus neeg siv khoom docker, koj tuaj yeem tshawb nrhiav cov duab uas twb tau luam tawm lawm thiab rub tawm rau hauv koj lub tshuab docker los tsim cov thawv.

Docker Hub muab cov duab tso rau pej xeem thiab ntiag tug. Tshawb nrhiav thiab rub tawm cov duab los ntawm cov chaw khaws ntaub ntawv pej xeem muaj rau txhua tus. Cov ntsiab lus ntawm cov khoom ntiag tug tsis suav nrog hauv cov txiaj ntsig tshawb fawb. Thiab tsuas yog koj thiab koj cov neeg siv tuaj yeem tau txais cov duab no thiab tsim cov thawv los ntawm lawv.

Lub thawv ua haujlwm li cas?

Lub thawv muaj ib qho kev khiav hauj lwm, cov neeg siv cov ntaub ntawv, thiab metadata. Raws li peb paub, txhua lub thawv yog tsim los ntawm ib daim duab. Daim duab no qhia docker dab tsi hauv lub thawv, dab tsi yuav pib, thaum lub thawv pib, thiab lwm yam ntaub ntawv teeb tsa. Daim duab Docker tsuas yog nyeem nkaus xwb. Thaum docker pib lub thawv, nws tsim ib qho kev nyeem / sau txheej saum toj ntawm daim duab (siv lub koomhaum cov ntaub ntawv raws li tau hais ua ntej) uas daim ntawv thov tuaj yeem khiav.

Yuav ua li cas thaum lub thawv pib?

Los yog siv qhov kev pab cuam docker, lossis siv RESTful API, tus neeg siv khoom docker qhia rau docker daemon pib lub thawv.

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

Cia peb saib cov lus txib no. Tus neeg siv tau pib siv cov lus txib docker, nrog kev xaiv run, uas hais tias lub thawv tshiab yuav raug tso tawm. Yam tsawg kawg nkaus yuav tsum tau khiav ib lub thawv yog cov yam ntxwv hauv qab no:

  • cov duab twg siv los tsim lub thawv. Hauv peb qhov xwm txheej ubuntu
  • cov lus txib koj xav khiav thaum lub thawv pib. Hauv peb qhov xwm txheej /bin/bash

Yuav ua li cas tshwm sim hauv qab lub hood thaum peb khiav cov lus txib no?

Docker, hauv kev txiav txim, ua cov hauv qab no:

  • downloads ubuntu duab: docker xyuas seb cov duab muaj ubuntu ntawm lub tshuab hauv zos, thiab yog tias nws tsis muaj, ces rub tawm los ntawm Docker hub. Yog tias muaj cov duab, nws siv nws los tsim ib lub thawv;
  • tsim ib lub thawv: thaum tau txais daim duab, docker siv nws los tsim ib lub thawv;
  • pib lub filesystem thiab nce qib nyeem nkaus xwb: lub thawv yog tsim nyob rau hauv cov ntaub ntawv system thiab cov duab ntxiv rau qib nyeem nkaus xwb;
  • pib lub network / choj: tsim lub network interface uas tso cai rau docker sib txuas lus nrog tus tswv tshuab;
  • Kev teeb tsa tus IP chaw nyob: nrhiav thiab teeb qhov chaw nyob;
  • Pib cov txheej txheem teev tseg: launches koj daim ntawv thov;
  • Cov txheej txheem thiab tsim tawm los ntawm koj daim ntawv thov: txuas thiab kaw koj daim ntawv thov tus qauv kev tawm tswv yim, tso tawm, thiab cov kwj yuam kev kom koj tuaj yeem taug qab koj daim ntawv thov ua haujlwm li cas.

Tam sim no koj muaj lub thawv ua haujlwm. Koj tuaj yeem tswj hwm koj lub thawv, cuam tshuam nrog koj daim ntawv thov. Thaum koj txiav txim siab tso tseg daim ntawv thov, rho tawm lub thawv.

Cov cuab yeej siv

Docker tau sau rau hauv Go thiab siv qee qhov nta ntawm Linux ntsiav los siv cov haujlwm saum toj no.

Namespaces

Docker siv thev naus laus zis namespaces los npaj cov chaw ua haujlwm cais, uas peb hu ua ntim. Thaum peb pib lub thawv, docker tsim ib txheej ntawm namespaces rau lub thawv ntawd.

Qhov no tsim cov txheej txheem cais, nrog rau txhua qhov ntawm lub thawv khiav hauv nws tus kheej lub npe thiab tsis muaj kev nkag mus rau sab nraud.

Cov npe ntawm qee lub npe chaw uas docker siv:

  • pid: cais cov txheej txheem;
  • net: rau kev tswj xyuas network interfaces;
  • ipc: los tswj cov peev txheej IPC. (ICP: InterProccess Kev Sib Txuas Lus);
  • mnt: tswj cov ntsiab lus mount;
  • utc: txhawm rau cais cov ntsiav thiab tswj hwm version tiam (UTC: Unix timesharing system).

Tswj pawg

Docker kuj siv thev naus laus zis cgroups los yog tswj pab pawg. Tus yuam sij rau kev khiav daim ntawv thov nyob rau hauv kev sib cais yog muab daim ntawv thov tsuas yog cov peev txheej koj xav muab. Qhov no ua kom ntseeg tau tias cov ntim khoom yuav yog cov neeg nyob sib ze zoo. Cov pab pawg tswj hwm tso cai rau koj faib cov khoom siv kho vajtse thiab, yog tias tsim nyog, teeb tsa thiab txwv. Piv txwv li, txwv qhov muaj peev xwm nco tau rau lub thawv.

Union File System

Union File Sysem lossis UnionFS yog cov ntaub ntawv kaw lus uas ua haujlwm los ntawm kev tsim cov khaubncaws sab nraud povtseg, ua rau nws hnyav heev thiab ceev. Docker siv UnionFS los tsim cov blocks uas lub thawv tau tsim. Docker tuaj yeem siv ntau qhov sib txawv ntawm UnionFS suav nrog: AUFS, btrfs, vfs thiab DeviceMapper.

Ntim hom

Docker muab cov khoom sib xyaw ua ke rau hauv cov ntaub qhwv peb hu ua lub thawv ntim. Lub hom phiaj yog hu ua libcontainer. Docker kuj txhawb nqa cov thawv ntim ib txwm siv ntawm Linux siv LXC. Nyob rau hauv lub neej yav tom ntej, Docker tej zaum yuav txhawb nqa lwm hom thawv. Piv txwv li, kev koom ua ke nrog BSD Jails lossis Solaris Zones.

Tau qhov twg los: www.hab.com

Ntxiv ib saib