Kodi Docker ndi chidole kapena ayi? Kapena zikadali zoona?

Hello aliyense!

Ndikufuna kulunjika pamutuwu, koma zingakhale zolondola kunena pang'ono za nkhani yanga:

kulowa

Ndine wopanga mapulogalamu omwe ali ndi chidziwitso pakupanga mapulogalamu a tsamba limodzi, scala/java ndi nodejs pa seva.

Kwa nthawi yayitali (ndedi zaka zingapo kapena zitatu), ndinali ndi lingaliro loti Docker ndi mana ochokera kumwamba ndipo nthawi zambiri ndi chida chozizira kwambiri ndipo wopanga aliyense ayenera kuzigwiritsa ntchito. Ndipo izi zikutsatira kuti wopanga aliyense ayenera kukhala ndi Docker yoyika pamakina awo am'deralo. Nanga bwanji maganizo anga, yang'anani kupyolera mu ntchito zomwe zaikidwa pa hh yemweyo. Sekondi iliyonse imatchula za docker, ndipo ngati muli nayo, uwu ukhala mwayi wanu wampikisano πŸ˜‰

Ndili m'njira, ndidakumana ndi anthu ambiri, ali ndi malingaliro osiyanasiyana pa Docker ndi chilengedwe chake. Ena adanena kuti ichi ndi chinthu chosavuta chomwe chimatsimikizira magwiridwe antchito pamapulatifomu. Wachiwiri sanamvetse chifukwa chake amayenera kuthamanga m'mitsuko ndi phindu lanji lomwe lingabwere kuchokera pamenepo, wachitatu sanasamale konse ndipo sanavutike (anangolemba code ndikupita kunyumba - ndimawachitira kaduka, mwa njira :)

Zifukwa zogwiritsira ntchito

Chifukwa chiyani ndidagwiritsa ntchito docker? Mwina pazifukwa izi:

  • kukhazikitsidwa kwa database, 99% ya mapulogalamu amawagwiritsa ntchito
  • kuyambitsa nginx pakugawa kutsogolo ndikuyimilira ku backend
  • mutha kuyika pulogalamuyo mu chithunzi cha docker, mwanjira iyi ntchito yanga idzagwira ntchito kulikonse komwe docker ilipo, vuto logawa limathetsedwa nthawi yomweyo.
  • kupezeka kwa ntchito m'bokosilo, mutha kupanga ma microservices, chidebe chilichonse (cholumikizidwa ndi netiweki wamba) chitha kufikira china kudzera pa dzina, chosavuta kwambiri.
  • Ndizosangalatsa kupanga chidebe ndi "kusewera" mmenemo.

