Nifhmu Docker

Ilni nuża Docker għal diversi xhur issa biex nistruttura l-proċess ta 'żvilupp/kunsinna ta' proġetti tal-web. Noffri lill-qarrejja tal-Habrakhabr traduzzjoni tal-artiklu introduttorju dwar docker - "Nifhmu docker".

X'inhu docker?

Docker hija pjattaforma miftuħa għall-iżvilupp, it-twassil u l-operat ta' applikazzjonijiet. Docker huwa ddisinjat biex iwassal l-applikazzjonijiet tiegħek aktar malajr. B'docker, tista' tissepara l-applikazzjoni tiegħek mill-infrastruttura tiegħek u tittratta l-infrastruttura bħala applikazzjoni ġestita. Docker jgħinek tibgħat il-kodiċi tiegħek aktar malajr, tittestja aktar malajr, tibgħat l-applikazzjonijiet aktar malajr, u tnaqqas il-ħin bejn il-kitba tal-kodiċi u t-tħaddim tal-kodiċi. Docker jagħmel dan permezz ta' pjattaforma ta' virtwalizzazzjoni ta' kontenitur ħafif, billi juża proċessi u utilitajiet li jgħinuk timmaniġġja u tospita l-applikazzjonijiet tiegħek.

Fil-qalba tiegħu, docker jippermettilek tħaddem kważi kull applikazzjoni, iżolata b'mod sikur f'kontenitur. L-iżolament sigur jippermettilek tmexxi ħafna kontenituri fuq l-istess ospitanti fl-istess ħin. In-natura ħafifa tal-kontenitur, li taħdem mingħajr il-piż addizzjonali ta 'hypervisor, tippermettilek tikseb aktar mill-hardware tiegħek.

Il-pjattaforma u l-għodod tal-virtwalizzazzjoni tal-kontejners jistgħu jkunu utli fil-każijiet li ġejjin:

  • ippakkja l-applikazzjoni tiegħek (u l-komponenti li tuża) f'kontenituri docker;
  • distribuzzjoni u kunsinna ta' dawn il-kontenituri lit-timijiet tiegħek għall-iżvilupp u l-ittestjar;
  • tpoġġi dawn il-kontenituri fuq is-siti tal-produzzjoni tiegħek, kemm fiċ-ċentri tad-dejta kif ukoll fis-sħab.

Għal xiex nista' nuża docker?

Ippubblika malajr l-applikazzjonijiet tiegħek

Docker huwa kbir għall-organizzazzjoni taċ-ċiklu ta 'żvilupp. Docker jippermetti lill-iżviluppaturi biex imexxu kontenituri lokali b'applikazzjonijiet u servizzi. Li sussegwentement jippermettilek tintegra mal-proċess ta 'integrazzjoni kontinwa u fluss tax-xogħol ta' skjerament.

