Docker huwa ġugarell jew le? Jew għadu?

Hello kulħadd!

Irrid verament nasal dritt għas-suġġett, iżda jkun aktar korrett li ngħid ftit dwar l-istorja tiegħi:

Dħul

Jiena programmatur b'esperjenza fl-iżvilupp ta' applikazzjonijiet ta' paġna waħda frontend, scala/java u nodejs fuq is-server.

Għal żmien pjuttost twil (definittivament ftit jew tliet snin), kont tal-opinjoni li Docker huwa manna mis-sema u b'mod ġenerali għodda friska ħafna u assolutament kull żviluppatur għandu jkun jista 'jużaha. U minn dan jirriżulta li kull żviluppatur għandu jkollu Docker installat fuq il-magna lokali tiegħu. Xi ngħidu dwar l-opinjoni tiegħi, ara l-postijiet battala li huma stazzjonati fuq l-istess hh. Kull tieni waħda fiha ssemmi docker, u jekk inti stess, dan ikun il-vantaġġ kompetittiv tiegħek 😉

Fi triqti, iltqajt ma' ħafna nies, bl-attitudnijiet differenti tagħhom lejn Docker u l-ekosistema tiegħu. Xi wħud qalu li din hija ħaġa konvenjenti li tiggarantixxi l-funzjonalità cross-platform. It-tieni ma fehmux għaliex għandhom jimxu fil-kontejners u x'qligħ se jiġi minnu, it-tielet ma ħasad xejn u ma ddejjaq (kitbu biss il-kodiċi u marru d-dar - għirahom, mill- mod :)

Raġunijiet għall-użu

Għaliex użajt docker? Probabbilment għar-raġunijiet li ġejjin:

  • tnedija tad-database, 99% tal-applikazzjonijiet jużawhom
  • tnedija ta 'nginx għad-distribuzzjoni frontend u proxy għal backend
  • tista' tippakkja l-applikazzjoni f'immaġni docker, b'dan il-mod l-applikazzjoni tiegħi taħdem kull fejn teżisti docker, il-problema tad-distribuzzjoni tissolva immedjatament
  • skoperta tas-servizz barra mill-kaxxa, tista 'toħloq mikroservizzi, kull kontenitur (konness ma' netwerk komuni) jista 'faċilment jilħaq ieħor permezz ta' alias, konvenjenti ħafna
  • Huwa pjaċevoli li toħloq kontenitur u "tilgħab" fih.

