Kilalao ve i Docker sa tsia? Sa mbola marina ihany?

Miarahaba ny rehetra!

Tena te hivantana amin'ilay lohahevitra aho, fa mety kokoa ny milaza kely momba ny tantarako:

teny

Mpandrindra programa manana traikefa amin'ny famolavolana rindranasa pejy tokana, scala/java ary nodejs amin'ny mpizara aho.

Nandritra ny fotoana lava be (azo antoka fa roa na telo taona), dia nihevitra aho fa ny Docker dia mana avy any an-danitra ary amin'ny ankapobeny dia fitaovana tena mahafinaritra ary tena tokony hampiasa azy io ny mpamorona rehetra. Ary avy amin'izany dia manaraka izany fa ny mpamorona tsirairay dia tokony hametraka Docker amin'ny milina eo an-toerana. Ahoana ny hevitro, jereo ny toerana banga apetraka amin'io hh io ihany. Isaky ny segondra dia misy filazana momba ny docker, ary raha manana azy ianao dia ho tombony amin'ny fifaninanana izany πŸ˜‰

Teny an-dalana dia nifanena tamin'olona maro aho, miaraka amin'ny fihetsik'izy ireo amin'ny Docker sy ny tontolo iainany. Ny sasany dia nilaza fa zavatra mety io izay miantoka ny fampandehanana cross-platform. Ny faharoa dia tsy azony hoe nahoana izy ireo no mihazakazaka ao anaty kaontenera ary inona no tombony azo avy amin'izany, ny fahatelo dia tsy niraharaha mihitsy ary tsy niraharaha (nanoratra ny code fotsiny izy ireo dia nody - nialona azy ireo aho, tamin'ny fomba :)

Antony ampiasaina

Nahoana aho no nampiasa docker? Angamba noho ireto antony ireto:

  • Ny fandefasana angon-drakitra, 99% amin'ny fampiharana no mampiasa azy ireo
  • manomboka ny nginx ho an'ny fizarana frontend ary proxy amin'ny backend
  • azonao atao ny mametraka ny rindranasa amin'ny sary docker, amin'ity fomba ity dia hiasa na aiza na aiza misy ny docker, voavaha avy hatrany ny olan'ny fizarana
  • Ny fahitana ny serivisy ivelan'ny boaty, afaka mamorona microservices ianao, ny kaontenera tsirairay (mifandray amin'ny tambajotra iraisana) dia afaka manatona mora foana amin'ny alΓ lan'ny alias, tena mety.
  • Mahafinaritra ny mamorona kaontenera ary "milalao" ao anatiny.

