Docker ma wax lagu ciyaaro mise maaha? Mise wali waa run?

Hello qof walba!

Runtii waxaan rabaa inaan si toos ah u galo mawduuca, laakiin waxa aad u saxnaan lahayd inaan wax yar ka sheego sheekadayda:

entry

Waxaan ahay barnaamij-sameeyaha khibrada u leh horumarinta codsiyada hal bog ee hore, scala/java iyo nodejs ee server-ka.

Muddo dheer (dhab ahaantii laba ama saddex sano), waxaan ahaa ra'yi ah in Docker uu yahay manna jannada ka yimid iyo guud ahaan qalab aad u fiican oo gabi ahaanba horumariye kastaa waa inuu awoodo inuu isticmaalo. Taasna waxay ku socotaa in horumariye kasta uu Docker ku rakibo mishiinkooda maxalliga ah. Ka warran ra'yigeyga, fiiri boosaska bannaan ee lagu dhejiyay isla hh. Midka labaad wuxuu ka kooban yahay xuska docker, oo haddii aad leedahay, tani waxay noqon doontaa faa'iidada tartankaaga πŸ˜‰

Intii aan soo socday, waxaan la kulmay dad badan, oo leh fikrado kala duwan oo ku wajahan Docker iyo hab-nololeedkeeda. Qaarkood waxay yiraahdeen tani waa shay ku habboon oo dammaanad qaadaya shaqeynta iskutallaabta. Kuwii labaad waxay garan waayeen sababta ay weel ku ordaan iyo faa'iidada ka soo baxaysa, kii saddexaadna waxba ma danaynayn oo isma dhibin (Codkii bay qoreen oo gurigii bay aadeen - waan ka masayray, by jid :)

Sababaha loo isticmaalo

Maxaan u isticmaalay docker? Malaha sababaha soo socda awgood:

  • Daah-furka xogta, 99% codsiyada ayaa isticmaala
  • soo saarida nginx ee qaybinta hore iyo wakiil ka noqoshada
  • waxaad ku xidhi kartaa codsiga sawirka docker, sidan codsigaygu wuxuu u shaqayn doonaa meel kasta oo docker jiro, dhibaatada qaybinta isla markiiba
  • helitaanka adeegga bannaanka sanduuqa, waxaad abuuri kartaa microservices, weel kasta (ku xiran shabakad caadi ah) si fudud u gaari kartaa mid kale iyada oo loo yaqaan alias, aad u habboon.
  • Waa wax lagu farxo in la abuuro weel oo lagu "ciyaaro" dhexdiisa.

