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:
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.
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.
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.
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.
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 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.
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.