Ny TSY tiako foana momba ny docker:

  • Mba hahafahan'ny fampiharana ataoko dia mila Docker mihitsy aho amin'ny mpizara. Nahoana aho no mila an'ity raha toa ka mandeha amin'ny jre na nodejs ny rindranasako ary efa eo amin'ny mpizara ny tontolo ho azy ireo?
  • raha te hampandeha ny sariko (private) eo an-toerana amin'ny mpizara lavitra aho, dia mila ny fitehirizam-bokiko manokana aho, mila ny rejisitra miasa any ho any aho ary mila manamboatra https ihany koa aho, satria ny docker cli dia miasa amin'ny https ihany. Oh damn... misy safidy, mazava ho azy, ny hamonjy ny sary eo an-toerana amin'ny alalan'ny docker save ary alefaso amin'ny scp fotsiny ny sary... Fa be dia be ny fihetsehan'ny vatana. Ary ankoatr'izay, toa vahaolana "crutch" izy io mandra-pisehoan'ny tranokalanao manokana
  • docker-compose. Ilaina fotsiny ny fampandehanana kaontenera. Izay ihany. Tsy afaka manao zavatra hafa izy. Docker-compose manana dikan-teny maromaro amin'ny rakitra, ny syntax azy manokana. Na manao ahoana na manao ahoana izany dia tsy te hamaky ny antontan-taratasiny aho. Tsy mila izany any an-kafa aho.
  • Rehefa miasa amin'ny ekipa iray, ny ankamaroan'ny olona dia manoratra Dockerfile amin'ny fomba tsy dia mazava loatra, tsy azony ny fomba fitahirizana azy, ampio izay rehetra ilainy ary tsy ilainy amin'ny sary, mandova sary tsy ao amin'ny Dockerhub na tahiry manokana, mamorona sasany docker-compose rakitra misy tahiry ary tsy misy na inona na inona mijanona. Mandritra izany fotoana izany, ny mpamorona dia manambara amim-pireharehana fa mahafinaritra i Docker, miasa eo an-toerana ho azy ireo ny zava-drehetra, ary ny HR dia manoratra amin'ny toerana banga: "Mampiasa Docker izahay ary mila kandidΓ  manana traikefa amin'ny asa toy izany."
  • Tsy mitsahatra ny mieritreritra momba ny fampiakarana ny zava-drehetra ao amin'ny Docker aho: postgresql, kafka, redis. Mampalahelo fa tsy ny zava-drehetra no miasa ao anaty kaontenera, tsy ny zava-drehetra no mora amboarina sy mihazakazaka. Izany dia tohanan'ny mpamorona antoko fahatelo, fa tsy ny mpivarotra mihitsy. Ary teny an-dalana, mipoitra avy hatrany ny fanontaniana: tsy manahy ny amin'ny fitazonana ny vokatra ao amin'ny Docker ny mpivarotra, nahoana no misy izany, angamba mahafantatra zavatra izy ireo?
  • Mipetraka foana ny fanontaniana momba ny faharetan'ny angon-drakitra container. ary avy eo mieritreritra ianao, tokony hametraka ny lahatahiry mpampiantrano ve aho na hamorona docker volume na hanao container data izay ankehitriny deprecated? Raha mametraka lahatahiry aho dia mila maka antoka fa ny uid sy gid'ny mpampiasa ao anaty container dia mifanandrify amin'ny id-n'ilay mpampiasa namoaka ilay container, raha tsy izany dia ho noforonina miaraka amin'ny zo fototra ny rakitra noforonin'ny container. Raha mampiasa aho volume dia ho noforonina amin'ny sasany fotsiny ny angona /usr/* ary hisy tantara mitovy amin'ny uid sy gid toy ny tamin'ny tranga voalohany. Raha manangana singa fahatelo ianao dia mila mamaky ny antontan-taratasy ary mitady ny valin'ny fanontaniana hoe: "ao amin'ny lahatahiry fitoeran-javatra inona no manoratra ny rakitra?"

Tsy tiako foana ny hoe tsy maintsy nitsambikina ela be tamin'i Docker aho amin'ny dingana voalohany: Hitako ny fomba fandefasana kaontenera, inona ny sary hatomboka, nanao Makefiles izay misy aliases amin'ny baiko Docker lava. Halako ny docker-compose satria tsy te hianatra fitaovana hafa ao amin'ny ecosystem docker aho. SY docker-compose up Nanelingelina ahy izany, indrindra raha mbola nihaona tany izy ireo build fanorenana, fa tsy sary efa tafangona. Ny hany tena niriako dia ny hanao vokatra mahomby sy haingana. Saingy tsy hitako ny fomba fampiasana docker.

Fampidirana Ansible

Vao haingana (telo volana lasa izay), niara-niasa tamin'ny ekipa DevOps aho, saika ny mpikambana rehetra amin'izy ireo dia nanana toe-tsaina ratsy momba an'i Docker. Noho ny antony:

  • Docker fitsipika iptables (na dia azonao atao aza ny manafoana izany ao amin'ny daemon.json)
  • Docker dia buggy ary tsy hanatanteraka izany amin'ny famokarana izahay
  • raha mianjera ny daemon docker, dia mianjera mifanaraka amin'izany ny kaontenera rehetra misy fotodrafitrasa
  • tsy mila docker
  • Nahoana no docker raha misy milina Ansible sy virtoaly

Tamin'io asa io ihany, dia nahafantatra fitaovana hafa aho - Ansible. Nandre momba izany indray mandeha aho, saingy tsy nanandrana nanoratra ny bokin-tantarako manokana. Ary izao dia nanomboka nanoratra ny asako aho ary niova tanteraka ny fahitako! Satria tsapako fa: Ansible dia manana mΓ΄dely amin'ny fampandehanana ireo kaontenera docker mitovy, fananganana sary, tambajotra, sns., ary ny container dia azo atao tsy eo an-toerana ihany, fa amin'ny mpizara lavitra ihany koa! Tsy nisy fetra ny hafaliako - Nahita fitaovana NORMAL aho ary nariako ny rakitra Makefile sy docker-compose, nosoloina asa yaml izy ireo. Nahena ny kaody tamin'ny fampiasana constructs toy loop, when, Etc.

Docker amin'ny fampandehanana ireo singa fahatelo toy ny angon-drakitra

Vao haingana aho no nahafantatra ny tonelina ssh. Hita fa tena mora ny "mandroso" ny seranan-tsambon'ny mpizara lavitra mankany amin'ny seranan-tsambo eo an-toerana. Ny mpizara lavitra dia mety ho milina ao anaty rahona na milina virtoaly mandeha ao amin'ny VirtualBox. Raha mila angon-drakitra aho na mpiara-miasa amiko (na singa hafa amin'ny antoko fahatelo), dia afaka manomboka fotsiny ny mpizara amin'ity singa ity isika ary mamono izany rehefa tsy ilaina ny mpizara. Ny fandefasana seranan-tsambo dia manome vokatra mitovy amin'ny angon-drakitra mandeha ao anaty container docker.