Waxa aan had iyo jeer ka helin docker:

  • Si codsigaygu u shaqeeyo, waxaan u baahanahay Docker laftiisa server-ka. Maxaan ugu baahanahay tan haddii codsiyadaydu ku shaqeeyaan jre ama nodejs iyo bay'ada iyaga ayaa horeba ugu jiray server-ka?
  • Haddii aan rabo in aan ku shaqeeyo sawirkayga (gaarka ah) ee gudaha lagu dhisay server fog, ka dibna waxaan u baahanahay kaydiyaha docker-ka, waxaan u baahanahay diiwaanka si aan u shaqeeyo meel iyo sidoo kale waxaan u baahanahay inaan habeeyo https, sababtoo ah docker cli kaliya wuxuu ka shaqeeyaa https. Alla habaar... waxaa jira doorashooyin, dabcan, si loo badbaadiyo sawirka gudaha docker save oo kaliya u dir sawirka adigoo isticmaalaya scp ... Laakiin taasi waa dhaqdhaqaaq badan oo jirka ah. Oo ka sokow, waxay u egtahay xal "qalab" ilaa inta kaydkaagu uu soo baxo
  • docker-compose. Waxa loo baahan yahay oo keliya in weelasha lagu shubo. Waa intaas. Wax kale ma samayn karo. Docker-compose Waxay leedahay qaybo badan oo ka mid ah faylalkeeda, syntax u gaar ah. Si kasta oo ay u caddaynayso, ma rabo in aan akhriyo dukumeentigooda. Meel kale ugama baahni doono.
  • Marka aad ka shaqaynayso koox, dadka intooda badani waxay u qoraan Dockerfile si qalloocan, ma fahmaan sida loo kaydiyo, ku dara wax kasta oo ay u baahan yihiin oo aan u baahnayn sawirka, waxay dhaxlaan sawirro aan ku jirin Dockerhub ama kayd gaar ah, samee qaar ka mid ah docker-compose faylal leh xog-ururin mana jiraan. Isla mar ahaantaana, horumariyayaashu waxay si sharaf leh u caddeeyeen in Docker uu qabow yahay, wax walbana ay u shaqeeyaan iyaga, HR-na waxay si muhiim ah u qortaa booska bannaan: "Waxaan isticmaalnaa Docker waxaanan u baahanahay musharrax leh khibrad shaqo."
  • Waxaan si joogto ah u dhibaa fikradaha ku saabsan kor u qaadista wax kasta oo Docker: postgresql, kafka, redis. Waa wax laga xumaado in wax walba aysan ku shaqeyn weelasha, wax walba ma fududa in la habeeyo oo la ordo. Tan waxa taageeray horumariyeyaal dhinac saddexaad ah, oo ma aha iibiyeyaasha laftooda. Iyo habka, su'aashu waxay isla markiiba soo baxdaa: iibiyeyaashu kama welwelaan ilaalinta alaabtooda Docker, maxay tani u tahay, laga yaabee inay wax garanayaan?
  • Su'aashu waxay had iyo jeer ka dhalataa ku adkaysiga xogta weelka. ka dibna waxaad u maleyneysaa, ma inaan kor u qaadaa tusaha martida loo yahay ama aan abuuro mugga docker ama samee weel xog ah oo hadda ah deprecated? Haddii aan ku dhejiyo hagaha, markaa waxaan u baahanahay inaan hubiyo in uid iyo gid isticmaalaha weelka ku jira ay la mid yihiin id ee isticmaalaha bilaabay weelka, haddii kale faylasha uu sameeyay weelka waxaa lagu abuuri doonaa xuquuqaha xididka. Haddii aan isticmaalo volume markaas xogta ayaa si fudud loo abuuri doonaa qaar ka mid ah /usr/* waxaana jiri doona sheeko la mid ah uid iyo gid sidii kiiskii hore. Haddii aad bilaabayso qayb saddexaad, waxaad u baahan tahay inaad akhrido dukumeentiyada oo aad raadiso jawaabta su'aasha: "Hagahan weelkee qaybtu ku qortaa faylasha?"

Had iyo jeer ma jecli xaqiiqda ah inaan ku qasbanahay inaan wax ka sheego Docker waqti aad u dheer marxaladda hore: Waxaan ogaaday sida loo furo weelasha, sawirada laga bilaabo, sameeyay Makefiles oo ay ku jiraan magacyo amarrada dheer ee Docker. Waan necbahay docker-compose sababtoo ah ma rabin inaan ku barto qalab kale nidaamka deegaanka docker. IYO docker-compose up Way i dhibtay, gaar ahaan haddii ay weli halkaas ku kulmeen build dhismooyin, halkii ay ahaan lahaayeen sawirro hore loo soo ururiyey. Waxa kaliya ee aan rabey waxay ahayd in aan si hufan oo degdeg ah u sameeyo badeecad. Laakiin waan garan waayay sida loo isticmaalo docker.

Soo bandhigida macquulka ah

Dhawaan (saddex bilood ka hor), waxaan la shaqeeyay kooxda DevOps, ku dhawaad ​​xubin kasta oo ka mid ah kuwaas oo lahaa dabeecad xun oo ku wajahan Docker. Sababaha:

  • docker xeerarka iptables (inkasta oo aad ka joojin karto daemon.json)
  • docker waa buggy mana ku socon doono wax soo saarka
  • haddii docker daemon uu shil galo, markaa dhammaan weelasha leh kaabayaasha ayaa shil si waafaqsan
  • looma baahna docker
  • sababta docker haddii ay jiraan mashiinno macquul ah iyo kuwa casriga ah

Isla shaqada, waxaan bartay qalab kale - macquul ah. Hal mar ayaan ka maqlay, laakiin iskuma dayin in aan qoro buugaag-ciyaareedkayga. Oo hadda waxaan bilaabay inaan qoro hawlaheyga ka dibna aragtideyda gabi ahaanba way is bedeshay! Sababtoo ah waxaan xaqiiqsaday: Macquulku wuxuu leeyahay qaybo loogu talagalay socodsiinta weelasha isku midka ah, dhisidda sawirada, shabakadaha, iwm. Farxaddaydu ma ay garanayn wax xuduud ah - Waxaan helay qalab caadi ah oo iska tuuray faylalkaygii Makefile iyo docker-compose, waxaa lagu beddelay hawlo yaml ah. Koodhka ayaa la dhimay iyadoo la isticmaalayo dhismayaal sida loop, when, IWM