Pereżempju, l-iżviluppaturi tiegħek jiktbu l-kodiċi lokalment u jaqsmu l-munzell tal-iżvilupp tagħhom (sett ta 'immaġini Docker) mal-kollegi. Meta jkunu lesti, jimbuttaw il-kodiċi u l-kontenituri lejn is-sit tat-test u jmexxu kwalunkwe test meħtieġ. Mis-sit tat-test, jistgħu jibagħtu kodiċi u stampi għall-produzzjoni.

Tqegħid u tiżvolġi aktar faċli

Il-pjattaforma bbażata fuq il-kontejners tad-docker tagħmilha faċli għall-port tat-tagħbija tiegħek. Il-kontenituri Docker jistgħu jaħdmu fuq il-magna lokali tiegħek, jew reali jew fuq magna virtwali f'ċentru tad-dejta, jew fil-cloud.

Il-portabbiltà u n-natura ħafifa ta 'docker jagħmluha faċli biex timmaniġġja dinamikament l-ammont ta' xogħol tiegħek. Tista' tuża docker biex tuża jew tagħlaq l-applikazzjoni jew is-servizzi tiegħek. Il-veloċità tad-docker tippermetti li dan isir kważi f'ħin reali.

Tagħbijiet ogħla u aktar payloads

Docker huwa ħafif u veloċi. Tipprovdi alternattiva reżiljenti u kost-effettiva għal magni virtwali bbażati fuq l-iperviżur. Huwa speċjalment utli f'ambjenti ta 'tagħbija għolja, pereżempju, meta toħloq il-cloud jew il-pjattaforma bħala servizz tiegħek stess. Iżda huwa utli wkoll għal applikazzjonijiet żgħar u ta' daqs medju meta trid tikseb aktar mir-riżorsi li għandek.

Komponenti ewlenin tad-Docker

Docker jikkonsisti f'żewġ komponenti ewlenin:

  • Docker: pjattaforma ta 'virtwalizzazzjoni ta' sors miftuħ;
  • Docker Hub: Il-pjattaforma bħala servizz tagħna għad-distribuzzjoni u l-ġestjoni tal-kontenituri Docker.

Nota! Docker huwa mqassam taħt il-liċenzja Apache 2.0.

Arkitettura Docker

Docker juża arkitettura klijent-server. Il-klijent Docker jikkomunika mad-daemon Docker, li jieħu l-piż li joħloq, jaħdem u jqassam il-kontenituri tiegħek. Kemm il-klijent kif ukoll is-server jistgħu jaħdmu fuq l-istess sistema, tista 'tqabbad il-klijent ma' daemon docker remot. Il-klijent u s-server jikkomunikaw permezz ta 'socket jew API RESTful.

Nifhmu Docker

Docker daemon

Kif muri fid-dijagramma, id-daemon jaħdem fuq il-magna ospitanti. L-utent ma jinteraġixxix mas-server direttament, iżda juża l-klijent għal dan.

Klijent Docker

Il-klijent Docker, il-programm docker, huwa l-interface prinċipali għal Docker. Jirċievi kmandi mill-utent u jinteraġixxi mad-daemon docker.

Ġewwa docker

Biex tifhem fiex jikkonsisti docker, trid tkun taf dwar tliet komponenti:

  • immaġini
  • reġistru
  • Kontenituri

L-immaġini

L-immaġni Docker hija mudell li jinqara biss. Pereżempju, l-immaġni jista 'jkun fiha s-sistema operattiva Ubuntu b'Apache u applikazzjoni fuqha. L-immaġini jintużaw biex jinħolqu kontenituri. Docker jagħmilha faċli biex toħloq stampi ġodda, taġġorna dawk eżistenti, jew tista 'tniżżel immaġini maħluqa minn nies oħra. L-immaġini huma komponenti ta 'docker build.

Reġistru

Ir-reġistru Docker jaħżen immaġini. Hemm reġistri pubbliċi u privati ​​li minnhom tista’ tniżżel jew ittella’ immaġini. Reġistru Docker pubbliku huwa Ċentru tad-Docker. Hemm kollezzjoni kbira ta’ immaġini maħżuna hemmhekk. Kif tafu, immaġini jistgħu jinħolqu minnek jew tista 'tuża immaġini maħluqa minn oħrajn. Ir-reġistri huma komponent tad-distribuzzjoni.

Kontenituri

Kontenituri huma simili għal direttorji. Il-kontenituri fihom dak kollu li l-applikazzjoni teħtieġ biex taħdem. Kull kontenitur huwa maħluq minn immaġini. Il-kontenituri jistgħu jinħolqu, jinbdew, jitwaqqfu, jiġu emigrati jew imħassra. Kull kontenitur huwa iżolat u jipprovdi pjattaforma sigura għall-applikazzjoni. Il-kontenituri huma komponenti tax-xogħol.

Allura kif jaħdem Docker?

S'issa nafu li:

  • nistgħu noħolqu immaġini li fihom jinsabu l-applikazzjonijiet tagħna;
  • nistgħu noħolqu kontenituri minn stampi biex imexxu l-applikazzjonijiet;
  • Nistgħu nqassmu immaġini permezz ta 'Docker Hub jew reġistru ieħor tal-immaġni.

Ejja naraw kif dawn il-komponenti joqogħdu flimkien.

Kif taħdem l-immaġni?

Diġà nafu li immaġini hija mudell li jinqara biss li minnu jinħoloq kontenitur. Kull immaġini tikkonsisti minn sett ta 'livelli. Docker juża sistema tal-fajl tal-unjoni biex jgħaqqdu dawn il-livelli f'immaġni waħda. Is-sistema tal-fajls tal-Unjoni tippermetti li fajls u direttorji minn sistemi ta' fajls differenti (fergħat differenti) jikkoinċidu b'mod trasparenti, u toħloq sistema ta' fajls koerenti.

Waħda mir-raġunijiet għaliex docker huwa ħafif huwa għaliex juża saffi bħal dan. Meta tibdel l-immaġni, bħall-aġġornament ta 'applikazzjoni, jinħoloq saff ġdid. Għalhekk, mingħajr ma tissostitwixxi l-immaġni kollha jew tibniha mill-ġdid, kif jista 'jkollok tagħmel ma' magna virtwali, is-saff biss huwa miżjud jew aġġornat. U m'għandekx għalfejn tqassam l-immaġni l-ġdida kollha, l-aġġornament biss huwa mqassam, li jagħmilha aktar faċli u aktar mgħaġġla biex tqassam immaġini.

Fil-qalba ta 'kull immaġini hemm immaġini bażi. Per eżempju, ubuntu, l-immaġni bażi ta 'Ubuntu, jew fedora, l-immaġni bażi tad-distribuzzjoni Fedora. Tista 'wkoll tuża immaġini bħala bażi għall-ħolqien ta' stampi ġodda. Pereżempju, jekk għandek immaġni apache, tista 'tużaha bħala immaġni bażi għall-applikazzjonijiet tal-web tiegħek.

Nota! Docker tipikament jiġbed immaġini mir-reġistru Docker Hub.

Immaġini Docker jistgħu jinħolqu minn dawn l-immaġini bażi; nsejħu l-passi biex jinħolqu dawn l-immaġini istruzzjonijiet. Kull istruzzjoni toħloq immaġni jew livell ġdid. L-istruzzjonijiet se jkunu dawn li ġejjin:

  • run kmand
  • iżżid fajl jew direttorju
  • toħloq varjabbli ambjentali
  • istruzzjonijiet dwar x'għandek taħdem meta jitnieda l-kontenitur ta 'din l-immaġni

Dawn l-istruzzjonijiet huma maħżuna f'fajl Dockerfile. Docker jaqra dan Dockerfile, meta tibni l-immaġni, tesegwixxi dawn l-istruzzjonijiet u tirritorna l-immaġni finali.

Kif jaħdem ir-reġistru tad-docker?

Ir-reġistru huwa repożitorju għall-immaġini docker. Ladarba tinħoloq l-immaġni, tista 'tippubblikaha fir-reġistru pubbliku ta' Docker Hub jew fir-reġistru personali tiegħek.

Bil-klijent docker, tista 'tfittex immaġini diġà ppubblikati u tniżżilhom fil-magna docker tiegħek biex toħloq kontenituri.

Docker Hub jipprovdi repożitorji tal-immaġni pubbliċi u privati. It-tiftix u t-tniżżil ta' immaġini minn repożitorji pubbliċi huwa disponibbli għal kulħadd. Il-kontenut tal-ħażniet privati ​​mhumiex inklużi fir-riżultati tat-tfittxija. U int u l-utenti tiegħek biss tista' tirċievi dawn l-immaġini u toħloq kontenituri minnhom.

Kif jaħdem kontenitur?

Kontenitur jikkonsisti f'sistema operattiva, fajls tal-utent, u metadejta. Kif nafu, kull kontenitur huwa maħluq minn immaġni. Din l-immaġni tgħid lil docker x'inhu fil-kontenitur, liema proċess għandu jibda, meta jibda l-kontenitur, u dejta oħra ta 'konfigurazzjoni. L-immaġni ta' Docker hija ta' qari biss. Meta docker jibda kontenitur, joħloq saff ta 'qari/kitba fuq l-immaġni (bl-użu tas-sistema tal-fajl tal-unjoni kif iddikjarat qabel) li fih tista' titħaddem l-applikazzjoni.

X'jiġri meta jibda l-kontenitur?

Jew bl-użu tal-programm docker, jew billi tuża l-API RESTful, il-klijent docker jgħid lid-daemon docker biex jibda l-kontenitur.

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

Ejja nagħtu ħarsa lejn dan il-kmand. Il-klijent huwa mniedi bl-użu tal-kmand docker, b'għażla run, li tgħid li se jitnieda kontejner ġdid. Ir-rekwiżiti minimi biex jitħaddem kontenitur huma l-attributi li ġejjin:

  • liema immaġni tuża biex toħloq il-kontenitur. Fil-każ tagħna ubuntu
  • il-kmand li trid tmexxi meta l-kontenitur jinbeda. Fil-każ tagħna /bin/bash

X'jiġri taħt il-barnuża meta nħaddmu dan il-kmand?

Docker, fl-ordni, jagħmel dan li ġej:

  • tniżżel l-immaġni ubuntu: docker jiċċekkja għad-disponibbiltà tal-immaġni ubuntu fuq il-magna lokali, u jekk ma jkunx hemm, imbagħad niżżel minn Ċentru tad-Docker. Jekk ikun hemm immaġini, tużaha biex toħloq kontenitur;
  • joħloq kontenitur: meta l-immaġni tiġi riċevuta, docker jużaha biex toħloq kontenitur;
  • jinizjalizza s-sistema tal-fajls u jimmonta l-livell tal-qari biss: il-kontenitur jinħoloq fis-sistema tal-fajls u l-immaġni hija miżjuda mal-livell ta 'qari biss;
  • jinizjalizza n-netwerk/pont: joħloq interface tan-netwerk li jippermetti li docker jikkomunika mal-magna ospitanti;
  • L-issettjar tal-indirizz IP: isib u jistabbilixxi l-indirizz;
  • Jibda l-proċess speċifikat: iniedi l-applikazzjoni tiegħek;
  • Jipproċessa u jipproduċi output mill-applikazzjoni tiegħek: jgħaqqad u jirreġistra l-input, l-output u l-fluss ta’ żbalji standard tal-applikazzjoni tiegħek sabiex tkun tista’ ssegwi kif qed taħdem l-applikazzjoni tiegħek.

Issa għandek kontenitur li jaħdem. Tista 'timmaniġġja l-kontenitur tiegħek, tinteraġixxi mal-applikazzjoni tiegħek. Meta tiddeċiedi li twaqqaf l-applikazzjoni, ħassar il-kontenitur.

Teknoloġiji użati

Docker huwa miktub f'Go u juża xi karatteristiċi tal-qalba tal-Linux biex jimplimenta l-funzjonalità ta 'hawn fuq.

Spazji tal-ismijiet

Docker juża t-teknoloġija namespaces biex torganizza spazji tax-xogħol iżolati, li nsejħu kontenituri. Meta nibdew kontenitur, docker joħloq sett ta 'namespaces għal dak il-kontenitur.

Dan joħloq saff iżolat, b'kull aspett tal-kontenitur jaħdem fl-ispazju tal-isem tiegħu stess u ma jkollux aċċess għas-sistema esterna.

Lista ta' xi spazji tal-isem li juża docker:

  • pid: biex tiżola l-proċess;
  • xibka: għall-ġestjoni ta' interfaces tan-netwerk;
  • ipc: biex jimmaniġġjaw ir-riżorsi tal-IPC. (ICP: Komunikazzjoni InterProccess);
  • mnt: biex jimmaniġġjaw punti ta' muntaġġ;
  • UTC: biex tiżola l-kernel u l-ġenerazzjoni tal-verżjoni tal-kontroll (UTC: Unix timesharing system).

Gruppi ta' kontroll

Docker juża wkoll it-teknoloġija cgroups jew gruppi ta' kontroll. Iċ-ċavetta biex titħaddem applikazzjoni b'mod iżolat hija li tipprovdi lill-applikazzjoni bir-riżorsi li trid tipprovdi biss. Dan jiżgura li l-kontenituri jkunu ġirien tajbin. Gruppi ta 'kontroll jippermettulek taqsam ir-riżorsi tal-ħardwer disponibbli u, jekk meħtieġ, tiffissa limiti u restrizzjonijiet. Pereżempju, tillimita l-ammont possibbli ta 'memorja għall-kontenitur.

Sistema ta' Fajl tal-Unjoni

Union File Sysem jew UnionFS hija sistema ta 'fajls li taħdem billi toħloq saffi, u tagħmilha ħafifa ħafna u veloċi. Docker juża UnionFS biex joħloq il-blokki li minnhom jinbena l-kontenitur. Docker jista' juża diversi varjanti ta' UnionFS inklużi: AUFS, btrfs, vfs u DeviceMapper.

Formati tal-Kontenituri

Docker jgħaqqad dawn il-komponenti f'tgeżwir li nsejħu l-format tal-kontenitur. Il-format default jissejjaħ libcontainer. Docker jappoġġja wkoll il-format tradizzjonali tal-kontenitur fuq l-użu tal-Linux LXC. Fil-futur, Docker jista 'jappoġġja formati oħra ta' kontenitur. Per eżempju, l-integrazzjoni ma 'Ħabsijiet BSD jew Żoni Solaris.

Sors: www.habr.com

Żid kumment