Dak li dejjem MA jogħġobni dwar docker:

  • Sabiex l-applikazzjoni tiegħi taħdem, għandi bżonn Docker innifsu fuq is-server. Għaliex għandi bżonn dan jekk l-applikazzjonijiet tiegħi jaħdmu fuq jre jew nodejs u l-ambjent għalihom diġà jinsab fuq is-server?
  • jekk irrid inmexxi l-immaġni (privata) tiegħi mibnija lokalment fuq server remot, allura għandi bżonn ir-repożitorju tad-docker tiegħi stess, għandi bżonn li r-reġistru jaħdem x'imkien u għandi bżonn ukoll nikkonfigura https, minħabba li docker cli jaħdem biss fuq https. Oh damn ... hemm għażliet, ovvjament, biex issalva l-immaġni lokalment permezz docker save u sempliċement ibgħat l-immaġni permezz ta 'scp... Imma dak huwa ħafna movimenti tal-ġisem. U barra minn hekk, tidher qisha soluzzjoni "crutch" sakemm jidher ir-repożitorju tiegħek stess
  • docker-compose. Huwa meħtieġ biss biex imexxu l-kontenituri. Dak kollox. Ma jista’ jagħmel xi ħaġa oħra. Docker-compose għandu mazz ta 'verżjonijiet tal-fajls tiegħu, sintassi tiegħu stess. Ma jimpurtax kemm hu dikjarattiv, ma rridx naqra d-dokumentazzjoni tagħhom. M'għandi bżonnha imkien ieħor.
  • meta jaħdmu f'tim, ħafna nies jiktbu Dockerfile b'mod mgħawweġ ħafna, ma jifhmux kif huwa miżmum fil-cache, iżidu dak kollu li għandhom bżonn u m'għandhomx bżonn mal-immaġni, jirtu minn immaġini li mhumiex f'Dockerhub jew repożitorju privat, joħolqu xi docker-compose fajls b'databases u xejn ma jippersisti. Fl-istess ħin, l-iżviluppaturi kburin jiddikjaraw li Docker huwa frisk, kollox jaħdem lokalment għalihom, u HR importanti jikteb fil-post battal: "Aħna nużaw Docker u għandna bżonn kandidat b'esperjenza ta 'xogħol bħal din."
  • Jiena kontinwament imdejjaq minn ħsibijiet dwar li ngħolli kollox f'Docker: postgresql, kafka, redis. Hija ħasra li mhux kollox jaħdem f'kontenituri, mhux kollox huwa faċli biex jiġi kkonfigurat u mmexxi. Dan huwa appoġġjat minn żviluppaturi ta 'partijiet terzi, u mhux mill-bejjiegħa nfushom. U mill-mod, il-mistoqsija tqum immedjatament: il-bejjiegħa ma joqogħdu jinkwetaw dwar iż-żamma tal-prodotti tagħhom f'Docker, għaliex dan, forsi jafu xi ħaġa?
  • Il-mistoqsija dejjem tqum dwar il-persistenza tad-dejta tal-kontejners. u mbagħad taħseb, għandi narma biss id-direttorju ospitanti jew noħloq volum docker jew nagħmel kontenitur tad-dejta li issa huwa deprecated? Jekk narma direttorju, allura għandi bżonn niżgura li l-uid u gid tal-utent fil-kontenitur jaqbel mal-id tal-utent li nieda l-kontenitur, inkella l-fajls maħluqa mill-kontenitur jinħolqu bi drittijiet tal-għeruq. Jekk nuża volume allura d-data sempliċiment tinħoloq f'xi /usr/* u jkun hemm l-istess storja b uid u gid bhal fl-ewwel ka. Jekk qed tniedi komponent ta' parti terza, trid taqra d-dokumentazzjoni u tfittex it-tweġiba għall-mistoqsija: "f'liema direttorji tal-kontenituri l-komponent jikteb fajls?"

Dejjem ma għoġobnix il-fatt li kelli nagħmel ħajtu ma' Docker għal żmien twil wisq fl-istadju inizjali: I dehret kif tniedi kontenituri, minn liema immaġini tniedi, għamilt Makefiles li kien fihom psewdonimi għal kmandi twal Docker. Ddejjaqt docker-compose għax ma ridtx nitgħallem għodda oħra fl-ekosistema docker. U docker-compose up Iddejjaqni, speċjalment jekk xorta waħda jiltaqgħu hemm build kostruzzjonijiet, aktar milli immaġini diġà mmuntati. Kulma ridt verament kien li nagħmel prodott b'mod effiċjenti u malajr. Imma ma stajtx nifhem kif nuża docker.

Introduzzjoni Ansible

Riċentement (tliet xhur ilu), ħdimt ma 'tim DevOps, li kważi kull membru tiegħu kellu attitudni negattiva lejn Docker. Għal raġunijiet:

  • docker jirregola iptables (għalkemm tista' tiddiżattivah f'daemon.json)
  • docker huwa buggy u mhux se nħaddmuh fil-produzzjoni
  • jekk docker daemon jiġġarraf, allura l-kontenituri kollha bl-infrastruttura jiġġarrfu kif xieraq
  • l-ebda ħtieġa għal docker
  • għaliex docker jekk hemm magni Ansible u virtwali

Fl-istess xogħol, sirt familjari ma 'għodda oħra - Ansible. Smajt dwarha darba, imma ma ppruvajtx nikteb il-playbooks tiegħi stess. U issa bdejt nikteb il-kompiti tiegħi u mbagħad il-viżjoni tiegħi nbidlet kompletament! Minħabba li indunajt: Ansible għandu moduli għat-tħaddim tal-istess kontenituri docker, bini ta 'immaġni, netwerks, eċċ., U kontenituri jistgħu jitmexxew mhux biss lokalment, iżda wkoll fuq servers remoti! Il-pjaċir tiegħi ma kien jaf l-ebda limiti - sibt għodda NORMALI u warrab il-fajls tiegħi Makefile u docker-compose, ġew sostitwiti b'kompiti yaml. Il-kodiċi tnaqqas bl-użu ta 'kostruzzjonijiet simili loop, when, Eċċ