Docker ee socodsiinta qaybaha dhinac saddexaad sida xog-ururinta

Waxaan dhawaan bartay tunnel-ka ssh Waxaa soo baxday in ay aad u fududahay in loo "gudbiyo" dekedda server-ka fog ee deked maxalli ah. Server-ka fog waxa uu noqon karaa mishiin daruuraha ku jira ama mishiin dalwad ah oo ku dhex shaqeeya VirtualBox. Haddii saaxiibkay ama anigu aan u baahanahay xog-ururin (ama qayb kale oo dhinac saddexaad ah), waxaan si fudud ku bilaabi karnaa server-ka qaybtan oo aan daminno marka aan loo baahnayn server-ka. Soo gudbinta dekeddu waxay ku siinaysaa saamayn la mid ah tan kaydka xogta ee ku dhex jira weelka wax-xidhaha.

Amarkani wuxuu u gudbiyaa dekedeyda maxalliga ah server fog oo ordaya postgresql:

ssh -L 9000: localhost:5432 [emailka waa la ilaaliyay]

Isticmaalka server-ka fog waxay ku xallisaa dhibaatada horumarinta kooxda. Serfarkan oo kale waxaa isticmaali kara dhowr horumariye hal mar; uma baahna inay awood u yeeshaan inay habeeyaan postgresql, fahmaan Docker iyo waxyaabo kale oo adag. Server-ka fog, waxaad ku rakibi kartaa isla xogta Docker lafteeda, haddii ay adagtahay in la rakibo nooc gaar ah. Dhammaan horumariyayaashu waxay u baahan yihiin inay bixiyaan gelitaanka ssh!

Waxaan dhawaan akhriyay in tunnel-ka SSH ay yihiin shaqeyn xaddidan oo VPN joogto ah! Waxaad si fudud u rakibi kartaa OpenVPN ama hirgelinta VPN kale, dejiso kaabayaasha oo sii horumariyeyaasha si ay u isticmaalaan. Tani waa mid aad u fiican!

Nasiib wanaag, AWS, GoogleCloud iyo kuwa kale waxay ku siinayaan sanad isticmaal bilaash ah, markaa isticmaal! Way jaban yihiin haddii aad damiso marka aanad isticmaalin. Waxaan had iyo jeer la yaabay sababta aan ugu baahan lahaa server fog sida gcloud, waxay u muuqataa in aan iyaga helay.

Mashiinka farsamada maxalli ahaan, waxaad isticmaali kartaa isla Alpine, kaas oo si firfircoon loogu isticmaalo weelasha docker. Hagaag, ama qaybin kale oo khafiif ah si mishiinku u degdego.

Khadka hoose: waad awoodaa oo waa inaad ku socodsiiso xogta macluumaadka iyo agabka kaabayaasha kale ee server-yada fog ama sanduuqa Virtual. Uma baahni docker ujeedooyinkan.

Wax yar oo ku saabsan sawirada docker-ka iyo qaybinta

Hore ayaan u qoray maqaal taas oo aan rabay in aan sheego in isticmaalka sawirada docker aysan bixineynin wax dammaanad ah. Sawirada docker-ka ayaa loo baahan yahay oo kaliya si loo sameeyo weelka wax-xidhaha. Haddii aad u cusboonaysiinayso sawirka docker, markaa waxaad u cusboonaynaysaa inaad isticmaasho weelasha docker oo kaliya waxaad isticmaali doontaa.

Miyaad ku aragtay meel kasta oo soosaarayaasha software-ka ay alaabtooda ku soo dejiyaan oo kaliya sawirka docker?
Natiijada badeecadaha intooda badani waa faylalka binary ee goob gaar ah; waxaa si fudud loogu daraa sawirka docker, kaas oo laga dhaxlo goobta la rabo. Weligaa ma la yaabtay sababta ay sawirro badan oo la mid ah ugu jiraan dockerhub? Geli nginx tusaale ahaan, waxaad arki doontaa 100500 sawir oo dad kala duwan ah. Dadkani ma aysan horumarin nginx lafteeda, waxay si fudud ugu dareen nginx rasmi ah sawirkooda docker waxayna ku dhejiyeen qaab-dhismeedkooda si ay ugu habboonaato furitaanka weelasha.

