He mea pāʻani paha ʻo Docker a ʻaʻole paha? A i ʻole he ʻoiaʻiʻo nō?

Hello a pau!

Makemake au e hele pololei i ke kumuhana, akā ʻoi aku ka pololei o ka haʻi liʻiliʻi e pili ana i kaʻu moʻolelo:

komo

He polokalamu au me ka ʻike i ka hoʻomohala ʻana i nā noi ʻaoʻao hoʻokahi mua, scala/java a me nā nodejs ma ke kikowaena.

No ka manawa lōʻihi (ʻoiaʻiʻo he ʻelua a ʻekolu paha makahiki), ua manaʻo wau ʻo Docker ka manna mai ka lani a ma ke ʻano he mea hana maikaʻi loa a pono e hiki i kēlā me kēia mea hoʻomohala ke hoʻohana. A mai kēia mea e hoʻokomo i kēlā me kēia mea hoʻomohala iā Docker i kā lākou mīkini kūloko. Pehea ko'u manao, e nana i na hakahaka i kau ia ma ka hh hookahi. Loaʻa i kēlā me kēia kekona kahi ʻōlelo o ka docker, a inā ʻoe iā ia, ʻo ia kou pono hoʻokūkū 😉

Ma koʻu ala, ua hālāwai au me nā poʻe he nui, me ko lākou ʻano ʻokoʻa iā Docker a me kāna kaiaola. Ua ʻōlelo kekahi he mea maʻalahi kēia e hōʻoiaʻiʻo i ka hana cross-platform. ʻAʻole maopopo ka poʻe ʻelua i ke kumu e holo ai lākou i loko o nā pahu a he aha ka waiwai e loaʻa mai ai, ʻaʻole mālama iki ke kolu a ʻaʻole hoʻi i hoʻopilikia (kākau lākou i ke code a hoʻi i ka home - lili wau iā lākou, e ka ala :)

Nā kumu hoʻohana

No ke aha wau i hoʻohana ai i ka docker? No kēia mau kumu paha:

  • hoʻomaka ka waihona, 99% o nā noi e hoʻohana iā lākou
  • e hoʻomaka ana i ka nginx no ka hāʻawi mua ʻana a me ke koho ʻana i ka backend
  • hiki iā ʻoe ke hoʻopili i ka noi i kahi kiʻi docker, ma kēia ala e hana ai kaʻu noi i nā wahi a pau e noho ai ka docker, hoʻopau koke ʻia ka pilikia hoʻoili.
  • ʻike ʻia ka lawelawe ma waho o ka pahu, hiki iā ʻoe ke hana i nā microservices, kēlā me kēia pahu (pili ʻia i kahi pūnaewele maʻamau) hiki ke maʻalahi i kahi ʻē aʻe ma o kahi alias, kūpono loa.
  • He mea leʻaleʻa e hana i kahi pahu a "pāʻani" i loko.

