Docker ọ bụ ihe egwuregwu ụmụaka ka ọ bụ? Ka ọ ka bụ eziokwu?

Ndewo onye ọ bụla!

Achọrọ m ịbanye ozugbo na isiokwu a, mana ọ ga-aka mma ikwu ntakịrị gbasara akụkọ m:

entry

Abụ m onye mmemme nwere ahụmịhe n'ịzụlite ngwa ihu otu ihu, scala/java na nodejs na sava ahụ.

Ruo ogologo oge (ma ọ bụ di na nwunye ma ọ bụ afọ atọ), enwere m echiche na Docker bụ mana si n'eluigwe na n'ozuzu ngwá ọrụ dị mma nke ukwuu na onye ọ bụla na-emepụta kwesịrị inwe ike iji ya. Site na nke a, ọ bụ na onye nrụpụta ọ bụla kwesịrị itinye Docker na igwe mpaghara ha. Kedu maka echiche m, leba anya na oghere ndị ezigara n'otu hh. Nke abụọ nke abụọ nwere aha docker, ma ọ bụrụ na ị nwere ya, nke a ga-abụ uru asọmpi gị 😉

N'ụzọ m, ezutere m ọtụtụ mmadụ, ndị nwere àgwà dị iche iche ha nwere n'ebe Docker nọ na gburugburu ya. Ụfọdụ kwuru na nke a bụ ihe na-adaba adaba nke na-ekwe nkwa ịrụ ọrụ cross-platform. Ndị nke abụọ aghọtaghị ihe mere ha ga-eji na-agba ọsọ n'ime akpa na uru ọ ga-esi na ya pụta, nke atọ ahụghị ihe ọ bụla ma ọlị (ha dere koodu ahụ wee laa n'ụlọ - a na m anyaụfụ, site na ụzọ :)

Ihe kpatara eji

Gịnị mere m ji eji docker? Ikekwe n'ihi ihe ndị a:

  • mmalite nchekwa data, 99% nke ngwa na-eji ha
  • ịmalite nginx maka nkesa frontend na proxying na backend
  • ị nwere ike ịkwado ngwa ahụ na onyonyo docker, otu a ngwa m ga-arụ ọrụ ebe ọ bụla docker dị, a na-edozi nsogbu nkesa ozugbo.
  • nchọpụta ọrụ site na igbe ahụ, ị ​​nwere ike ịmepụta microservices, akpa ọ bụla (jikọrọ na netwọk nkịtị) nwere ike ịbịaru ọzọ n'ụzọ dị mfe site na utu aha, dị nnọọ mma.
  • Ọ na-atọ ụtọ ịmepụta akpa na "egwu" n'ime ya.