Guud ahaan, waxaad si fudud ugu kaydin kartaa tgz, haddii qof u baahan yahay inuu ku socodsiiyo docker, ka dibna ha ku daro tgz Dockerfile, ka dhaxlaan jawiga la rabo oo ay abuuraan buns dheeraad ah oo aan beddelin codsiga laftiisa tgz. Qof kasta oo abuuri doona sawir docker wuxuu ogaan doonaa waxa tgz yahay iyo waxa uu u baahan yahay si uu u shaqeeyo. Tani waa sida aan u isticmaalo docker halkan

Khadka hoose: Uma baahni diiwaanka docker, waxaan isticmaali doonaa nooc ka mid ah S3 ama kaliya kaydinta faylka sida google drive/box

Docker ee CI

Dhammaan shirkadaha aan ka soo shaqeeyay waa isku mid. Badanaa waa dukaamo. Taasi waa, waxay leeyihiin hal codsi, hal qalab tignoolajiyadeed (si fiican, laga yaabee laba ama saddex luqadood oo barnaamij ah).

Shirkadahani waxay isticmaalaan docker-ka server-kooda halka habka CI uu socdo. Su'aal: Maxaad ugu baahan tahay inaad mashruucyo ku dhex dhisto weelka docker-ka ee server-yadaada? Waa maxay sababta aan loo diyaarin jawiga dhismaha, tusaale ahaan, u qor buug-ciyaareed macquul ah oo ku rakibaya noocyada lagama maarmaanka ah ee nodejs, php, jdk, koobi ssh furayaasha, iwm. server-ka uu dhismuhu ku dhici doono?

Hadda waxaan fahamsanahay in tani ay naftayda ku tooganayso cagta, sababtoo ah docker wax faa'iido ah ma keeno go'doomintiisa. Dhibaatooyinka aan kala kulmay CI ee docker:

  • mar labaad waxaad u baahan tahay sawir docker si aad u dhisto. waxaad u baahan tahay inaad raadiso sawir ama aad qorto dockerfile adiga kuu gaar ah.
  • 90% in aad u baahan tahay inaad u gudbiso qaar ka mid ah furayaasha ssh, xog sir ah oo aadan rabin inaad u qorto sawirka docker.
  • weelku wuu abuurmay wuuna dhintaa, dhamaan khasnadihii way la lumeen. dhismaha soo socda ayaa dib u soo dejisan doona dhammaan ku-tiirsanaanta mashruuca, taas oo waqti badan qaadanaysa oo aan waxtar lahayn, waqtiguna waa lacag.

Soo-saarayaashu kuma dhisaan mashruucyo weelasha docker-ka (Mar waxaan ahaa taageere, runtii, waan ka xumahay naftayda xD hore). Java-ga waxa suurtogal ah in lagu yeesho dhawr nooc oo aad ku beddesho hal amar oo aad hadda u baahan tahay. Waa isku mid nodejs, waxaa jira nvm.

gunaanad

Waxaan aaminsanahay in docker-ku yahay qalab aad u awood badan oo dabacsan, tani waa cilladdeeda (waxay u egtahay mid la yaab leh, haa). Caawinteeda, shirkaduhu waxay si fudud ugu qabsan karaan oo ay u isticmaali karaan meelaha loo baahan yahay oo aan loo baahnayn. Soo-saarayaashu waxay bilaabaan weelkooda, qaar ka mid ah deegaanadooda, ka dibna dhammaantood waxay si habsami leh ugu qulqulaan CI iyo wax soo saarka. Kooxda DevOps waxay qorayaan nooc ka mid ah kood si ay u socodsiiyaan weelashan.

Isticmaal docker kaliya shid ugu dambeeyay heerka socodka shaqadaada, ha u jiidin mashruuca bilowga. Ma xallin doonto dhibaatooyinkaaga ganacsi. Wuxuu kaliya u wareejin doonaa dhibaatooyinka heer kale oo wuxuu bixin doonaa xalkiisa, waxaad qaban doontaa shaqo labanlaab ah.

Marka docker loo baahan yahay: Waxaan imid gabagabada in docker uu aad ugu fiican yahay hagaajinta habka la bixiyay, laakiin maaha dhismaha shaqada aasaasiga ah

Haddii aad wali go'aansato inaad isticmaasho docker, markaa:

  • aad u taxaddar
  • ha ku qasbin horumariyayaasha inay isticmaalaan docker
  • meel ka dhig isticmaalkeeda, ha ku faafin dhammaan Dockfile-ka iyo kaydka-samaynta

PS:

Waad ku mahadsan tahay akhrinta, waxaan kuu rajeynayaa go'aamo hufan oo ku saabsan arrimahaaga iyo maalmaha shaqada ee waxtarka leh!

Source: www.habr.com

Add a comment