Docker għat-tħaddim ta' komponenti ta' partijiet terzi bħal databases

Dan l-aħħar sirt familjari mal-mini ssh. Irriżulta li huwa faċli ħafna li "tgħaddi" il-port ta 'server remot lejn port lokali. Is-server remot jista 'jkun jew magna fis-sħaba jew magna virtwali li taħdem f'VirtualBox. Jekk il-kollega tiegħi jew jien neħtieġu database (jew xi komponent ieħor ta 'parti terza), nistgħu sempliċement nibdew is-server b'dan il-komponent u nitfih meta s-server ma jkunx meħtieġ. Il-port forwarding jagħti l-istess effett bħal database li taħdem f'kontenitur docker.

Dan il-kmand jgħaddi l-port lokali tiegħi lil server remot li jħaddem postgresql:

ssh -L 9000:localhost:5432 [protett bl-email]

L-użu ta 'server remot issolvi l-problema bl-iżvilupp tat-tim. Server bħal dan jista 'jintuża minn diversi żviluppaturi f'daqqa; m'għandhomx għalfejn ikunu jistgħu jikkonfiguraw postgresql, jifhmu Docker u intricacies oħra. Fuq server remot, tista 'tinstalla l-istess database f'Docker innifsu, jekk ikun diffiċli li tinstalla verżjoni speċifika. L-iżviluppaturi kollha jeħtieġu huwa li jipprovdu aċċess ssh!

Dan l-aħħar qrajt li l-mini SSH huma funzjonalità limitata ta 'VPN regolari! Tista 'sempliċement tinstalla OpenVPN jew implimentazzjonijiet oħra VPN, twaqqaf l-infrastruttura u tagħtiha lill-iżviluppaturi għall-użu. Dan huwa tant jibred!

Fortunatament, AWS, GoogleCloud u oħrajn jagħtuk sena ta' użu b'xejn, għalhekk użahom! Huma irħas jekk itfihom meta ma jintużawx. Dejjem staqsejt għaliex għandi bżonn server remot bħal gcloud, jidher li sibthom.

Bħala magna virtwali lokali, tista 'tuża l-istess Alpine, li tintuża b'mod attiv f'kontenituri docker. Ukoll, jew xi distribuzzjonijiet ħfief oħra biex jagħmlu l-magna boot aktar malajr.

Bottom line: inti tista 'u għandha tmexxi databases u goodies infrastrutturali oħra fuq servers remoti jew fil-virtualbox. M'għandix bżonn docker għal dawn l-iskopijiet.

Ftit dwar l-immaġini u d-distribuzzjoni tad-docker

Diġà ktibt oġġett li fiha ridt inwassal li l-użu ta 'immaġini docker ma jipprovdi ebda garanzija. L-immaġini Docker huma meħtieġa biss biex jinħoloq kontenitur docker. Jekk qed taġġorna għal immaġni docker, allura qed taġġorna biex tuża kontenituri docker u tużahom biss.

Rajt xi mkien fejn l-iżviluppaturi tas-softwer iġibu l-prodotti tagħhom biss f'immaġni docker?
Ir-riżultat tal-biċċa l-kbira tal-prodotti huma fajls binarji għal pjattaforma speċifika; huma sempliċement miżjuda mal-immaġni docker, li tintiret mill-pjattaforma mixtieqa. Qatt ħsibt għaliex hemm tant immaġini simili fuq dockerhub? Daħħal nginx pereżempju, se tara 100500 immaġini minn nies differenti. Dawn in-nies ma żviluppawx nginx innifsu, huma sempliċement żiedu nginx uffiċjali mal-immaġni tad-docker tagħhom u ħawwruha bil-konfigurazzjonijiet tagħhom stess għall-konvenjenza tat-tnedija tal-kontenituri.

B'mod ġenerali, tista 'sempliċement taħżenha f'tgz, jekk xi ħadd jeħtieġ li jmexxiha f'docker, imbagħad ħallihom iżidu tgz mad-Dockerfile, jirtu mill-ambjent mixtieq u joħolqu pasti addizzjonali li ma jbiddlux l-applikazzjoni nnifisha f'tgz. Kull min se joħloq immaġni docker ikun jaf x'inhu tgz u x'għandu bżonn biex jaħdem. Dan huwa kif nuża docker hawn

