Deall Docker

Rwyf wedi bod yn defnyddio Docker ers sawl mis bellach i strwythuro'r broses o ddatblygu/cyflawni prosiectau gwe. Rwy'n cynnig cyfieithiad o'r erthygl ragarweiniol am docwr i ddarllenwyr Habrakhabr - "Deall dociwr".

Beth yw docker?

Mae Docker yn blatfform agored ar gyfer datblygu, cyflwyno a gweithredu cymwysiadau. Mae Docker wedi'i gynllunio i gyflwyno'ch cymwysiadau yn gyflymach. Gyda docwr, gallwch ddatgysylltu'ch cais o'ch seilwaith a thrin y seilwaith fel cymhwysiad a reolir. Mae Docker yn eich helpu i anfon eich cod yn gyflymach, profi'n gyflymach, anfon cymwysiadau'n gyflymach, a lleihau'r amser rhwng ysgrifennu cod a rhedeg cod. Mae Docker yn gwneud hyn trwy lwyfan rhithwiroli cynhwysydd ysgafn, gan ddefnyddio prosesau a chyfleustodau sy'n eich helpu i reoli a chynnal eich cymwysiadau.

Yn ei graidd, mae docwr yn caniatáu ichi redeg bron unrhyw raglen, wedi'i hynysu'n ddiogel mewn cynhwysydd. Mae ynysu diogel yn caniatáu ichi redeg llawer o gynwysyddion ar yr un gwesteiwr ar yr un pryd. Mae natur ysgafn y cynhwysydd, sy'n rhedeg heb faich ychwanegol hypervisor, yn caniatáu ichi gael mwy allan o'ch caledwedd.