ʻO kaʻu mea makemake ʻole e pili ana i ka docker:

  • I mea e hana ai kaʻu noi, pono wau iā Docker iā ia iho ma ke kikowaena. No ke aha e pono ai iaʻu inā holo kaʻu mau noi ma jre a i ʻole nodejs a aia ke kaiapuni no lākou ma ke kikowaena?
  • inā makemake wau e holo i kaʻu kiʻi (kūʻokoʻa) i kūkulu ʻia ma kahi kikowaena mamao, a laila pono wau i kaʻu waihona docker ponoʻī, pono iaʻu ke kākau inoa e hana ma kahi a pono wau e hoʻonohonoho i ka https, no ka mea, hana wale ka docker cli ma https. Oh damn ... aia nā koho, ʻoiaʻiʻo, e mālama i ke kiʻi kūloko ma o docker save a hoʻouna wale i ke kiʻi ma o ka scp ... Akā, he nui nā neʻe kino. A ma waho aʻe, ua like ia me kahi hopena "crutch" a hiki i ka ʻike ʻana o kāu waihona ponoʻī
  • docker-compose. Pono wale ia e holo i nā ipu. ʻo ia wale nō. ʻAʻole hiki iā ia ke hana i kekahi mea ʻē aʻe. Docker-compose Loaʻa iā ia kahi pūʻulu o kāna mau faila, kāna syntax ponoʻī. ʻAʻohe mea e haʻi ʻōlelo ai, ʻaʻole wau makemake e heluhelu i kā lākou palapala. ʻAʻole pono iaʻu ma kahi ʻē aʻe.
  • i ka hana ʻana i kahi hui, kākau ka hapa nui o nā poʻe i kahi Dockerfile me ke kekee, ʻaʻole maopopo i ke ʻano o ka hūnā ʻia, hoʻohui i nā mea āpau a lākou e pono ai a ʻaʻole pono i ke kiʻi, hoʻoilina mai nā kiʻi ʻaʻole i Dockerhub a i kahi waihona pilikino, hana i kekahi docker-compose waihona me nā waihona a ʻaʻohe mea e hoʻomau. Ma ka manawa like, haʻi haʻaheo nā mea hoʻomohala he ʻoluʻolu ʻo Docker, hana nā mea āpau no lākou, a kākau nui ʻo HR i ka hakahaka: "Hoʻohana mākou iā Docker a makemake mākou i kahi moho me ia ʻike hana."
  • Hoʻopilikia mau wau i nā manaʻo e pili ana i ka hāpai ʻana i nā mea āpau ma Docker: postgresql, kafka, redis. He mea minamina ʻaʻole hana nā mea a pau i loko o nā pahu, ʻaʻole maʻalahi nā mea āpau e hoʻonohonoho a holo. Kākoʻo ʻia kēia e nā mea hoʻomohala ʻaoʻao ʻekolu, ʻaʻole na nā mea kūʻai aku iā lākou iho. A ma ke ala, ua kū koke ka nīnau: ʻaʻole hopohopo nā mea kūʻai aku i ka mālama ʻana i kā lākou huahana ma Docker, no ke aha kēia, ʻike paha lākou i kekahi mea?
  • Piʻi mau ka nīnau e pili ana i ka hoʻomau ʻana o ka ʻikepili pahu. a laila e noʻonoʻo ʻoe, pono wau e kau wale i ka papa kuhikuhi host a i ʻole e hana i kahi docker volume a i ʻole e hana i kahi pahu data i kēia manawa deprecated? Inā wau e kau i kahi papa kuhikuhi, a laila pono wau e hōʻoia i ka uid a me gid o ka mea hoʻohana i loko o ka ipu e pili ana i ka id o ka mea hoʻohana i hoʻokuʻu i ka ipu, inā ʻaʻole e hana ʻia nā faila i hana ʻia e ka ipu me nā kuleana kumu. Inā wau e hoʻohana volume a laila e hana wale ʻia ka ʻikepili i kekahi /usr/* a he moolelo like me ka uid a me ka gid e like me ka hihia mua. Inā ʻoe e hoʻomaka ana i kahi ʻāpana ʻaoʻao ʻekolu, pono ʻoe e heluhelu i ka palapala a e ʻimi i ka pane i ka nīnau: "i loko o nā papa kuhikuhi pahu e kākau ai ka ʻāpana i nā faila?"

ʻAʻole makemake wau i ka ʻoiaʻiʻo e pono iaʻu e hana me Docker no ka lōʻihi loa i ka pae mua: Ua noʻonoʻo wau pehea e hoʻomaka ai i nā pahu, nā kiʻi e hoʻomaka ai, hana i nā Makefiles i loaʻa nā inoa inoa i nā kauoha Docker lōʻihi. Ua inaina au i ka docker-compose no ka mea ʻaʻole wau makemake e aʻo i kahi mea hana ʻē aʻe i ka docker kaiaolaola. A docker-compose up Ua pilikia iaʻu, ʻoiai inā e hui mau lākou ma laila build nā kūkulu hale, ma mua o nā kiʻi i hui mua ʻia. ʻO kaʻu mea i makemake nui ai ʻo ka hana ʻana i kahi huahana me ka wikiwiki a me ka wikiwiki. Akā ʻaʻole hiki iaʻu ke noʻonoʻo pehea e hoʻohana ai i ka docker.

Hoʻolauna iā Ansible

I kēia mau lā (ʻekolu mahina i hala aku nei), ua hana wau me kahi hui DevOps, kokoke i kēlā me kēia lālā i loaʻa ka manaʻo maikaʻi ʻole iā Docker. No nā kumu:

  • docker iptables (ʻoiai hiki iā ʻoe ke hoʻopau iā ia ma daemon.json)
  • He kaʻa ka docker a ʻaʻole mākou e holo i ka hana
  • inā hāʻule ka daemon docker, a laila e hāʻule nā ​​ipu a pau me nā ʻōnaehana
  • ʻaʻohe pono o ka docker
  • no ke aha docker inā he Ansible a me nā mīkini virtual

Ma ka hana hoʻokahi, ua kamaʻāina wau i kahi mea hana ʻē aʻe - Ansible. Ua lohe au ia mea i hoʻokahi manawa, akā ʻaʻole au i hoʻāʻo e kākau i kaʻu mau puke pāʻani ponoʻī. A i kēia manawa ua hoʻomaka wau e kākau i kaʻu mau hana a laila ua loli loa koʻu ʻike! No ka mea, ua ʻike au: He mau modules ko Ansible no ka holo ʻana i nā pahu docker like, kūkulu kiʻi, nā pūnaewele, a me nā mea ʻē aʻe, a hiki ke holo ʻia nā ipu ʻaʻole ma ka ʻāina wale nō, akā ma nā kikowaena mamao hoʻi! ʻAʻohe palena o koʻu hauʻoli - loaʻa iaʻu kahi mea hana NORMAL a hoʻolei aku i kaʻu faila Makefile a docker-compose, ua hoʻololi ʻia lākou me nā hana yaml. Ua hōʻemi ʻia ke code me ka hoʻohana ʻana i nā hana like loop, when, Etc.

Docker no ka holo ʻana i nā ʻāpana ʻaoʻao ʻekolu e like me nā waihona

Ua kamaʻāina au i nā tunnels ssh. Ua ʻike ʻia he mea maʻalahi loa ka "hoʻouna" i ke awa o kahi kikowaena mamao i kahi awa kūloko. Hiki i ke kikowaena mamao ke lilo i mīkini i loko o ke ao a i ʻole kahi mīkini virtual e holo ana ma VirtualBox. Inā makemake koʻu hoa hana a i ʻole au i kahi waihona (a i ʻole kekahi ʻāpana ʻaoʻao ʻē aʻe), hiki iā mākou ke hoʻomaka i ke kikowaena me kēia ʻāpana a hoʻopau iā ia inā ʻaʻole pono ke kikowaena. Hāʻawi ka hoʻouna ʻana i ka port i ka hopena like me kahi waihona e holo ana i loko o kahi pahu docker.

Hoʻouna kēia kauoha i kaʻu awa kūloko i kahi kikowaena mamao e holo ana i ka postgresql:

ssh -L 9000: localhost: 5432 [pale ʻia ka leka uila]

ʻO ka hoʻohana ʻana i kahi kikowaena mamao e hoʻonā i ka pilikia me ka ulu ʻana o ka hui. Hiki ke hoʻohana ʻia kēlā kikowaena e nā mea hoʻomohala i ka manawa hoʻokahi; ʻaʻole pono lākou e hiki ke hoʻonohonoho i ka postgresql, hoʻomaopopo iā Docker a me nā mea paʻakikī ʻē aʻe. Ma kahi kikowaena mamao, hiki iā ʻoe ke hoʻouka i ka waihona like ma Docker ponoʻī, inā paʻakikī ke hoʻokomo i kahi mana kikoʻī. Pono nā mea hoʻomohala āpau e hāʻawi i ke komo ssh!

Ua heluhelu au i kēia manawa ʻo SSH tunnels kahi hana palena o kahi VPN maʻamau! Hiki iā ʻoe ke hoʻokomo iā OpenVPN a i ʻole nā ​​​​hana VPN ʻē aʻe, hoʻonohonoho i ka ʻōnaehana a hāʻawi i nā mea hoʻomohala no ka hoʻohana. He nani loa kēia!

ʻO ka mea pōmaikaʻi, hāʻawi ʻo AWS, GoogleCloud a me nā mea ʻē aʻe iā ʻoe i hoʻokahi makahiki o ka hoʻohana manuahi, no laila e hoʻohana iā lākou! He mea maʻalahi inā hoʻopau ʻoe iā lākou inā ʻaʻole hoʻohana. Noʻonoʻo mau wau no ke aha e makemake ai au i kahi kikowaena mamao e like me gcloud, me he mea lā ua loaʻa iaʻu.

Ma ke ʻano he mīkini virtual kūloko, hiki iā ʻoe ke hoʻohana i ka Alpine like, i hoʻohana ikaika ʻia i nā pahu docker. ʻAe, a i ʻole kekahi mau puʻupuʻu māmā ʻē aʻe e wikiwiki ai ka mīkini.

Ke laina lalo: hiki iā ʻoe ke holo i nā ʻikepili a me nā mea waiwai ʻē aʻe ma nā kikowaena mamao a i ʻole virtualbox. ʻAʻole pono au i docker no kēia mau hana.

He mea liʻiliʻi e pili ana i nā kiʻi docker a me ka hāʻawi ʻana

Ua kākau wau ʻO kahi mea kākau kahi aʻu i makemake ai e haʻi i ka hoʻohana ʻana i nā kiʻi docker ʻaʻole hāʻawi i kahi hōʻoia. Pono nā kiʻi Docker e hana i kahi pahu docker. Inā hoʻonui ʻoe i kahi kiʻi docker, a laila e hoʻomaikaʻi ana ʻoe e hoʻohana i nā pahu docker a e hoʻohana wale ʻoe iā lākou.

Ua ʻike anei ʻoe i nā wahi a nā mea hoʻomohala polokalamu e hoʻopili ai i kā lākou huahana wale nō i kahi kiʻi docker?
ʻO ka hopena o ka hapa nui o nā huahana he faila binary no kahi kahua kikoʻī; ua hoʻohui wale ʻia lākou i ke kiʻi docker, i hoʻoili ʻia mai ka paepae i makemake ʻia. Ua noʻonoʻo paha ʻoe no ke aha i nui ai nā kiʻi like ma dockerhub? E hoʻokomo i ka nginx no ka laʻana, e ʻike ʻoe i nā kiʻi 100500 mai nā poʻe like ʻole. ʻAʻole kēia poʻe i hoʻomohala i ka nginx ponoʻī, ua hoʻohui lākou i ka nginx mana i kā lākou kiʻi docker a hoʻomaʻamaʻa iā ia me kā lākou configs no ka maʻalahi o ka hoʻokuʻu ʻana i nā ipu.

Ma keʻano laulā, hiki iā ʻoe ke mālama iā ia ma tgz, inā pono e holo kekahi i loko o ka docker, a laila e hoʻohui iā tgz i ka Dockerfile, hoʻoilina mai ka wahi i makemake ʻia a hana i nā buns hou e hoʻololi ʻole i ka noi iā ia iho i tgz. ʻO ka mea nāna e hana i kahi kiʻi docker e ʻike i ke ʻano o tgz a me kāna mea e pono ai e hana. ʻO kēia kaʻu e hoʻohana ai i ka docker maanei

Ke laina lalo: ʻAʻole pono wau i ka hoʻopaʻa inoa docker, e hoʻohana wau i kekahi ʻano S3 a i ʻole ka waiho waihona waihona e like me google drive / dropbox

Docker ma CI

Ua like nā ʻoihana a pau aʻu i hana ai. ʻO ka mea maʻamau ka mea kūʻai. ʻO ia hoʻi, hoʻokahi kā lākou noi, hoʻokahi ʻenehana ʻenehana (maikaʻi, ʻelua a ʻekolu paha mau ʻōlelo papahana).

Hoʻohana kēia mau hui i ka docker ma kā lākou mau kikowaena kahi e holo ai ke kaʻina CI. Nīnau: No ke aha ʻoe e pono ai e kūkulu i nā papahana i loko o kahi pahu docker ma kāu mau kikowaena? No ke aha e hoʻomākaukau ʻole ai i kahi kaiapuni no ke kūkulu ʻana, no ka laʻana, e kākau i kahi puke pāʻani Ansible e hoʻokomo i nā mana kūpono o nā nodejs, php, jdk, kope ssh kī, a me nā mea ʻē aʻe i ke kikowaena kahi e kūkulu ai?

I kēia manawa ua maopopo iaʻu ke pana nei kēia iaʻu iho i ka wāwae, no ka mea, ʻaʻole lawe mai ka docker i kahi waiwai me kona kaʻawale. Nā pilikia aʻu i hālāwai ai me CI ma docker:

  • pono ʻoe i kahi kiʻi docker e kūkulu ai. pono ʻoe e ʻimi i kiʻi a kākau paha i kāu dockerfile ponoʻī.
  • 90% pono ʻoe e hoʻouna i kekahi mau kī ssh, ʻikepili huna āu e makemake ʻole e kākau i ke kiʻi docker.
  • hana ʻia ka ipu a make, pau nā huna huna me ia. ʻO ka hale aʻe e hoʻoiho hou i nā mea hilinaʻi a pau o ka papahana, ʻo ia ka manawa a me ka pono ʻole, a ʻo ka manawa ke kālā.

ʻAʻole kūkulu nā mea hoʻomohala i nā papahana i loko o nā pahu docker (ʻo wau kekahi mea aloha, ʻoiaʻiʻo, minamina wau iaʻu iho i ka wā i hala xD). Ma java hiki ke loaʻa i kekahi mau mana a hoʻololi iā lākou me hoʻokahi kauoha i ka mea āu e pono ai i kēia manawa. Ua like ia ma nā nodejs, aia nvm.

hopena

Ke manaʻoʻiʻo nei au he mea ikaika loa a maʻalahi hoʻi ka docker, ʻo ia kāna drawback (he kani ʻē, ʻae). Me kāna kōkua, hiki i nā ʻoihana ke hoʻopili maʻalahi iā ia a hoʻohana iā ia ma kahi e pono ai a ʻaʻole pono. Hoʻokumu nā mea hoʻomohala i kā lākou mau ipu, kekahi o kā lākou kaiapuni, a laila holo mālie ia i ka CI a me ka hana. Ke kākau nei ka hui DevOps i kekahi ʻano code e holo i kēia mau pahu.

E hoʻohana i ka docker wale nō ka mea hou loa pae i kāu kaʻina hana, mai kauo ia i loko o ka papahana ma ka hoʻomaka. ʻAʻole ia e hoʻoponopono i kāu mau pilikia ʻoihana. E hoʻoneʻe wale ʻo ia i nā pilikia i kahi pae ANOTHER a hāʻawi i kāna mau hoʻonā ponoʻī, e hana pālua ʻoe.

I ka wā e pono ai ka docker: Ua hiki au i ka hopena he maikaʻi loa ka docker i ka hoʻonui ʻana i kahi kaʻina hana, akā ʻaʻole i ke kūkulu ʻana i nā hana maʻamau

Inā hoʻoholo ʻoe e hoʻohana i ka docker, a laila:

  • e akahele loa
  • Mai koi i nā mea hoʻomohala e hoʻohana i ka docker
  • hoʻokaʻawale i kona hoʻohana ma kahi hoʻokahi, mai hoʻolaha iā ia ma nā waihona Dockefile a me docker-compose

PS:

Mahalo iā ʻoe no ka heluhelu ʻana, makemake wau iā ʻoe i nā hoʻoholo akaka i kāu mau hana a me nā lā hana huahua!

Source: www.habr.com

Pākuʻi i ka manaʻo hoʻopuka