Bottom line: M'għandix bżonn reġistru docker, ser nuża xi tip ta 'S3 jew sempliċement ħażna ta' fajls bħal google drive/dropbox

Docker f'CI

Il-kumpaniji kollha li ħdimt għalihom huma simili. Normalment huma tal-merċa. Jiġifieri, għandhom applikazzjoni waħda, munzell ta 'teknoloġija waħda (ukoll, forsi koppja jew tliet lingwi ta' programmar).

Dawn il-kumpaniji jużaw docker fuq is-servers tagħhom fejn jaħdem il-proċess CI. Mistoqsija: Għaliex għandek bżonn tibni proġetti f'kontenitur docker fuq is-servers tiegħek? Għaliex ma tippreparax biss ambjent għall-bini, pereżempju, tikteb playbook Ansible li se tinstalla l-verżjonijiet meħtieġa ta 'nodejs, php, jdk, kopja ċwievet ssh, eċċ għas-server li fih se sseħħ il-bini?

Issa nifhem li dan qed jispara lili nnifsi fis-sieq, għax docker ma jġib l-ebda profitt bl-iżolament tiegħu. Problemi li ltqajt ma' CI fid-docker:

  • għal darb'oħra għandek bżonn immaġni docker biex tibni. trid tfittex immaġni jew tikteb id-dockerfile tiegħek.
  • 90% li għandek bżonn tibgħat xi ċwievet ssh, dejta sigrieta li ma tridx tikteb lill-immaġni docker.
  • il-kontenitur jinħoloq u jmut, il-caches kollha jintilfu flimkien miegħu. il-bini li jmiss se jerġa 'jniżżel id-dipendenzi kollha tal-proġett, li jieħu ħafna ħin u ineffettiv, u l-ħin huwa flus.

L-iżviluppaturi ma jibnux proġetti f'kontenituri docker (darba kont fan bħal dan, tassew, inħossni sorry għalija nnifsi fil-passat xD). Fil-java huwa possibbli li jkollok diversi verżjonijiet u tibdelhom b'kmand wieħed għal dak li għandek bżonn issa. Huwa l-istess fin-nodejs, hemm nvm.

Output

Nemmen li d-docker huwa għodda qawwija u flessibbli ħafna, dan huwa l-iżvantaġġ tiegħu (ħsejjes stramba, iva). Bl-għajnuna tagħha, il-kumpaniji jistgħu faċilment jingħaqdu magħha u jużawha fejn meħtieġ u mhux meħtieġ. L-iżviluppaturi jniedu l-kontenituri tagħhom, xi wħud mill-ambjenti tagħhom, imbagħad dan kollu jgħaddi bla xkiel fis-CI u l-produzzjoni. It-tim DevOps qed jikteb xi tip ta 'kodiċi biex imexxi dawn il-kontenituri.

Uża docker fuq biss l-aktar riċenti stadju fil-fluss tax-xogħol tiegħek, ma tkaxkrux fil-proġett fil-bidu. Mhux se ssolvi l-problemi tan-negozju tiegħek. Huwa se jċaqlaq biss il-problemi għal livell IEĦOR u joffri s-soluzzjonijiet tiegħu stess, int se tagħmel xogħol doppju.

Meta docker ikun meħtieġ: Wasalt għall-konklużjoni li docker huwa tajjeb ħafna biex jottimizza proċess partikolari, iżda mhux biex jibni l-funzjonalità bażika

Jekk xorta tiddeċiedi li tuża docker, allura:

  • oqgħod attent ħafna
  • ma ġġiegħel lill-iżviluppaturi jużaw docker
  • lokalizza l-użu tiegħu f'post wieħed, ma tifrixha madwar ir-repożitorji kollha ta' Dockefile u docker-compose

PS:

Grazzi talli qrajt, nixtieqilkom deċiżjonijiet trasparenti fl-affarijiet tiegħek u ġranet tax-xogħol produttivi!

Sors: www.habr.com

Żid kumment