Na Docker ke ntho ea ho bapala kapa che? Kapa e ntse e le 'nete?

Hello mong le e mong!

Ke hlile ke batla ho toba taba, empa e ka ba ho nepahetseng ho bua hanyane ka pale ea ka:

ho kena

Ke moqapi ea nang le boiphihlelo ba ho nts'etsapele lits'ebetso tsa leqephe le le leng, scala/java le nodejs ho seva.

Ka nako e telele (ka lilemo tse 'maloa kapa tse tharo), ke ne ke e-na le maikutlo a hore Docker ke manna a tsoang leholimong' me ka kakaretso ke sesebelisoa se pholileng haholo 'me moqapi e mong le e mong o lokela ho khona ho se sebelisa. Mme ho tsoa ho sena ho latela hore moqapi e mong le e mong o lokela ho kenya Docker mochining oa hae oa lehae. Ho thoe'ng ka maikutlo a ka, sheba ka likheo tse behiloeng ho eona hh. Motsotsoana o mong le o mong o bua ka docker, 'me haeba u na le eona, ona e tla ba monyetla oa hau oa tlholisano 😉

Ha ke le tseleng, ke ile ka kopana le batho ba bangata, ka maikutlo a bona a fapaneng mabapi le Docker le tikoloho ea eona. Ba bang ba boletse hore sena ke ntho e bonolo e tiisang ts'ebetso ea li-cross-platform. Ba bobeli ba ne ba sa utloisise hore na ke hobane'ng ha ba lokela ho matha ka li-container le hore na phaello e tla tsoa ho eona, ea boraro e ne e sa tsotelle ho hang ebile e sa khathatsehe (ba ile ba ngola khoutu feela ba khutlela hae - ke ba honohela, ka tsela :)

Mabaka a tšebeliso

Hobaneng ke sebelisitse docker? Mohlomong ka mabaka a latelang:

  • ho hlahisoa ha database, 99% ea lits'ebetso li li sebelisa
  • qala nginx bakeng sa kabo e ka pele le proxying ho backend
  • o ka kenya kopo ka setšoantšo sa docker, ka tsela ena kopo ea ka e tla sebetsa kae kapa kae moo docker e leng teng, bothata ba kabo bo rarolloa hang-hang.
  • ho sibolloa ha litšebeletso ka ntle ho lebokose, o ka etsa li-microservices, setshelo se seng le se seng (se hokahantsoeng le marang-rang a tloaelehileng) se ka fihla se seng habonolo ka lebitso, le bonolo haholo.
  • Ho monate ho etsa setshelo le ho "bapala" ho sona.

Seo ke sa se rateng kamehla ka docker:

  • E le hore kopo ea ka e sebetse, ke hloka Docker ka boeona ho seva. Hobaneng ke hloka see haeba lits'ebetso tsa ka li sebetsa ho jre kapa nodejs mme tikoloho ea bona e se e le ho seva?
  • haeba ke batla ho tsamaisa setšoantšo sa ka (se ikemetseng) se hahiloeng sebakeng sa heno ho seva se hole, joale ke hloka polokelo ea ka ea li-docker, ke hloka hore registry e sebetse kae-kae hape ke hloka ho lokisa https, hobane docker cli e sebetsa feela ho feta https. Oh damn ... ho na le likhetho, ehlile, ho boloka setšoantšo sebakeng sa heno ka docker save 'me u romelle setšoantšo feela ka scp ... Empa ke metsamao e mengata ea' mele. Ntle le moo, e shebahala joalo ka tharollo ea "crutch" ho fihlela polokelo ea hau e hlaha
  • docker-compose. E hlokahala feela ho tsamaisa lijana. Ke phetho. A ke ke a etsa letho le sele. Docker-compose e na le mefuta e mengata ea lifaele tsa eona, syntax ea eona. Ho sa tsotelehe hore na e phatlalatsoa hakae, ha ke batle ho bala litokomane tsa bona. Nke ke ka e hloka kae kapa kae.
  • ha u sebetsa ka sehlopha, batho ba bangata ba ngola Dockerfile ka mokhoa o khopameng haholo, ha ba utloisise hore na e bolokiloe joang, ba eketsa ntho e 'ngoe le e' ngoe eo ba e hlokang 'me ha ba hloke setšoantšo, ba rua ho tloha litšoantšong tse seng Dockerhub kapa polokelo ea poraefete. docker-compose lifaele tse nang le li-database mme ha ho letho le phehellang. Ka nako e ts'oanang, bahlahisi ba phatlalatsa ka boikhohomoso hore Docker e pholile, ntho e 'ngoe le e' ngoe e sebetsa sebakeng sa bona, 'me HR o ngola ka bohlokoa mosebetsing ona: "Re sebelisa Docker mme re hloka mokhethoa ea nang le phihlelo e joalo ea mosebetsi."
  • Ke lula ke tšoenngoa ke mehopolo ea ho phahamisa ntho e 'ngoe le e' ngoe ho Docker: postgresql, kafka, redis. Hoa soabisa hore ha se ntho e 'ngoe le e' ngoe e sebetsang ka har'a lijana, ha se ntho e 'ngoe le e' ngoe e bonolo ho e hlophisa le ho e sebetsa. Sena se tšehetsoa ke baetsi ba mekhatlo ea boraro, eseng ke barekisi ka bobona. 'Me ka tsela, potso e hlaha hang-hang: barekisi ha ba tšoenyehe ka ho boloka lihlahisoa tsa bona ho Docker, ke hobane'ng ha sena, mohlomong ba tseba ho hong?
  • Potso e lula e hlaha mabapi le ho phehella ha data ea setshelo. ebe u nahana, na ke lokela ho kenya lenane la moamoheli kapa ke thehe molumo oa docker kapa ke etse setshelo sa data se seng se le teng hona joale deprecated? Haeba ke beha bukana, ke hloka ho etsa bonnete ba hore uid le gid ea mosebelisi ka har'a sets'oants'o li ts'oana le id ea mosebelisi ea hlahisitseng setshelo, ho seng joalo lifaele tse entsoeng ke sets'oants'o li tla etsoa ka litokelo tsa motso. Haeba ke sebelisa volume ebe data e tla feela ho bōptjoa ho tse ling /usr/* 'me ho tla ba le pale e tšoanang le uid le gid joalo ka tabeng ea pele. Haeba u qala karolo ea motho oa boraro, u lokela ho bala litokomane ebe u batla karabo ea potso e reng: "Karolo e ngola lifaele ho li-directory life?"

Kamehla ke ne ke sa rate taba ea hore ke tlameha ho qeaqea le Docker nako e telele haholo mothating wa pele: Ke ile ka nahana ka mokhoa oa ho qala lijana, hore na ke tla qala litšoantšo life, ke entse Makefiles a nang le li-aliases ho litaelo tse telele tsa Docker. Ke ne ke hloile docker-compose hobane ke ne ke sa batle ho ithuta sesebelisoa se seng sebakeng sa tikoloho ea docker. LE docker-compose up Ho ne ho ntšoenya, haholo-holo haeba ba ne ba ntse ba kopana moo build meaho, ho ena le litšoantšo tse seng li bokane. Seo ke neng ke hlile ke se batla e ne e le ho etsa sehlahisoa ka katleho le kapele. Empa ke ne ke sa tsebe ho sebelisa docker.

Kenyelletso e utloahalang

Morao tjena (likhoeli tse tharo tse fetileng), ke sebelitse le sehlopha sa DevOps, hoo e batlang e le setho se seng le se seng se neng se e-na le maikutlo a fosahetseng ka Docker. Ka mabaka:

  • docker e laola li-iptables (le hoja u ka e thibela ho daemon.json)
  • docker e na le buggy mme re ke ke ra e tsamaisa ka tlhahiso
  • haeba daemon ea docker e ka senyeha, lijana tsohle tse nang le lisebelisoa tsa motheo li senyeha ka tsela e nepahetseng
  • ha ho hlokahale docker
  • ke hobane'ng ha docker haeba ho na le mechine e utloahalang le e sebetsang

Mosebetsing o tšoanang, ke ile ka tloaelana le sesebelisoa se seng - Ansible. Ke utloile ka eona hang, empa ha kea ka ka leka ho ngola libuka tsa ka tsa ho bapala. 'Me joale ke ile ka qala ho ngola mesebetsi ea ka' me joale pono ea ka e fetohile ka ho feletseng! Hobane ke hlokometse: Ansible e na le li-module tsa ho tsamaisa lijana tse tšoanang tsa li-docker, lihaho tsa litšoantšo, marang-rang, joalo-joalo, 'me lijana li ka tsamaisoa eseng sebakeng sa heno feela, empa le ho li-server tse hole! Thabo ea ka e ne e se na meeli - ke fumane sesebelisoa sa NORMAL mme ka lahla lifaele tsa ka tsa Makefile le docker-compose, tsa nkeloa sebaka ke mesebetsi ea yaml. Khoutu e ile ea fokotsoa ka ho sebelisa lisebelisoa tse kang loop, when, Joalo-joalo

Docker bakeng sa ho tsamaisa likarolo tsa mokha oa boraro joalo ka li-database

Haufinyane tjena ke tloaelane le lithanele tsa ssh. Ho ile ha fumaneha hore ho bonolo haholo ho "fetisetsa" boema-kepe ba seva se hole boema-kepeng ba lehae. Seva e hole e ka ba mochini o lerung kapa mochini o sebetsang o sebetsang ho VirtualBox. Haeba mosebetsi-'moho le 'na kapa ke hloka database (kapa karolo e' ngoe ea motho oa boraro), re ka qala seva ka karolo ena ebe re e tima ha seva e sa hlokahale. Ho fetisa li-port ho fana ka phello e ts'oanang le database e sebetsang ka har'a setshelo sa docker.

Taelo ena e fetisetsa koung ea ka ea lehae ho seva se hole se sebelisang postgresql:

ssh -L 9000: localhost:5432 [imeile e sirelelitsoe]

Ho sebelisa seva e hole ho rarolla bothata ka nts'etsopele ea sehlopha. Seva e joalo e ka sebelisoa ke baetsi ba 'maloa ka nako e le ngoe; ha ba hloke ho khona ho hlophisa postgresql, ho utloisisa Docker le lintho tse ling tse rarahaneng. Ho seva se hole, o ka kenya database e tšoanang ho Docker ka boeona, haeba ho le thata ho kenya mofuta o itseng. Bahlahisi bohle ba hlokang ke ho fana ka phihlello ea ssh!

Ke sa tsoa bala hore lithanele tsa SSH ke ts'ebetso e fokolang ea VPN e tloaelehileng! U ka kenya OpenVPN kapa lits'ebetso tse ling tsa VPN, ua theha lits'ebetso 'me u li fe bahlahisi hore ba li sebelise. Sena se monate haholo!

Ka lehlohonolo, AWS, GoogleCloud le tse ling li u fa selemo sa tšebeliso ea mahala, kahoo li sebelise! Li theko e tlase haeba u li tima ha li sa sebelisoe. Ke ne ke lula ke ipotsa hore na ke hobane'ng ha ke tla hloka seva e hole joalo ka gcloud, ho bonahala eka ke ba fumane.

Joaloka mochini o sebetsang oa lehae, o ka sebelisa Alpine e ts'oanang, e sebelisoang ka mafolofolo lijaneng tsa docker. Che, kapa liphaello tse ling tse bobebe ho etsa hore mochini o qale ka potlako.

Ntlha ea bohlokoa: o ka khona ho tsamaisa li-database le lisebelisoa tse ling tsa lisebelisoa ho li-server tse hole kapa ka lebokoseng la virtual. Ha ke hloke docker bakeng sa merero ena.

Hanyane ka litšoantšo tsa docker le kabo

Ke se ke ngotse sengoloa moo ke neng ke batla ho bontša hore ho sebelisa litšoantšo tsa docker ha ho fane ka tiiso. Litšoantšo tsa Docker lia hlokahala feela ho theha setshelo sa docker. Haeba u ntse u ntlafatsa setšoantšo sa docker, joale u ntse u ntlafatsa ho sebelisa lijana tsa docker 'me u tla li sebelisa feela.

Na u kile oa bona kae kapa kae moo baetsi ba software ba behang lihlahisoa tsa bona ka setšoantšo sa docker feela?
Sephetho sa lihlahisoa tse ngata ke lifaele tsa binary bakeng sa sethala se itseng; li eketsoa feela setšoantšong sa docker, se futsitsoeng sethaleng se lakatsehang. Na u kile ua ipotsa hore na ke hobane'ng ha ho na le litšoantšo tse ngata tse tšoanang ho dockerhub? Kenya nginx ka mohlala, u tla bona litšoantšo tse 100500 tse tsoang ho batho ba fapaneng. Batho bana ha baa ka ba iketsetsa nginx ka boeona, ba kentse nginx ea semmuso setšoantšong sa bona sa li-docker mme ba se noa ka li-configs tsa bona bakeng sa boiketlo ba ho qala lijana.

Ka kakaretso, o ka e boloka feela ka tgz, haeba motho e mong a hloka ho e tsamaisa ka docker, joale ba lumelle hore ba kenye tgz ho Dockerfile, ba rue sebakeng se lakatsehang 'me ba thehe li-buns tse eketsehileng tse sa fetoleng kopo ka boeona ho tgz. Mang kapa mang ea tla etsa setšoantšo sa docker o tla tseba hore na tgz ke eng le hore na o hloka ho sebetsa eng. Ena ke tsela eo ke sebelisang docker ka eona mona

Ntlha ea bohlokoa: Ha ke hloke ngoliso ea li-docker, ke tla sebelisa mofuta o itseng oa S3 kapa feela polokelo ea faele joaloka google drive / dropbox

Docker ho CI

Lik'hamphani tsohle tseo ke li sebelelitseng li tšoana. Hangata ke korosari. Ke hore, ba na le ts'ebeliso e le 'ngoe, stack e le' ngoe ea theknoloji (hantle, mohlomong lipuo tse peli kapa tse tharo tsa lenaneo).

Likhamphani tsena li sebelisa docker ho li-server tsa bona moo ts'ebetso ea CI e sebetsang teng. Potso: Hobaneng o hloka ho aha merero ka sejaneng sa docker ho li-server tsa hau? Ke hobane'ng ha u sa lokisetse feela tikoloho bakeng sa mohaho, mohlala, ngola buka ea ho bapala e Ansible e tla kenya mefuta e hlokahalang ea nodejs, php, jdk, kopi ea linotlolo tsa ssh, joalo-joalo ho seva eo mohaho o tla etsoa ho eona?

Hona joale kea utloisisa hore sena se ithunya leotong, hobane docker ha e tlise phaello leha e le efe ka ho itšehla thajana. Mathata ao ke kopaneng le ona le CI ho docker:

  • hape o hloka setšoantšo sa docker ho haha. o hloka ho batla setšoantšo kapa ho ngola dockerfile ea hau.
  • 90% eo u e hlokang ho fetisetsa linotlolo tse ling tsa ssh, data ea lekunutu eo u sa batleng ho e ngolla setšoantšo sa docker.
  • setshelo se bōpiloe 'me se shoa, li-cache tsohle li lahlehile hammoho le eona. mohaho o latelang o tla khoasolla lintho tsohle tse itšetlehileng ka morero, tse jang nako le tse sa sebetseng, 'me nako ke chelete.

Bahlahisi ha ba hahe merero ka lijaneng tsa docker (ke kile ka ba fan ea joalo, ka 'nete, ke ikutloa ke soabile nakong e fetileng xD). Ho java hoa khoneha ho ba le liphetolelo tse 'maloa le ho li fetola ka taelo e le' ngoe ho ea ho eo u e hlokang hona joale. Hoa tšoana le ho nodejs, ho na le nvm.

fihlela qeto e

Ke lumela hore docker ke sesebelisoa se matla haholo le se tenyetsehang, sena ke drawback ea sona (e utloahala e makatsa, e). Ka thuso ea eona, lik'hamphani li ka tšoaseha habonolo ho eona le ho e sebelisa moo ho hlokahalang le ho sa hlokahale. Bahlahisi ba qala lijana tsa bona, tse ling tsa libaka tsa bona, ebe tsohle li phalla hantle ho CI le tlhahiso. Sehlopha sa DevOps se ngola mofuta o itseng oa khoutu ho tsamaisa lijana tsena.

Sebelisa docker feela ka tsa moraorao sethaleng ha u ntse u sebetsa, u se ke ua e hulela morerong qalong. E ke ke ea rarolla mathata a hau a khoebo. O tla isa mathata feela boemong bo BANG mme a fane ka tharollo ea hae, o tla etsa mosebetsi o habeli.

Ha ho hlokahala docker: Ke fihletse qeto ea hore docker e sebetsa hantle haholo ho ntlafatsa ts'ebetso e fanoeng, empa eseng ho aha ts'ebetso ea mantlha.

Haeba u ntse u nka qeto ea ho sebelisa docker, joale:

  • hlokomela haholo
  • u se ke ua qobella bahlahisi ho sebelisa docker
  • beha ts'ebeliso ea eona sebakeng se le seng, u se ke oa e jala hohle libakeng tsohle tsa Dockefile le docker-compose repositories

PES:

Kea leboha ha u bala, ke u lakaletsa liqeto tse hlakileng litabeng tsa hau le matsatsi a sebetsang a sebetsang!

Source: www.habr.com

Eketsa ka tlhaloso