Ihe na-adịghị amasị m mgbe niile gbasara docker:

  • Ka ngwa m wee rụọ ọrụ, achọrọ m Docker n'onwe ya na sava ahụ. Kedu ihe kpatara m ji chọọ nke a ma ọ bụrụ na ngwa m na-agba ọsọ na jre ma ọ bụ nodejs na gburugburu ebe obibi maka ha adịlarị na ihe nkesa?
  • Ọ bụrụ na m chọrọ ịme ihe oyiyi m (nkeonwe) nke e wuru na mpaghara na sava dịpụrụ adịpụ, mgbe ahụ achọrọ m ebe nchekwa docker nke m, achọrọ m ndekọ ka ọ rụọ ọrụ ebe ọ dịkwa m mkpa ịhazi https, n'ihi na docker cli na-arụ ọrụ naanị https. Oh dam... enwere nhọrọ, n'ezie, iji chekwaa onyonyo na mpaghara site na docker save na zipu ihe oyiyi site na scp ... Ma nke ahụ bụ ọtụtụ mmegharị ahụ. Na agbakwunyere, ọ dị ka ihe ngwọta "crutch" ruo mgbe ebe nchekwa nke gị pụtara
  • docker-compose. Ọ bụ naanị ihe achọrọ iji na-agba akpa. Ọ gwụla. Ọ pụghị ime ihe ọ bụla ọzọ. Docker-compose nwere ụyọkọ ụdị faịlụ ya, syntax nke ya. N'agbanyeghị otú ọ si kwuo ya, achọghị m ịgụ akwụkwọ ha. Agaghị m achọ ya ebe ọzọ.
  • mgbe ị na-arụ ọrụ na otu, ọtụtụ ndị na-ede Dockerfile nke ọma, aghọtaghị ka esi echekwa ya, tinye ihe niile ha chọrọ na ọ dịghị mkpa na ihe oyiyi ahụ, keta ihe oyiyi na-adịghị na Dockerhub ma ọ bụ ebe nchekwa nzuzo, mepụta ụfọdụ. docker-compose faịlụ nwere ọdụ data na ọ dịghị ihe na-adịgide adịgide. N'otu oge ahụ, ndị mmepe ahụ ji nganga na-ekwupụta na Docker dị mma, ihe niile na-arụ ọrụ na mpaghara maka ha, HR na-edekwa nke ọma na ohere: "Anyị na-eji Docker na anyị chọrọ onye ndoro-ndoro nwere ahụmịhe ọrụ."
  • M na-enwekarị mmasị n'echiche banyere ibuli ihe niile dị na Docker: postgresql, kafka, redis. Ọ bụ ihe nwute na ọ bụghị ihe niile na-arụ ọrụ na arịa, ọ bụghị ihe niile dị mfe ịhazi na ịgba ọsọ. Ndị mmepe nke ndị ọzọ na-akwado nke a, ọ bụghịkwa ndị na-ere ahịa n'onwe ha. Na site n'ụzọ, ajụjụ a na-ebilite ozugbo: ndị na-ere ahịa anaghị echegbu onwe ha maka idobe ngwaahịa ha na Docker, gịnị kpatara nke a, ma eleghị anya, ha maara ihe?
  • Ajụjụ na-ebilite mgbe niile gbasara nnọgidesi ike nke data akpa. ma ị chere, m ga-ebuli akwụkwọ ndekọ aha nnabata ma ọ bụ mepụta olu docker ma ọ bụ mee akpa data nke dị ugbu a. deprecated? Ọ bụrụ na m rịgoro ndekọ, mgbe ahụ, m kwesịrị ijide n'aka na uid na gid nke onye ọrụ na akpa dabara na id nke onye ọrụ malitere akpa, ma ọ bụghị faịlụ kere akpa ga-kere mgbọrọgwụ ikike. Ọ bụrụ na m na-eji volume mgbe ahụ, a ga-emepụta data na ụfọdụ /usr/* na a ga-enwe otu akụkọ na uid na gid ka ọ dị na nke mbụ. Ọ bụrụ na ị na-ebupụta akụrụngwa nke ndị ọzọ, ịkwesịrị ịgụ akwụkwọ ahụ wee chọọ azịza nke ajụjụ a: "N'ime akwụkwọ ndekọ aha akụrụngwa na-ede faịlụ?"

eziokwu ahụ anaghị amasị m mgbe niile na m ga-etinyerịrị Docker ogologo oge na mbido mbụ: Achọpụtara m otú e si malite arịa, ihe oyiyi na-amalite site na, mere Makefiles nke nwere aliases na ogologo Docker iwu. Akpọrọ m akwụkwọ docker asị n'ihi na achọghị m ịmụta ngwá ọrụ ọzọ na gburugburu ebe obibi docker. NA docker-compose up Ọ na-ewute m, karịsịa ma ọ bụrụ na ha ka zutere ebe ahụ build ihe owuwu, karịa ihe oyiyi agbakọtalarị. Naanị ihe m chọrọ bụ naanị imepụta ngwaahịa nke ọma na ngwa ngwa. Mana enweghị m ike ịchọpụta ka esi eji docker.

Na-ewebata ekwe omume