Ity baiko ity dia mandefa ny seranan-tsambo eo an-toerana mankany amin'ny mpizara lavitra mihazakazaka postgresql:

ssh -L 9000: localhost: 5432 [email voaaro]

Ny fampiasana mpizara lavitra dia mamaha ny olana amin'ny fampandrosoana ny ekipa. Ny mpizara toy izany dia azo ampiasaina amin'ny developer maromaro indray mandeha; tsy mila afaka manamboatra postgresql izy ireo, mahatakatra ny Docker sy ny pitsopitsony hafa. Amin'ny mpizara lavitra dia azonao atao ny mametraka ny angon-drakitra mitovy amin'ny Docker ihany, raha sarotra ny mametraka dikan-teny manokana. Ny ilain'ny mpamorona dia ny manome fidirana ssh!

Vao haingana aho no namaky fa ny tonelina SSH dia fiasa voafetra amin'ny VPN mahazatra! Azonao atao fotsiny ny mametraka OpenVPN na fampiharana VPN hafa, manangana fotodrafitrasa ary manome izany ho an'ny mpamorona hampiasaina. Tena mahafinaritra izany!

Soa ihany fa ny AWS, GoogleCloud ary ny hafa dia manome anao herintaona azo ampiasaina maimaim-poana, koa ampiasao izy ireo! Mora izy ireo raha vonoinao rehefa tsy ampiasaina. Nanontany tena foana aho hoe nahoana aho no mila mpizara lavitra toa ny gcloud, toa hitako izy ireo.

Amin'ny maha milina virtoaly eo an-toerana, azonao atao ny mampiasa Alpine mitovy, izay ampiasaina amin'ny fitahirizana docker. Eny, na fizarana maivana hafa mba hanamafisana kokoa ny milina.

Fehiny: azonao atao ary tokony hampandeha angon-drakitra sy fotodrafitrasa hafa amin'ny mpizara lavitra na ao anaty boaty virtoaly. Tsy mila docker aho amin'ireo tanjona ireo.

Kely momba ny sary sy ny fizarana docker

Efa nanoratra aho lahatsoratra izay tiako hampitaina fa ny fampiasana sary docker dia tsy manome antoka. Ny sary Docker dia ilaina fotsiny mba hamoronana container docker. Raha manavao amin'ny sary docker ianao, dia manatsara ny fampiasana container docker ianao ary hampiasa azy ireo fotsiny.

Efa hitanao ve na aiza na aiza misy ny mpamorona rindrambaiko mandefa ny vokatra amin'ny sary docker fotsiny?
Ny vokatry ny ankamaroan'ny vokatra dia rakitra binary ho an'ny sehatra manokana; ampidirina amin'ny sary docker fotsiny izy ireo, izay nolovaina tamin'ny sehatra irina. Efa nanontany tena ve ianao hoe nahoana no misy sary mitovitovy amin'izany ao amin'ny dockerhub? Ampidiro ohatra ny nginx, hahita sary 100500 avy amin'ny olona samihafa ianao. Ireo olona ireo dia tsy namolavola ny nginx mihitsy, nampiany fotsiny ny nginx ofisialy tamin'ny sarin'ny docker ary nokarakarainy tamin'ny configs azy manokana mba hanamorana ny fandefasana entana.