Gall y llwyfan rhithwiroli cynhwysydd a'r offer fod yn ddefnyddiol yn yr achosion canlynol:

  • pecynnu eich cais (a'r cydrannau a ddefnyddiwch) mewn cynwysyddion docwyr;
  • dosbarthu a dosbarthu'r cynwysyddion hyn i'ch timau i'w datblygu a'u profi;
  • gosod y cynwysyddion hyn ar eich safleoedd cynhyrchu, mewn canolfannau data ac yn y cymylau.

Ar gyfer beth y gallaf ddefnyddio docwr?

Cyhoeddwch eich ceisiadau yn gyflym

Mae Docker yn wych ar gyfer trefnu'r cylch datblygu. Mae Docker yn caniatáu i ddatblygwyr redeg cynwysyddion lleol gyda chymwysiadau a gwasanaethau. Sydd wedyn yn caniatáu ichi integreiddio â'r broses o integreiddio parhaus a llif gwaith lleoli.

Er enghraifft, mae eich datblygwyr yn ysgrifennu cod yn lleol ac yn rhannu eu pentwr datblygu (set o ddelweddau Docker) gyda chydweithwyr. Pan fyddant yn barod, maent yn gwthio'r cod a'r cynwysyddion i'r safle prawf ac yn cynnal unrhyw brofion angenrheidiol. O'r safle prawf, gallant anfon cod a delweddau i'r cynhyrchiad.

Haws gosod allan a datblygu

Mae'r platfform sy'n seiliedig ar gynhwysydd docwr yn ei gwneud hi'n hawdd cludo'ch llwyth tâl. Gall cynwysyddion docwyr redeg ar eich peiriant lleol, naill ai go iawn neu ar beiriant rhithwir mewn canolfan ddata, neu yn y cwmwl.

Mae hygludedd a natur ysgafn y docwr yn ei gwneud hi'n hawdd rheoli'ch llwyth gwaith yn ddeinamig. Gallwch ddefnyddio docker i ddefnyddio neu gau eich cais neu wasanaethau. Mae cyflymder y docwr yn caniatáu i hyn gael ei wneud mewn amser real bron.

Llwythi uwch a mwy o lwythi tâl

Mae Docker yn ysgafn ac yn gyflym. Mae'n darparu dewis arall gwydn, cost-effeithiol i beiriannau rhithwir sy'n seiliedig ar hypervisor. Mae'n arbennig o ddefnyddiol mewn amgylcheddau llwyth uchel, er enghraifft, wrth greu eich cwmwl neu blatfform-fel-gwasanaeth eich hun. Ond mae hefyd yn ddefnyddiol ar gyfer cymwysiadau bach a chanolig pan fyddwch chi eisiau cael mwy allan o'r adnoddau sydd gennych chi.

Prif Gydrannau Dociwr

Mae Docker yn cynnwys dwy brif gydran:

  • Docker: llwyfan rhithwiroli ffynhonnell agored;
  • Docker Hub: Ein platfform-fel-gwasanaeth ar gyfer dosbarthu a rheoli cynwysyddion Docker.

Nodyn! Docker yn cael ei ddosbarthu o dan y drwydded Apache 2.0.

Pensaernïaeth Docker

Mae Docker yn defnyddio pensaernïaeth cleient-gweinydd. Mae'r cleient Docker yn cyfathrebu â daemon y Docker, sy'n ysgwyddo'r baich o greu, rhedeg a dosbarthu'ch cynwysyddion. Gall y cleient a'r gweinydd redeg ar yr un system, gallwch chi gysylltu'r cleient â daemon dociwr o bell. Mae'r cleient a'r gweinydd yn cyfathrebu trwy soced neu API RESTful.

Deall Docker

Daemon docwr

Fel y dangosir yn y diagram, mae'r daemon yn rhedeg ar y peiriant gwesteiwr. Nid yw'r defnyddiwr yn rhyngweithio â'r gweinydd yn uniongyrchol, ond mae'n defnyddio'r cleient ar gyfer hyn.

Cleient Docker

Y cleient Docker, y rhaglen docwr, yw'r prif ryngwyneb i Docker. Mae'n derbyn gorchmynion gan y defnyddiwr ac yn rhyngweithio â'r daemon docwr.

Dociwr tu mewn

I ddeall beth mae docwr yn ei gynnwys, mae angen i chi wybod am dair cydran:

  • delweddau
  • cofrestrfa
  • Cynhwyswyr

Delweddau

Mae delwedd y Docker yn dempled darllen yn unig. Er enghraifft, gall y ddelwedd gynnwys system weithredu Ubuntu gydag Apache a chymhwysiad arno. Defnyddir delweddau i greu cynwysyddion. Mae Docker yn ei gwneud hi'n hawdd creu delweddau newydd, diweddaru'r rhai sy'n bodoli eisoes, neu gallwch chi lawrlwytho delweddau a grëwyd gan bobl eraill. Mae delweddau yn gydrannau o adeiladwaith docwr.

Y gofrestrfa

Mae cofrestrfa Docker yn storio delweddau. Mae cofrestrfeydd cyhoeddus a phreifat y gallwch chi lawrlwytho neu uwchlwytho delweddau ohonynt. Mae cofrestrfa Docker gyhoeddus yn Hwb dociwr. Mae yna gasgliad enfawr o ddelweddau wedi'u storio yno. Fel y gwyddoch, gallwch chi greu delweddau neu gallwch ddefnyddio delweddau a grëwyd gan eraill. Mae cofrestrfeydd yn gydran ddosbarthu.

Cynhwyswyr

Mae cynwysyddion yn debyg i gyfeiriaduron. Mae cynwysyddion yn cynnwys popeth y mae angen i'r rhaglen ei redeg. Mae pob cynhwysydd yn cael ei greu o ddelwedd. Gellir creu, cychwyn, stopio, mudo neu ddileu cynwysyddion. Mae pob cynhwysydd wedi'i ynysu ac yn darparu llwyfan diogel ar gyfer y cais. Mae cynwysyddion yn gydrannau o'r gwaith.

Felly sut mae Docker yn gweithio?

Hyd yn hyn rydym yn gwybod bod:

  • gallwn greu delweddau y mae ein cymwysiadau wedi'u lleoli ynddynt;
  • gallwn greu cynwysyddion o ddelweddau i redeg cymwysiadau;
  • Gallwn ddosbarthu delweddau trwy Docker Hub neu gofrestrfa ddelwedd arall.

Gadewch i ni weld sut mae'r cydrannau hyn yn cyd-fynd â'i gilydd.

Sut mae'r ddelwedd yn gweithio?

Rydym eisoes yn gwybod bod delwedd yn dempled darllen yn unig y mae cynhwysydd yn cael ei greu ohono. Mae pob delwedd yn cynnwys set o lefelau. Defnyddiau Docker system ffeiliau undeb i gyfuno'r lefelau hyn yn un ddelwedd. Mae system ffeiliau'r undeb yn caniatáu i ffeiliau a chyfeiriaduron o systemau ffeil gwahanol (gwahanol ganghennau) orgyffwrdd yn dryloyw, gan greu system ffeiliau gydlynol.

Un o'r rhesymau pam mae docwr yn ysgafn yw oherwydd ei fod yn defnyddio haenau fel hyn. Pan fyddwch chi'n newid y ddelwedd, fel diweddaru rhaglen, mae haen newydd yn cael ei chreu. Felly, heb ailosod y ddelwedd gyfan neu ei hailadeiladu, fel y gallai fod yn rhaid i chi ei wneud gyda pheiriant rhithwir, dim ond yr haen sy'n cael ei hychwanegu neu ei diweddaru. Ac nid oes rhaid i chi ddosbarthu'r ddelwedd newydd gyfan, dim ond y diweddariad sy'n cael ei ddosbarthu, gan ei gwneud hi'n haws ac yn gyflymach i ddosbarthu delweddau.

Wrth galon pob delwedd mae delwedd sylfaen. Er enghraifft, ubuntu, delwedd sylfaenol Ubuntu, neu fedora, delwedd sylfaenol y dosbarthiad Fedora. Gallwch hefyd ddefnyddio delweddau fel sylfaen ar gyfer creu delweddau newydd. Er enghraifft, os oes gennych ddelwedd apache, gallwch ei ddefnyddio fel delwedd sylfaenol ar gyfer eich cymwysiadau gwe.

Nodyn! Mae Docker fel arfer yn tynnu delweddau o gofrestrfa Docker Hub.

Gellir creu delweddau docwr o'r delweddau sylfaenol hyn; rydym yn galw'r camau i greu'r cyfarwyddiadau delweddau hyn. Mae pob cyfarwyddyd yn creu delwedd neu lefel newydd. Bydd y cyfarwyddiadau fel a ganlyn:

  • rhedeg gorchymyn
  • ychwanegu ffeil neu gyfeiriadur
  • creu newidyn amgylchedd
  • cyfarwyddiadau ar beth i'w redeg pan fydd cynhwysydd y ddelwedd hon yn cael ei lansio

Mae'r cyfarwyddiadau hyn yn cael eu storio mewn ffeil Dockerfile. Mae Docker yn darllen hwn Dockerfile, pan fyddwch chi'n adeiladu'r ddelwedd, yn gweithredu'r cyfarwyddiadau hyn ac yn dychwelyd y ddelwedd derfynol.

Sut mae cofrestrfa'r docwyr yn gweithio?

Mae'r gofrestrfa yn ystorfa ar gyfer delweddau docwyr. Unwaith y bydd y ddelwedd wedi'i chreu, gallwch ei chyhoeddi i gofrestrfa gyhoeddus Docker Hub neu i'ch cofrestrfa bersonol.

Gyda'r cleient docwr, gallwch chwilio am ddelweddau sydd eisoes wedi'u cyhoeddi a'u lawrlwytho i'ch peiriant docwr i greu cynwysyddion.

Mae Docker Hub yn darparu storfeydd delwedd cyhoeddus a phreifat. Mae chwilio a lawrlwytho delweddau o gadwrfeydd cyhoeddus ar gael i bawb. Nid yw cynnwys storfeydd preifat wedi'u cynnwys yn y canlyniadau chwilio. A dim ond chi a'ch defnyddwyr all dderbyn y delweddau hyn a chreu cynwysyddion oddi wrthynt.

Sut mae cynhwysydd yn gweithio?

Mae cynhwysydd yn cynnwys system weithredu, ffeiliau defnyddwyr, a metadata. Fel y gwyddom, mae pob cynhwysydd yn cael ei greu o ddelwedd. Mae'r ddelwedd hon yn dweud wrth docwr beth sydd yn y cynhwysydd, pa broses i'w dechrau, pan fydd y cynhwysydd yn cychwyn, a data cyfluniad arall. Mae delwedd y Docker yn ddarllen-yn-unig. Pan fydd docwr yn cychwyn cynhwysydd, mae'n creu haen darllen / ysgrifennu ar ben y ddelwedd (gan ddefnyddio'r system ffeiliau undeb fel y nodwyd o'r blaen) lle gellir rhedeg y cais.

Beth sy'n digwydd pan fydd y cynhwysydd yn dechrau?

Neu ddefnyddio'r rhaglen docker, neu ddefnyddio'r API RESTful, mae'r cleient docwr yn dweud wrth yr daemon docwr i gychwyn y cynhwysydd.

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

Gadewch i ni edrych ar y gorchymyn hwn. Mae'r cleient yn cael ei lansio gan ddefnyddio'r gorchymyn docker, gydag opsiwn run, sy'n dweud y bydd cynhwysydd newydd yn cael ei lansio. Y gofynion sylfaenol ar gyfer rhedeg cynhwysydd yw'r nodweddion canlynol:

  • pa ddelwedd i'w defnyddio i greu'r cynhwysydd. Yn ein hachos ni ubuntu
  • y gorchymyn yr ydych am ei redeg pan ddechreuir y cynhwysydd. Yn ein hachos ni /bin/bash

Beth sy'n digwydd o dan y cwfl pan fyddwn yn rhedeg y gorchymyn hwn?

Mae Docker, mewn trefn, yn gwneud y canlynol:

  • lawrlwytho'r ddelwedd ubuntu: gwiriadau docwr ar gyfer argaeledd delwedd ubuntu ar y peiriant lleol, ac os nad yw yno, yna lawrlwythwch ef o Hwb dociwr. Os oes delwedd, mae'n ei ddefnyddio i greu cynhwysydd;
  • yn creu cynhwysydd: pan dderbynnir y ddelwedd, mae docker yn ei ddefnyddio i greu cynhwysydd;
  • yn cychwyn y system ffeiliau ac yn gosod y lefel darllen yn unig: mae'r cynhwysydd yn cael ei greu yn y system ffeiliau ac mae'r ddelwedd yn cael ei hychwanegu at y lefel darllen yn unig;
  • yn cychwyn y rhwydwaith/pont: yn creu rhyngwyneb rhwydwaith sy'n caniatáu i docwr gyfathrebu â'r peiriant gwesteiwr;
  • Gosod y cyfeiriad IP: yn canfod ac yn gosod y cyfeiriad;
  • Yn dechrau'r broses benodol: yn lansio eich cais;
  • Prosesu a chynhyrchu allbwn o'ch cais: yn cysylltu ac yn logio mewnbwn safonol, allbwn a llif gwall eich cais fel y gallwch olrhain sut mae'ch cais yn perfformio.

Mae gennych chi gynhwysydd gweithio nawr. Gallwch reoli'ch cynhwysydd, rhyngweithio â'ch cais. Pan fyddwch chi'n penderfynu atal y cais, dilëwch y cynhwysydd.

Technolegau a ddefnyddir

Mae Docker wedi'i ysgrifennu yn Go ac mae'n defnyddio rhai nodweddion o'r cnewyllyn Linux i weithredu'r swyddogaeth uchod.

Gofodau Enw

Mae Docker yn defnyddio technoleg namespaces i drefnu mannau gwaith ynysig, yr ydym yn eu galw'n gynwysyddion. Pan fyddwn yn cychwyn cynhwysydd, mae docwr yn creu set o ofodau enwau ar gyfer y cynhwysydd hwnnw.

Mae hyn yn creu haen ynysig, gyda phob agwedd ar y cynhwysydd yn rhedeg yn ei ofod enw ei hun a heb fynediad i'r system allanol.

Rhestr o rai gofodau enw y mae docwr yn eu defnyddio:

  • pid: i ynysu'r broses;
  • net: ar gyfer rheoli rhyngwynebau rhwydwaith;
  • IPc: i reoli adnoddau IPC. (ICP: InterProccess Communication);
  • mnt: i reoli pwyntiau gosod;
  • UTC: i ynysu'r cnewyllyn a rheoli cynhyrchu fersiwn (UTC: Unix timesharing system).

Grwpiau rheoli

Mae Docker hefyd yn defnyddio technoleg cgroups neu grwpiau rheoli. Yr allwedd i redeg cymhwysiad ar ei ben ei hun yw darparu'r adnoddau yr ydych am eu darparu yn unig i'r rhaglen. Mae hyn yn sicrhau y bydd y cynwysyddion yn gymdogion da. Mae grwpiau rheoli yn caniatáu ichi rannu adnoddau caledwedd sydd ar gael ac, os oes angen, gosod terfynau a chyfyngiadau. Er enghraifft, cyfyngu ar faint posibl o gof ar gyfer y cynhwysydd.

System Ffeil Undeb

Mae Union File Sysem neu UnionFS yn system ffeiliau sy'n gweithio trwy greu haenau, gan ei gwneud yn ysgafn iawn ac yn gyflym. Mae Docker yn defnyddio UnionFS i greu'r blociau y mae'r cynhwysydd wedi'i adeiladu ohonynt. Gall Docker ddefnyddio sawl amrywiad o UnionFS gan gynnwys: AUFS, btrfs, vfs a DeviceMapper.

Fformatau Cynhwysydd

Mae Docker yn cyfuno'r cydrannau hyn i mewn i ddeunydd lapio a elwir yn fformat cynhwysydd. Gelwir y fformat rhagosodedig libcontainer. Mae Docker hefyd yn cefnogi'r fformat cynhwysydd traddodiadol ar ddefnyddio Linux LXC. Yn y dyfodol, efallai y bydd Docker yn cefnogi fformatau cynhwysydd eraill. Er enghraifft, integreiddio â BSD Jails neu Solaris Zones.

Ffynhonnell: hab.com

Ychwanegu sylw