N'oge na-adịbeghị anya (ọnwa atọ gara aga), mụ na ndị otu DevOps rụkọrọ ọrụ, ihe fọrọ nke nta ka ọ bụrụ onye ọ bụla n'ime ha nwere àgwà ọjọọ n'ebe Docker nọ. N'ihi ihe kpatara ya:

  • docker iwu iptables (n'agbanyeghị na ị nwere ike gbanyụọ ya na daemon.json)
  • docker na-akpa ike na anyị agaghị eme ya na mmepụta
  • Ọ bụrụ na docker daemon daa, mgbe ahụ arịa niile nwere akụrụngwa dara
  • ọ dịghị mkpa docker
  • gịnị kpatara docker ma ọ bụrụ na enwere igwe nwere ike ime na mebere

N'otu ọrụ ahụ, amatara m ngwá ọrụ ọzọ - ike. Anụrụ m banyere ya otu ugboro, ma agbalịghị m ide akwụkwọ egwuregwu nke m. Ma ugbu a, amalitere m ide ọrụ m wee gbanwee ọhụụ m kpamkpam! N'ihi na m ghọtara: Ansible nwere modul maka ịgba ọsọ otu docker containers, ihe oyiyi na-ewuli elu, netwọk, wdg, na containers nwere ike na-agba ọsọ ọ bụghị naanị na mpaghara, kamakwa na nke dịpụrụ adịpụ sava! Obi ụtọ m amaghị oke - achọtara m ngwá ọrụ NORMAL wee tụfuo Makefile m na faịlụ docker-edepụta, ejiri ọrụ yaml dochie ha. E wedara koodu ahụ site na iji ihe nrụpụta dịka loop, when, Wdg

Docker maka ịme ngwa ndị ọzọ dị ka ọdụ data

N'oge na-adịbeghị anya, amatara m ọwara ssh. Ọ tụgharịrị na ọ dị nnọọ mfe "ịbugharị" ọdụ ụgbọ mmiri nke ihe nkesa dịpụrụ adịpụ na ọdụ ụgbọ mmiri mpaghara. Ihe nkesa dịpụrụ adịpụ nwere ike ịbụ igwe na igwe ojii ma ọ bụ igwe mebere na-agba na VirtualBox. Ọ bụrụ na onye ọrụ ibe m ma ọ bụ m chọrọ nchekwa data (ma ọ bụ ụfọdụ akụkụ ndị ọzọ), anyị nwere ike ịmalite ihe nkesa na ngwa a wee gbanyụọ mgbe ihe nkesa adịghị mkpa. Mbugharị ọdụ ụgbọ mmiri na-enye otu mmetụta dị ka nchekwa data na-agba n'ime akpa docker.

Iwu a na-ebuga ọdụ ụgbọ mmiri mpaghara m gaa na sava dịpụrụ adịpụ na-agba postgresql:

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

Iji sava dịpụrụ adịpụ na-edozi nsogbu ahụ site na mmepe otu. Ọtụtụ ndị mmepe nwere ike iji ihe nkesa dị otú ahụ mee ihe ozugbo; ọ dịghị mkpa ka ha nwee ike ịhazi postgresql, ghọta Docker na mgbagwoju anya ndị ọzọ. Na sava dịpụrụ adịpụ, ịnwere ike ịwụnye otu nchekwa data na Docker n'onwe ya, ma ọ bụrụ na ọ siri ike ịwụnye otu ụdị. Ihe niile ndị mmepe chọrọ bụ ịnye ohere ssh!

Agụrụ m n'oge na-adịbeghị anya na ọwara SSH bụ obere ọrụ VPN oge niile! Ị nwere ike ịwụnye OpenVPN ma ọ bụ mmemme VPN ndị ọzọ, guzobe akụrụngwa ma nye ya ndị mmepe maka ojiji. Nke a dị nnọọ mma!

Ọ dabara nke ọma, AWS, GoogleCloud na ndị ọzọ na-enye gị otu afọ nke iji n'efu, yabụ jiri ha! Ha dị ọnụ ala ma ọ bụrụ na ị gbanyụọ ha mgbe anaghị eji ya. M na-eche mgbe niile ihe mere m ga-eji chọọ ihe nkesa dịpụrụ adịpụ dị ka gcloud, ọ dị ka m chọtara ha.

Dịka igwe mebere mpaghara, ị nwere ike iji otu Alpine, nke a na-arụsi ọrụ ike na arịa docker. Ọfọn, ma ọ bụ ụfọdụ nkesa dị fechaa iji mee ka igwe na-agba ọsọ ọsọ.

N'okpuru ala: ị nwere ike ma kwesị ịgba ọsọ ọdụ data yana ihe ọma akụrụngwa ndị ọzọ na sava dịpụrụ adịpụ ma ọ bụ n'ime igbe igbe. Achọghị m docker maka ebumnuche ndị a.

Obere maka onyonyo docker na nkesa

Edegoro m ya ederede nke m chọrọ ịkọwa na iji ihe onyonyo docker anaghị enye nkwa ọ bụla. Ihe onyonyo docker chọrọ naanị iji mepụta akpa docker. Ọ bụrụ na ị na-ebuli elu ka ọ bụrụ ihe onyonyo docker, mgbe ahụ ị na-emelite iji arịa docker ma ị ga-eji ha naanị.

Ị hụla ebe ọ bụla ndị nrụpụta ngwanrọ na-ebubata ngwaahịa ha naanị na onyonyo docker?
Nsonaazụ nke ọtụtụ ngwaahịa bụ faịlụ ọnụọgụ abụọ maka otu ikpo okwu; a na-agbakwunye ha na onyonyo docker, nke eketara site na ikpo okwu achọrọ. Ọ dịtụla mgbe ị nọ na-eche ihe kpatara enwere ọtụtụ onyonyo yiri ya na dockerhub? Tinye nginx dịka ọmụmaatụ, ị ga-ahụ foto 100500 sitere na ndị dị iche iche. Ndị a ewepụtaghị nginx n'onwe ya, ha gbakwunyere nginx gọọmentị na onyonyo docker ha wee jiri nhazi nke ha mee ya ka ọ dị mma ịmalite arịa.

N'ozuzu, ị nwere ike ịchekwa ya na tgz, ọ bụrụ na mmadụ chọrọ ka ọ na-agba ya na docker, hapụzie ka ha tinye tgz na Dockerfile, keta site na ebe a chọrọ ma mepụta buns ndị ọzọ na-adịghị agbanwe ngwa n'onwe ya na tgz. Onye ọ bụla nke ga-emepụta ihe oyiyi docker ga-ama ihe tgz bụ na ihe ọ kwesịrị ịrụ ọrụ. Otu a ka m si eji docker ebe a

N'okpuru ala: Achọghị m ndekọ ndekọ docker, m ga-eji ụdị S3 ma ọ bụ naanị nchekwa faịlụ dị ka google mbanye / igbe igbe.

Docker na CI

Ụlọ ọrụ niile m na-arụrụ ọrụ yiri nke ahụ. Ha na-abụkarị ụlọ nri. Ya bụ, ha nwere otu ngwa, otu teknụzụ teknụzụ (nke ọma, ma eleghị anya, di na nwunye ma ọ bụ asụsụ mmemme atọ).

Ụlọ ọrụ ndị a na-eji docker na sava ha ebe usoro CI na-aga. Ajụjụ: Gịnị kpatara ị ga-eji rụọ ọrụ n'ime akpa docker na sava gị? Kedu ihe kpatara na ọ bụghị naanị ịkwado gburugburu ebe obibi maka ihe owuwu ahụ, dịka ọmụmaatụ, dee akwụkwọ egwu egwu nke ga-etinye nsụgharị dị mkpa nke nodejs, php, jdk, detuo igodo ssh, wdg na ihe nkesa nke ụlọ ahụ ga-eme?

Ugbu a aghọtara m na nke a na-agbapụ onwe m n'ụkwụ, n'ihi na docker anaghị eweta uru ọ bụla na ikewapụ ya. Nsogbu m zutere CI na docker:

  • ọzọ ị ga-achọ ihe onyonyo docker iji wuo ya. ị ga-achọ ihe onyonyo ma ọ bụ dee dockerfile nke gị.
  • 90% na ị ga-ebuga ụfọdụ igodo ssh, data nzuzo nke ị chọghị idegara foto docker.
  • A na-emepụta akpa ahụ wee nwụọ, cache niile na-efunahụ ya. ụlọ na-esote ga-ebudataghachi ihe ndabere niile nke ọrụ ahụ, nke na-ewe oge na-adịghị arụ ọrụ, na oge bụ ego.

Ndị na-emepụta ihe anaghị arụ ọrụ n'ime arịa docker (M bụbu onye ofufe dị otú ahụ, n'ezie, enwere m ọmịiko maka onwe m n'oge gara aga xD). Na java, ọ ga-ekwe omume ịnwe ọtụtụ nsụgharị wee jiri otu iwu gbanwee ha na nke ịchọrọ ugbu a. Ọ bụ otu ihe ahụ na nodejs, enwere nvm.

nkwubi

Ekwenyere m na docker bụ ngwá ọrụ dị ike ma na-agbanwe agbanwe, nke a bụ ihe ndọghachi azụ ya (ọ dị ka iju, ee). Site n'enyemaka ya, ụlọ ọrụ nwere ike ịbanye na ya ngwa ngwa ma jiri ya mee ihe n'ebe ọ dị mkpa na ọ dịghị mkpa. Ndị na-emepụta ihe na-ebupụta arịa ha, ụfọdụ gburugburu ha, mgbe ahụ, ihe niile na-aga nke ọma na CI na mmepụta. Ndị otu DevOps na-ede ụfọdụ ụdị koodu iji mee ihe ndị a.

Jiri docker naanị na kacha ọhụrụ n'usoro n'usoro ọrụ gị, etinyela ya n'ọrụ ahụ na mbido. Ọ gaghị edozi nsogbu azụmahịa gị. Ọ ga-eme ka nsogbu ahụ gaa n'ọkwa ọzọ ma nye azịza nke ya, ị ga-arụ ọrụ abụọ.

Mgbe achọrọ docker: Abịara m nkwubi okwu na docker dị ezigbo mma n'ịkwalite usoro enyere, mana ọ bụghị n'ịrụ ọrụ dị mkpa.

Ọ bụrụ na ị ka na-ekpebi iji docker, mgbe ahụ:

  • kpachara anya nke ukwuu
  • amanyela ndị mmepe iji docker
  • Hazie ojiji ya n'otu ebe, agbasala ya n'ofe ebe nchekwa Dockfile na ebe nchekwa docker.

PS:

Daalụ maka ịgụ akwụkwọ, a na m achọ gị mkpebi doro anya na ihe omume gị na ụbọchị ọrụ na-arụpụta ihe!

isi: www.habr.com

Tinye a comment