Amin'ny ankapobeny dia azonao atao ny mitahiry azy fotsiny ao amin'ny tgz, raha misy olona mila mitantana azy ao amin'ny docker, dia avelao izy ireo hampiditra tgz amin'ny Dockerfile, handova ny tontolo tianao ary hamorona buns fanampiny izay tsy manova ny fampiharana azy amin'ny tgz. Na iza na iza hamorona sary docker dia hahafantatra ny atao hoe tgz sy ny zavatra ilainy miasa. Izany no fomba ampiasako docker eto

Fehiny: Tsy mila rejistra docker aho, hampiasa karazana S3 aho na fitahirizana rakitra toy ny google drive/dropbox

Docker ao amin'ny CI

Mitovy daholo ny orinasa niasako rehetra. Enta-madinika izy ireny matetika. Izany hoe, manana fampiharana iray izy ireo, fitambarana teknolojia iray (eny, mety ho fiteny roa na telo fandaharana).

Ireo orinasa ireo dia mampiasa docker amin'ny lohamilina misy ny fizotran'ny CI. Fanontaniana: Nahoana ianao no mila manangana tetikasa ao anaty fitoeran-docker amin'ny lohamilinao? Maninona raha manomana tontolo iray ho an'ny fananganana fotsiny, ohatra, manorata playbook Ansible izay hametraka ny dikan-teny ilaina amin'ny nodejs, php, jdk, kopia ssh keys, sns. amin'ny mpizara izay hanaovana ny fananganana?

Ankehitriny dia takatro fa mitifitra ny tenako amin'ny tongotra izany, satria ny docker dia tsy mitondra tombony amin'ny fitokanana azy. Olana sendra ahy tamin'ny CI tao amin'ny docker:

  • mila sary docker indray ianao hananganana. mila mitady sary ianao na manoratra ny dockerfile anao manokana.
  • 90% fa mila mandefa fanalahidy ssh ianao, angon-drakitra miafina izay tsy tianao soratana amin'ny sary docker.
  • ny kaontenera dia noforonina ary maty, ny cache rehetra dia very miaraka aminy. ny fananganana manaraka dia hamerina indray ny fiankinan-doha amin'ny tetikasa rehetra, izay mandany fotoana sy tsy mahomby, ary ny fotoana dia vola.

Ny mpamorona dia tsy manangana tetikasa amin'ny kaontenera docker (tena mpankafy toy izany aho taloha, malahelo ny tenako taloha xD). Ao amin'ny java dia azo atao ny manana dikan-teny maromaro ary manova azy ireo amin'ny baiko iray amin'ny iray ilainao ankehitriny. Toy izany koa amin'ny nodejs, misy nvm.

famaranana

Mino aho fa ny docker dia fitaovana tena mahery vaika sy malefaka, izany no tsy fahampiana azy (toa hafahafa, eny). Miaraka amin'ny fanampiany, ny orinasa dia afaka miditra mora foana amin'izany ary mampiasa izany amin'ny fotoana ilana azy sy tsy ilaina. Ny mpamorona dia manomboka ny fitoerany, ny sasany amin'ny tontolo iainany, avy eo dia mikoriana tsara ao amin'ny CI sy ny famokarana izany. Ny ekipa DevOps dia manoratra karazana kaody hampandehanana ireo fitoeran-javatra ireo.

Ampiasao fotsiny ny docker ny vao haingana dingana ao amin'ny workflow, aza taritina ao amin'ny tetikasa eo am-piandohana. Tsy hamaha ny olan'ny orinasanao izany. Hafindrany amin'ny ambaratonga HAFA ihany ny olana ary hanolotra ny vahaolana ho azy manokana ianao, hanao asa indroa ianao.

Rehefa ilaina ny docker: Tonga tamin'ny fanatsoahan-kevitra aho fa ny docker dia tena tsara amin'ny fanatsarana ny dingana iray, fa tsy amin'ny fananganana fiasa fototra

Raha mbola manapa-kevitra ny hampiasa docker ianao dia:

  • mitandrema fatratra
  • aza manery ny mpamorona hampiasa docker
  • amboary ny fampiasana azy amin'ny toerana iray, aza aparitaka amin'ny Dockefile sy docker-compose repository

Sal:

Misaotra anao namaky, mirary anao handray fanapahan-kevitra mangarahara amin'ny raharahanao sy ny andro fiasana mamokatra!

Source: www.habr.com

Add a comment