Zomwe sindimakonda nthawi zonse za docker:

  • Kuti pulogalamu yanga igwire ntchito, ndikufuna Docker yokha pa seva. Chifukwa chiyani ndikufunika izi ngati mapulogalamu anga akuyenda pa jre kapena nodejs ndipo chilengedwe chawo chili kale pa seva?
  • ngati ndikufuna kuyendetsa chithunzi changa (chachinsinsi) chomangidwa kwanuko pa seva yakutali, ndiye kuti ndikufunika chosungira changa cha docker, ndikufunika zolembera kuti zigwire ntchito kwinakwake ndipo ndikufunikanso kukonza https, chifukwa docker cli imagwira ntchito pa https. O damn ... pali zosankha, ndithudi, kuti musunge fano kwanuko kudzera docker save ndipo ingotumizani chithunzicho kudzera pa scp ... Koma ndizo zambiri za kayendedwe ka thupi. Kupatula apo, zikuwoneka ngati yankho la "crutch" mpaka chosungira chanu chikuwonekera
  • docker-compose. Zimangofunika kuyendetsa zotengera. Ndizomwezo. Iye sangakhoze kuchita china chirichonse. Docker-compose ili ndi mitundu yambiri yamafayilo ake, ma syntax ake. Ziribe kanthu momwe zikuwonekera, sindikufuna kuwerenga zolemba zawo. Sindidzazifuna kwina kulikonse.
  • pogwira ntchito m'gulu, anthu ambiri amalemba Dockerfile mokhota kwambiri, samamvetsetsa momwe imasungidwira, onjezerani zonse zomwe amafunikira komanso osafunikira pa chithunzicho, cholowa kuchokera ku zithunzi zomwe sizili mu Dockerhub kapena malo osungira, pangani zina. docker-compose mafayilo okhala ndi databases ndipo palibe chomwe chikupitilira. Nthawi yomweyo, Madivelopa amalengeza monyadira kuti Docker ndiyabwino, chilichonse chimagwira ntchito kwawoko, ndipo HR amalemba mofunikira kuti: "Timagwiritsa ntchito Docker ndipo tikufuna munthu wodziwa ntchito ngati imeneyi."
  • Nthawi zonse ndimakhudzidwa ndi malingaliro okweza chilichonse ku Docker: postgresql, kafka, redis. Ndizomvetsa chisoni kuti sizinthu zonse zomwe zimagwira ntchito m'mitsuko, sikuti zonse ndizosavuta kukonza ndikuyendetsa. Izi zimathandizidwa ndi opanga chipani chachitatu, osati ndi ogulitsa okha. Ndipo mwa njira, funso limabwera nthawi yomweyo: ogulitsa samadandaula za kusunga katundu wawo ku Docker, chifukwa chiyani izi, mwina amadziwa chinachake?
  • Funso limadza nthawi zonse lokhudza kulimbikira kwa data ya chidebe. ndiyeno mukuganiza, ndingoyika chikwatu chosungira kapena kupanga voliyumu ya docker kapena kupanga chidebe cha data chomwe chilipo tsopano deprecated? Ngati ndiyika chikwatu, ndiye kuti ndiyenera kuwonetsetsa kuti uid ndi gid ya wogwiritsa ntchito mu chidebecho zikugwirizana ndi id ya wogwiritsa ntchito yemwe adayambitsa chidebecho, apo ayi mafayilo opangidwa ndi chidebecho adzapangidwa ndi ufulu wa mizu. Ngati ndigwiritsa ntchito volume ndiye deta adzakhala chabe analenga ena /usr/* ndipo padzakhala nkhani yofanana ndi uid ndi gid monga poyamba. Ngati mukuyambitsa gawo la chipani chachitatu, muyenera kuwerenga zolembazo ndikuyang'ana yankho la funso: "Kodi gawoli limalemba mafayilo muzotengera ziti?"

Nthawi zonse sindimakonda kuti ndimakonda kucheza ndi Docker kwa nthawi yayitali pa siteji yoyamba: Ndinaganizira momwe ndingayambitsire zotengera, zithunzi zotani zomwe mungayambitsire, ndikupanga Makefiles omwe anali ndi zilembo zamalamulo aatali a Docker. Ndinkadana ndi docker-compose chifukwa sindinkafuna kuphunzira chida china mu docker ecosystem. NDI docker-compose up Zinandidetsa nkhawa, makamaka ngati amakumanabe kumeneko build zomanga, osati zithunzi zomwe zasonkhanitsidwa kale. Zomwe ndimafuna ndikungopanga chinthu moyenera komanso mwachangu. Koma sindinathe kudziwa momwe ndingagwiritsire ntchito docker.

Kuyambitsa Ansible

Posachedwapa (miyezi itatu yapitayo), ndinagwira ntchito ndi gulu la DevOps, pafupifupi membala aliyense yemwe anali ndi maganizo oipa kwa Docker. Pazifukwa:

  • docker amalamulira iptables (ngakhale mutha kuyimitsa daemon.json)
  • docker ndi ngolo ndipo sitidzayendetsa popanga
  • ngati docker daemon itawonongeka, ndiye kuti zotengera zonse zomwe zili ndi zomangamanga zimawonongeka moyenerera
  • palibe chifukwa cha docker
  • chifukwa docker ngati pali Ansible ndi makina enieni

Pa ntchito yomweyo ndinadziwa chida china - Ansible. Ndinamva za izo kamodzi, koma sindinayese kulemba mabuku anga amasewera. Ndipo tsopano ndinayamba kulemba ntchito zanga ndiyeno masomphenya anga anasintha kwathunthu! Chifukwa ndidazindikira: Ansible ili ndi ma module omwe amayendetsa zotengera zomwezo, zomanga zithunzi, ma network, ndi zina zambiri, ndipo zotengera zimatha kuyendetsedwa osati kwanuko kokha, komanso pamaseva akutali! Chisangalalo changa sichinali malire - ndinapeza chida cha NORMAL ndikutaya mafayilo anga a Makefile ndi docker-compose, adasinthidwa ndi ntchito zaml. Code idachepetsedwa pogwiritsa ntchito zomanga ngati loop, when, Ndi zina zotero.

Docker yoyendetsa zinthu za chipani chachitatu monga nkhokwe

Posachedwa ndidakumana ndi ma ssh tunnels. Zinapezeka kuti ndizosavuta "kutumiza" doko la seva yakutali ku doko lapafupi. Seva yakutali ikhoza kukhala makina pamtambo kapena makina enieni omwe akuyenda mu VirtualBox. Ngati mnzanga kapena ine ndikusowa database (kapena chigawo china chachitatu), tikhoza kungoyambitsa seva ndi chigawo ichi ndikuzimitsa pamene seva sikufunika. Kutumiza kwa doko kumapereka zotsatira zofananira ngati nkhokwe yomwe ikuyenda mumtsuko wa docker.

Lamuloli limatumiza doko langa ku seva yakutali yomwe ikuyenda postgresql:

ssh -L 9000: localhost:5432 [imelo ndiotetezedwa]

Kugwiritsa ntchito seva yakutali kumathetsa vuto ndi chitukuko cha timu. Seva yotereyi itha kugwiritsidwa ntchito ndi omanga angapo nthawi imodzi; safunikira kukhazikitsa postgresql, kumvetsetsa Docker ndi zovuta zina. Pa seva yakutali, mutha kukhazikitsa database yomweyo ku Docker palokha, ngati kuli kovuta kukhazikitsa mtundu wina. Madivelopa onse amafunikira ndikupereka mwayi wa ssh!

Posachedwa ndidawerenga kuti ma SSH ndi magwiridwe antchito a VPN wamba! Mutha kungoyika OpenVPN kapena kukhazikitsa kwina kwa VPN, kukhazikitsa zomanga ndikuzipereka kwa opanga kuti azigwiritsa ntchito. Izi ndizabwino kwambiri!

Mwamwayi, AWS, GoogleCloud ndi ena amakupatsani chaka chogwiritsa ntchito kwaulere, choncho gwiritsani ntchito! Ndiotsika mtengo ngati mutazimitsa pamene simukugwiritsidwa ntchito. Nthawi zonse ndimadzifunsa chifukwa chomwe ndingafune seva yakutali ngati gcloud, zikuwoneka kuti ndawapeza.

Monga makina am'deralo, mutha kugwiritsa ntchito Alpine yemweyo, yomwe imagwiritsidwa ntchito mwachangu muzotengera za docker. Chabwino, kapena magawo ena opepuka kuti makinawo aziwombera mwachangu.

Mfundo yofunika: mungathe ndipo muyenera kuyendetsa nkhokwe ndi zinthu zina zogwirira ntchito pa ma seva akutali kapena mu bokosi lachidziwitso. Sindikufuna docker pazifukwa izi.

Pang'ono za zithunzi za docker ndi kugawa

Ndinalemba kale nkhani momwe ndimafuna kuwonetsa kuti kugwiritsa ntchito zithunzi za docker sikupereka chitsimikizo. Zithunzi za Docker zimangofunika kupanga chotengera cha docker. Ngati mukukwezera ku chithunzi cha docker, ndiye kuti mukukweza kuti mugwiritse ntchito zida za docker ndipo mudzangozigwiritsa ntchito.

Kodi mwawonapo kulikonse komwe opanga mapulogalamu amangoyika zinthu zawo pachithunzi cha docker?
Zotsatira zazinthu zambiri ndi mafayilo amabina papulatifomu inayake; amangowonjezeredwa pazithunzi za docker, zomwe zimatengedwa kuchokera papulatifomu yomwe mukufuna. Kodi munayamba mwadzifunsapo chifukwa chake pali zithunzi zambiri zofananira pa dockerhub? Lowetsani nginx mwachitsanzo, mudzawona zithunzi za 100500 zochokera kwa anthu osiyanasiyana. Anthu awa sanapange nginx yokha, adangowonjezera nginx yovomerezeka ku chithunzi chawo cha docker ndikuchikongoletsa ndi makonzedwe awo kuti athe kukhazikitsa zotengera.

Nthawi zambiri, mutha kungoyisunga mu tgz, ngati wina akufunika kuyiyendetsa mu docker, ndiye kuti awonjezere tgz ku Dockerfile, cholowa kuchokera kumalo omwe mukufuna ndikupanga ma buns owonjezera omwe sasintha pulogalamuyo mu tgz. Aliyense amene angapange chithunzi cha docker adzadziwa chomwe tgz ndi zomwe ayenera kugwira. Umu ndi momwe ndimagwiritsira ntchito docker apa

Pansi: Sindikufuna zolembera za docker, ndigwiritsa ntchito mtundu wina wa S3 kapena kungosungira mafayilo ngati google drive/dropbox

Docker ku CI

Makampani onse omwe ndimagwira nawo ntchito ndi ofanana. Nthawi zambiri amakhala golosale. Ndiye kuti, ali ndi pulogalamu imodzi, ukadaulo umodzi (chabwino, mwina zilankhulo zingapo kapena zitatu).

Makampaniwa amagwiritsa ntchito docker pa maseva awo pomwe njira ya CI imayenda. Funso: Chifukwa chiyani mukufunika kupanga ma projekiti mumtsuko wa docker pamaseva anu? Bwanji osangokonzekera malo omanga, mwachitsanzo, lembani Ansible playbook yomwe idzakhazikitse zofunikira za nodejs, php, jdk, copy ssh keys, etc. ku seva yomwe kumangako kudzachitikira?

Tsopano ndikumvetsa kuti izi ndikudziwombera ndekha pamapazi, chifukwa docker sichibweretsa phindu lililonse ndi kudzipatula. Mavuto omwe ndidakumana nawo ndi CI mu docker:

  • kachiwiri muyenera chithunzi cha docker kuti mupange. muyenera kuyang'ana chithunzi kapena kulemba dockerfile yanu.
  • 90% yomwe muyenera kutumiza makiyi a ssh, zinsinsi zomwe simukufuna kulemba ku chithunzi cha docker.
  • chidebecho chimapangidwa ndipo chimafa, zosungira zonse zimatayika pamodzi ndi izo. chotsatira chotsatira chidzatsitsanso zodalira zonse za polojekiti, zomwe zimatenga nthawi komanso zosagwira ntchito, ndipo nthawi ndi ndalama.

Madivelopa samamanga mapulojekiti muzotengera za docker (ndinali wokonda kwambiri, kwenikweni, ndimadzimvera chisoni m'mbuyomu xD). Mu java ndizotheka kukhala ndi mitundu ingapo ndikusintha ndi lamulo limodzi kukhala lomwe mukufuna tsopano. Ndizofanana mu nodejs, pali nvm.

Pomaliza

Ndikukhulupirira kuti docker ndi chida champhamvu kwambiri komanso chosinthika, ichi ndiye chobwezera chake (chikuwoneka chachilendo, inde). Ndi chithandizo chake, makampani amatha kukodwa nawo mosavuta ndikuzigwiritsa ntchito ngati pakufunika komanso osafunikira. Madivelopa amakhazikitsa zotengera zawo, zina mwazomwe amakhala, ndiye zonse zimayenda bwino mu CI ndikupanga. Gulu la DevOps likulemba mtundu wina wa code kuti muyendetse zotengera izi.

Gwiritsani ntchito docker pokhapokha chaposachedwapa siteji mumayendedwe anu, musakokere mu projekiti poyambira. Sizidzathetsa mavuto abizinesi yanu. Adzangosuntha mavuto ku mlingo WINA ndikupereka mayankho ake, mudzachita ntchito ziwiri.

Pamene docker ikufunika: Ndinazindikira kuti docker ndiyabwino kwambiri pakuwongolera njira yomwe yaperekedwa, koma osati pakupanga magwiridwe antchito

Ngati mukuganizabe kugwiritsa ntchito docker, ndiye:

  • khalani osamala kwambiri
  • musakakamize opanga kugwiritsa ntchito docker
  • khazikitsani kugwiritsidwa ntchito kwake pamalo amodzi, musafalitse malo onse a Dockefile ndi docker-compose repositories

PS:

Zikomo powerenga, ndikufunirani zisankho zowonekera pazinthu zanu komanso masiku ogwira ntchito!

Source: www.habr.com

Kuwonjezera ndemanga