{"id":91905,"date":"2020-08-20T07:42:23","date_gmt":"2020-08-20T05:42:23","guid":{"rendered":"https:\/\/prohoster.info\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii"},"modified":"2020-08-20T07:42:23","modified_gmt":"2020-08-20T05:42:23","slug":"chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","status":"publish","type":"post","link":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","title":{"rendered":"Mi az a Docker: r\u00f6vid \u00e1ttekint\u00e9s a t\u00f6rt\u00e9nelemr\u0151l \u00e9s a f\u0151bb absztrakci\u00f3kr\u00f3l","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Augusztus 10-\u00e9n kezd\u0151d\u00f6tt a Slurm-on <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/2patKQ\">vide\u00f3kurzus Docker-r\u00f3l<\/a><\/noindex>, amelyben teljesen \u00e1tbesz\u00e9lj\u00fck, az alapvet\u0151 absztrakci\u00f3kt\u00f3l a h\u00e1l\u00f3zati param\u00e9terekig. <\/p>\n<p><\/p>\n<p>Ebben a cikkben besz\u00e9lni fogunk a Docker megjelen\u00e9s\u00e9nek t\u00f6rt\u00e9net\u00e9r\u0151l \u00e9s f\u0151bb absztrakci\u00f3ir\u00f3l: Image, Cli, Dockerfile. Az el\u0151ad\u00e1s kezd\u0151knek sz\u00f3l, \u00edgy val\u00f3sz\u00edn\u0171leg nem lesz \u00e9rdekes a tapasztalt felhaszn\u00e1l\u00f3k sz\u00e1m\u00e1ra. Itt nem lesz v\u00e9r, appendicitis \u00e9s m\u00e9lyrehat\u00f3 mer\u00fcl\u00e9s. Csak az alapok.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Mi az a Docker: r\u00f6vid \u00e1ttekint\u00e9s a t\u00f6rt\u00e9nelemr\u0151l \u00e9s a f\u0151bb absztrakci\u00f3kr\u00f3l\" src=\"\/wp-content\/uploads\/2020\/08\/f01af417f24c838577b09bdf90f02fb9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2 id=\"chto-takoe-docker\">Mi a Docker<\/h2>\n<p><\/p>\n<p>N\u00e9zz\u00fck meg a Docker defin\u00edci\u00f3j\u00e1t a Wikip\u00e9di\u00e1b\u00f3l.<\/p>\n<p><\/p>\n<blockquote><p>A Docker egy olyan szoftver, amely automatiz\u00e1lja az alkalmaz\u00e1sok telep\u00edt\u00e9s\u00e9t \u00e9s kezel\u00e9s\u00e9t kont\u00e9neriz\u00e1l\u00f3 k\u00f6rnyezetekben.<\/p><\/blockquote>\n<p>Ebb\u0151l a defin\u00edci\u00f3b\u00f3l nem sok minden \u00e9rthet\u0151. K\u00fcl\u00f6n\u00f6sen nem vil\u00e1gos, mit jelent az, hogy \u201ekont\u00e9neriz\u00e1l\u00f3 k\u00f6rnyezetekben\u201d. Ahhoz, hogy meg\u00e9rts\u00fck, t\u00e9rj\u00fcnk vissza a m\u00faltba. Kezdj\u00fck el a t\u00f6rt\u00e9nelmet egy olyan korszakban, amelyet \u201eMonolitikus korszaknak\u201d nevezek.<\/p>\n<p><\/p>\n<h2 id=\"monolitnaya-era\">Monolitikus korszak<\/h2>\n<p><\/p>\n<p>A monolitikus korszak a k\u00e9tezres \u00e9vek eleje, amikor az \u00f6sszes alkalmaz\u00e1s monolitikus volt, rengeteg f\u00fcgg\u0151s\u00e9ggel. A fejleszt\u00e9s hossz\u00fa ideig tartott. Emellett nem volt sok szerver, mindannyian ismert\u00fck \u0151ket n\u00e9vr\u0151l \u00e9s figyelt\u00fck \u0151ket. Van egy vicces \u00f6sszehasonl\u00edt\u00e1s:<\/p>\n<p>\n<center><div class=\"youtube-placeholder\" data-id=\"Od7e6hqis7A\" onclick=\"loadVideo(this)\">\r\n        <img decoding=\"async\" src=\"https:\/\/img.youtube.com\/vi\/Od7e6hqis7A\/hqdefault.jpg\" alt=\"Vide\u00f3 lej\u00e1tsz\u00e1sa\" loading=\"lazy\" width=\"480\" height=\"360\" style=\"width:100%;height:auto;\">\r\n        <div class=\"play-button\"><\/div>\r\n    <\/div><\/center><\/p>\n<p>A h\u00e1zi\u00e1llatok \u2014 ez a pet. A monolitikus korszakban a szervereinkhez \u00fagy viszonyultunk, mint a h\u00e1zi\u00e1llatokhoz, k\u00e9nyeztett\u00fck \u0151ket, a port is f\u00fajtuk r\u00f3luk. A jobb er\u0151forr\u00e1skezel\u00e9s \u00e9rdek\u00e9ben virtualiz\u00e1ci\u00f3t haszn\u00e1ltunk: egy szervert t\u00f6bb virtu\u00e1lis g\u00e9pre osztottunk fel, ez\u00e1ltal biztos\u00edtva a k\u00f6rnyezet elk\u00fcl\u00f6n\u00edt\u00e9s\u00e9t.<\/p>\n<p><\/p>\n<h2 id=\"sistemy-virtualizacii-na-baze-gipervizora\">Hypervisor alap\u00fa virtualiz\u00e1ci\u00f3s rendszerek<\/h2>\n<p><\/p>\n<p>Mindenki hallott m\u00e1r a virtualiz\u00e1ci\u00f3s rendszerekr\u0151l: VMware, VirtualBox, Hyper-V, Qemu KVM stb. Ezek biztos\u00edtj\u00e1k az alkalmaz\u00e1sok elk\u00fcl\u00f6n\u00edt\u00e9s\u00e9t \u00e9s az er\u0151forr\u00e1sok kezel\u00e9s\u00e9t, de vannak h\u00e1tr\u00e1nyaik is. A virtualiz\u00e1l\u00e1shoz hipervizorra van sz\u00fcks\u00e9g. A hipervizor pedig er\u0151forr\u00e1s-t\u00f6bbletet jelent. R\u00e1ad\u00e1sul a virtu\u00e1lis g\u00e9p \u00e1ltal\u00e1ban hatalmas \u2014 neh\u00e9z k\u00e9p, rajta az oper\u00e1ci\u00f3s rendszer, Nginx, Apache, esetleg MySQL. A k\u00e9p nagy, a virtu\u00e1lis g\u00e9pekkel neh\u00e9z b\u00e1nni. Ennek k\u00f6vetkezt\u00e9ben a virtualiz\u00e1ci\u00f3 gyakran lass\u00fa lehet. E probl\u00e9m\u00e1k megold\u00e1s\u00e1ra hozt\u00e1k l\u00e9tre a magszint\u0171 virtualiz\u00e1ci\u00f3s rendszereket.<\/p>\n<p><\/p>\n<h2 id=\"sistemy-virtualizacii-na-urovne-yadra\">Mag szint\u0171 virtualiz\u00e1ci\u00f3s rendszerek<\/h2>\n<p><\/p>\n<p>A mag szint\u0171 virtualiz\u00e1ci\u00f3t az OpenVZ, Systemd-nspawn \u00e9s LXC rendszerek t\u00e1mogatj\u00e1k. Az LXC (Linux Containers) egy \u00e9l\u00e9nk p\u00e9lda az ilyen t\u00edpus\u00fa virtualiz\u00e1ci\u00f3ra. <\/p>\n<p><\/p>\n<p>LXC \u2014 oper\u00e1ci\u00f3s rendszer szint\u0171 virtualiz\u00e1ci\u00f3s rendszer, amely lehet\u0151v\u00e9 teszi t\u00f6bb elszigetelt Linux oper\u00e1ci\u00f3s rendszer p\u00e9ld\u00e1ny futtat\u00e1s\u00e1t egyetlen csom\u00f3ponton. Az LXC nem haszn\u00e1l virtu\u00e1lis g\u00e9peket, hanem l\u00e9trehoz egy virtu\u00e1lis k\u00f6rnyezetet saj\u00e1t folyamat t\u00e9rrel \u00e9s h\u00e1l\u00f3zati veremmel.<\/p>\n<p><\/p>\n<p>L\u00e9nyeg\u00e9ben az LXC kont\u00e9nereket hoz l\u00e9tre. Mi a k\u00fcl\u00f6nbs\u00e9g a virtu\u00e1lis g\u00e9pek \u00e9s a kont\u00e9nerek k\u00f6z\u00f6tt?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Mi az a Docker: r\u00f6vid \u00e1ttekint\u00e9s a t\u00f6rt\u00e9nelemr\u0151l \u00e9s a f\u0151bb absztrakci\u00f3kr\u00f3l\" src=\"\/wp-content\/uploads\/2020\/08\/55afdcfd700d4869c9de488033a8e314.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A kont\u00e9ner nem alkalmas a folyamatok elszigetel\u00e9s\u00e9re: a kernel szint\u0171 virtualiz\u00e1ci\u00f3s rendszerekben vannak olyan sebezhet\u0151s\u00e9gek, amelyek lehet\u0151v\u00e9 teszik, hogy a kont\u00e9nerb\u0151l kil\u00e9pjenek a gazda g\u00e9pre. Teh\u00e1t ha valamit elszigetelni kell, akkor jobb egy virtu\u00e1lis g\u00e9pet haszn\u00e1lni.<\/p>\n<p><\/p>\n<p>A virtualiz\u00e1ci\u00f3 \u00e9s a kont\u00e9neriz\u00e1ci\u00f3 k\u00f6z\u00f6tti k\u00fcl\u00f6nbs\u00e9geket \u00e1br\u00e1n is meg lehet figyelni.<br \/>\nL\u00e9teznek hardveres hipervizorok, oper\u00e1ci\u00f3s rendszeren fut\u00f3 hipervizorok \u00e9s kont\u00e9nerek. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Mi az a Docker: r\u00f6vid \u00e1ttekint\u00e9s a t\u00f6rt\u00e9nelemr\u0151l \u00e9s a f\u0151bb absztrakci\u00f3kr\u00f3l\" src=\"\/wp-content\/uploads\/2020\/08\/a0c06e9adc1fab3b4b5e9e1b05b51d66.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A \"hardveres\" hipervizorok nagyszer\u0171ek, ha val\u00f3ban szeretn\u00e9l valamit elszigetelni. Mert lehet\u0151s\u00e9g van az elszigetel\u00e9sre a mem\u00f3riac\u00e9lok \u00e9s a processzorok szintj\u00e9n.<\/p>\n<p><\/p>\n<p>Vannak hipervizorok program form\u00e1j\u00e1ban, \u00e9s l\u00e9teznek kont\u00e9nerek, amelyeket a tov\u00e1bbiakban t\u00e1rgyalunk. A kont\u00e9neriz\u00e1l\u00f3 rendszerekben nincs hipervizor, de van egy Container Engine, amely kont\u00e9nereket hoz l\u00e9tre \u00e9s kezel. Ez a megold\u00e1s k\u00f6nnyebb, \u00edgy a kernelre gyakorolt hat\u00e1s kisebb, vagy szinte nincs is.<\/p>\n<p><\/p>\n<blockquote>\n<h2 id=\"chto-ispolzuetsya-dlya-konteynerizacii-na-urovne-yadra\">Mi haszn\u00e1lhat\u00f3 a kernel szint\u0171 kont\u00e9neriz\u00e1ci\u00f3hoz?<\/h2>\n<p>A legfontosabb technol\u00f3gi\u00e1k, amelyek lehet\u0151v\u00e9 teszik egy m\u00e1s folyamatokt\u00f3l elszigetelt kont\u00e9ner l\u00e9trehoz\u00e1s\u00e1t, a Namespaces \u00e9s a Control Groups.<\/p>\n<p>Namespaces: PID, H\u00e1l\u00f3zat, Mount \u00e9s Felhaszn\u00e1l\u00f3. Vannak m\u00e9g m\u00e1sok is, de egyszer\u0171s\u00e9g kedv\u00e9\u00e9rt maradjunk enn\u00e9l a n\u00e9gyn\u00e9l.<\/p>\n<p>A PID Namespace korl\u00e1tozza a folyamatokat. Amikor p\u00e9ld\u00e1ul l\u00e9trehozunk egy PID Namespace-t, \u00e9s oda elhelyez\u00fcnk egy folyamatot, akkor az PID 1-es lesz. \u00c1ltal\u00e1ban a PID 1 a systemd vagy az init rendszerekben. Teh\u00e1t amikor egy folyamatot egy \u00faj namespace-be helyez\u00fcnk, annak is PID 1-e lesz.<\/p>\n<p>A Networking Namespace lehet\u0151v\u00e9 teszi a h\u00e1l\u00f3zat korl\u00e1toz\u00e1s\u00e1t\/elszigetel\u00e9s\u00e9t, \u00e9s m\u00e1r bel\u00fcl elhelyezhetj\u00fck a saj\u00e1t interf\u00e9szeinket. A Mount a f\u00e1jlrendszer korl\u00e1toz\u00e1sa, a Felhaszn\u00e1l\u00f3 pedig a felhaszn\u00e1l\u00f3k korl\u00e1toz\u00e1sa.<\/p>\n<p>Control Groups: Mem\u00f3ria, CPU, IOPS, H\u00e1l\u00f3zat \u2014 \u00f6sszesen k\u00f6r\u00fclbel\u00fcl 12 be\u00e1ll\u00edt\u00e1s. Ezt Cgroups-nak (C-csoportok) is h\u00edvj\u00e1k.<\/p>\n<p>A Control Groups kezelik a kont\u00e9ner er\u0151forr\u00e1sait. A Control Groups-on kereszt\u00fcl meg tudjuk mondani, hogy a kont\u00e9ner nem fogyaszthat el bizonyos mennyis\u00e9g\u0171 er\u0151forr\u00e1sn\u00e1l t\u00f6bbet.<\/p>\n<p>A kont\u00e9neriz\u00e1ci\u00f3 teljes k\u00f6r\u0171 m\u0171k\u00f6d\u00e9s\u00e9hez tov\u00e1bbi technol\u00f3gi\u00e1kra van sz\u00fcks\u00e9g: Capabilities, Copy-on-write \u00e9s m\u00e1sok.<\/p>\n<p>A Capabilities azt jelenti, hogy a folyamatnak megmondjuk, mit tehet \u00e9s mit nem. Az oper\u00e1ci\u00f3s rendszer szintj\u00e9n ez egyszer\u0171 bit t\u00e9rk\u00e9pek sz\u00e1mos param\u00e9terrel. P\u00e9ld\u00e1ul a root felhaszn\u00e1l\u00f3 teljes jogk\u00f6rrel rendelkezik, mindent megtehet. Az id\u0151szolg\u00e1ltat\u00f3 m\u00f3dos\u00edthatja a rendszerid\u0151t: rendelkezik a Time Capsule jogosults\u00e1gokkal, \u00e9s ennyi. A jogosults\u00e1gok seg\u00edts\u00e9g\u00e9vel rugalmasan be\u00e1ll\u00edthatjuk a folyamatok korl\u00e1tait, \u00edgy v\u00e9dve magunkat.<\/p>\n<p>A Copy-on-write rendszer lehet\u0151v\u00e9 teszi sz\u00e1munkra, hogy a Docker k\u00e9pekkel hat\u00e9konyabban dolgozzunk.<\/p>\n<p><em>Jelenleg a Docker \u00f6sszef\u00e9rhetetlens\u00e9gi probl\u00e9m\u00e1kkal k\u00fczd a Cgroups v2-vel, ez\u00e9rt a cikk a Cgroups v1-re \u00f6sszpontos\u00edt.<\/em><\/p><\/blockquote>\n<p>De t\u00e9rj\u00fcnk vissza a t\u00f6rt\u00e9nethez. <\/p>\n<p><\/p>\n<p>Amikor a kernel szint\u0171 virtualiz\u00e1ci\u00f3s rendszerek megjelentek, akt\u00edvan kezdt\u00e9k alkalmazni \u0151ket. Az overhead a hypervisoron elt\u0171nt, de n\u00e9h\u00e1ny probl\u00e9ma megmaradt:<\/p>\n<p><\/p>\n<ul>\n<li>nagy k\u00e9pek: ugyanabba az OpenVZ-be nyomj\u00e1k az oper\u00e1ci\u00f3s rendszert, k\u00f6nyvt\u00e1rakat, rengeteg k\u00fcl\u00f6nb\u00f6z\u0151 szoftvert, \u00e9s ennek k\u00f6vetkezt\u00e9ben a k\u00e9p m\u00e9g mindig el\u00e9g nagy lesz;<\/li>\n<li>nincs norm\u00e1lis csomagol\u00e1si \u00e9s sz\u00e1ll\u00edt\u00e1si szabv\u00e1ny, ez\u00e9rt fenn\u00e1ll a f\u00fcgg\u0151s\u00e9gek probl\u00e9m\u00e1ja. El\u0151fordul, hogy k\u00e9t k\u00f3dk\u00e9szlet ugyanazt a k\u00f6nyvt\u00e1rat haszn\u00e1lja, de k\u00fcl\u00f6nb\u00f6z\u0151 verzi\u00f3kkal. K\u00f6z\u00f6tt\u00fck konfliktus l\u00e9phet fel.<\/li>\n<\/ul>\n<p><\/p>\n<p>Ezeknek a probl\u00e9m\u00e1knak a megold\u00e1s\u00e1ra \u00e9rkezett a k\u00f6vetkez\u0151 korszak.<\/p>\n<p><\/p>\n<h2 id=\"era-konteynerov\">A kont\u00e9nerek kora<\/h2>\n<p><\/p>\n<p>A kont\u00e9nerek kor\u00e1ban megv\u00e1ltozott a vel\u00fck val\u00f3 munka filoz\u00f3fi\u00e1ja:<\/p>\n<p><\/p>\n<ul>\n<li>Egy folyamat \u2014 egy kont\u00e9ner.<\/li>\n<li>Minden sz\u00fcks\u00e9ges f\u00fcgg\u0151s\u00e9get a folyamat kont\u00e9ner\u00e9be sz\u00e1ll\u00edtunk. Ez megk\u00f6veteli a monolitok mikroszervizre bont\u00e1s\u00e1t.<\/li>\n<li>Min\u00e9l kisebb a k\u00e9p, ann\u00e1l jobb \u2014 kevesebb lehets\u00e9ges sebezhet\u0151s\u00e9g, gyorsabb telep\u00edt\u00e9s \u00e9s \u00edgy tov\u00e1bb.<\/li>\n<li>Az instanci\u00e1k efemerikuss\u00e1 v\u00e1lnak. <\/li>\n<\/ul>\n<p><\/p>\n<p>Eml\u00e9kszik, amikor a h\u00e1zi\u00e1llatok \u00e9s a j\u00f3sz\u00e1g k\u00f6z\u00f6tti k\u00fcl\u00f6nbs\u00e9gr\u0151l besz\u00e9ltem? Kor\u00e1bban az instanci\u00e1k a h\u00e1zi\u00e1llatokhoz hasonl\u00edtottak, most pedig a j\u00f3sz\u00e1ghoz \u2014 az \u00e1llatokhoz. R\u00e9gen egy monolit volt \u2014 egy alkalmaz\u00e1s. Most ez 100 mikroszolg\u00e1ltat\u00e1s, 100 kont\u00e9ner. Egyes kont\u00e9nereknek lehet 2-3 replik\u00e1juk. M\u00e1r nem olyan fontos minden kont\u00e9nert ellen\u0151rizni. Sokkal fontosabb, hogy a szolg\u00e1ltat\u00e1s, amit ez a kont\u00e9nersorozat v\u00e9gez, el\u00e9rhet\u0151 legyen. Ez megv\u00e1ltoztatja a megfigyel\u00e9s megk\u00f6zel\u00edt\u00e9s\u00e9t.<\/p>\n<p><\/p>\n<p>2014-2015-ben a Docker vir\u00e1gkora k\u00f6vetkezett be \u2014 az a technol\u00f3gia, amir\u0151l most besz\u00e9lni fogunk.<\/p>\n<p><\/p>\n<p>A Docker megv\u00e1ltoztatta a filoz\u00f3fi\u00e1t \u00e9s standardiz\u00e1lta az alkalmaz\u00e1scsomagol\u00e1st. A Docker seg\u00edts\u00e9g\u00e9vel csomagolhatjuk az alkalmaz\u00e1st, felk\u00fcldhetj\u00fck egy t\u00e1rol\u00f3ba, onnan let\u00f6lthetj\u00fck, \u00e9s telep\u00edthetj\u00fck. <\/p>\n<p><\/p>\n<p>A Docker-kont\u00e9nerbe mindent beletesz\u00fcnk, amire sz\u00fcks\u00e9g van, ez\u00e9rt megold\u00f3dik a f\u00fcgg\u0151s\u00e9gek probl\u00e9m\u00e1ja. A Docker garant\u00e1lja a reproduk\u00e1lhat\u00f3s\u00e1got. Tudom, sokan tal\u00e1lkoztak a reproduk\u00e1lhatatlans\u00e1ggal: n\u00e1lad minden m\u0171k\u00f6dik, felt\u00f6lt\u00f6d a termel\u00e9si k\u00f6rnyezetbe, ott m\u00e1r nem m\u0171k\u00f6dik. A Dockerrel ez a probl\u00e9ma megsz\u0171nik. Ha a Docker-kont\u00e9nered elindul \u00e9s megcsin\u00e1lja, amit kell, akkor nagy val\u00f3sz\u00edn\u0171s\u00e9ggel el fog indulni a termel\u00e9si k\u00f6rnyezetben is, \u00e9s ott is ugyanazt fogja csin\u00e1lni.<\/p>\n<p><\/p>\n<blockquote>\n<h2 id=\"otstuplenie-pro-overhed\">Kitekint\u00e9s az overheadre<\/h2>\n<p>Az overheaddel kapcsolatban folyamatos vit\u00e1k folynak. Vannak, akik \u00fagy v\u00e9lik, hogy a Docker nem okoz extra terhel\u00e9st, mivel a Linux kernel\u00e9t \u00e9s minden sz\u00fcks\u00e9ges folyamat\u00e1t haszn\u00e1lja a kont\u00e9neriz\u00e1l\u00e1shoz. Azt mondj\u00e1k, hogy \"ha azt mondod, hogy a Docker overhead, akkor a Linux kernel is overhead\".<\/p>\n<p>M\u00e1sr\u00e9szt, ha m\u00e9lyebben megvizsg\u00e1ljuk, a Dockerben val\u00f3ban van n\u00e9h\u00e1ny dolog, amit kicsit felt\u00e9telesen overheadnek lehet nevezni.<\/p>\n<p>Az els\u0151 a PID n\u00e9vter\u00fclet. Amikor egy folyamatot elhelyez\u00fcnk egy n\u00e9vt\u00e9rben, PID-t kap 1. Ugyanakkor ennek a folyamatnak van egy m\u00e1sik PID-je is, amely a gazda n\u00e9vt\u00e9rben van, a kont\u00e9neren k\u00edv\u00fcl. P\u00e9ld\u00e1ul, ha egy Nginxet ind\u00edtunk el a kont\u00e9nerben, \u0151 lesz a PID 1 (mesterfolyamat). A gazda rendszerben pedig a PID-je 12623. Neh\u00e9z megmondani, mennyi ez az overhead.<\/p>\n<p>A m\u00e1sodik dolog a Cgroups. Vegy\u00fck a Cgroups-ot mem\u00f3ria szempontj\u00e1b\u00f3l, azaz a lehet\u0151s\u00e9get, hogy korl\u00e1tozzuk a kont\u00e9ner mem\u00f3ri\u00e1j\u00e1t. Ha ezt aktiv\u00e1ljuk, akt\u00edvv\u00e1 v\u00e1lnak a sz\u00e1ml\u00e1l\u00f3k, mem\u00f3ria elsz\u00e1mol\u00e1s: a kernelnek meg kell \u00e9rtenie, mennyi oldalt osztottak ki, \u00e9s mennyi szabad m\u00e9g a kont\u00e9ner sz\u00e1m\u00e1ra. Ez lehet overhead, de pontos kutat\u00e1sok nem \u00e1llnak rendelkez\u00e9sre arr\u00f3l, hogyan befoly\u00e1solja a teljes\u00edtm\u00e9nyt. \u00c9n sem tapasztaltam, hogy egy Dockerben fut\u00f3 alkalmaz\u00e1s v\u00e1ratlanul hirtelen teljes\u00edtm\u00e9nycs\u00f6kken\u00e9st szenvedett volna el. <\/p>\n<p>\u00c9s m\u00e9g egy megjegyz\u00e9s a teljes\u00edtm\u00e9nyr\u0151l. N\u00e9h\u00e1ny kernel param\u00e9ter \u00e1tvitele t\u00f6rt\u00e9nik a gazd\u00e1t\u00f3l a kont\u00e9nerbe. K\u00fcl\u00f6n\u00f6sen n\u00e9h\u00e1ny h\u00e1l\u00f3zati param\u00e9ter. Ez\u00e9rt, ha a Dockerben szeretn\u00e9l valami nagy teljes\u00edtm\u00e9ny\u0171t ind\u00edtani, p\u00e9ld\u00e1ul olyat, ami akt\u00edvan haszn\u00e1lja a h\u00e1l\u00f3zatot, akkor ezeket a param\u00e9tereket minimum m\u00f3dos\u00edtanod kell. P\u00e9ld\u00e1ul a nf_conntrack. <\/p><\/blockquote>\n<p><\/p>\n<h2 id=\"o-koncepcii-docker\">A Docker koncepci\u00f3j\u00e1r\u00f3l<\/h2>\n<p><\/p>\n<p>A Docker t\u00f6bb \u00f6sszetev\u0151b\u0151l \u00e1ll: <\/p>\n<p><\/p>\n<ol>\n<li>Docker Daemon \u2014 a Container Engine; it launches containers. <\/li>\n<li>Docker CII \u2014 a utility for managing Docker.<\/li>\n<li>Dockerfile \u2014 an instruction manual on how to build an image.<\/li>\n<li>Image \u2014 an image from which the container is rolled out.<\/li>\n<li>Container.<\/li>\n<li>Docker registry \u2014 a repository of images.<\/li>\n<\/ol>\n<p><\/p>\n<p>Schematic representation looks approximately like this:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Mi az a Docker: r\u00f6vid \u00e1ttekint\u00e9s a t\u00f6rt\u00e9nelemr\u0151l \u00e9s a f\u0151bb absztrakci\u00f3kr\u00f3l\" src=\"\/wp-content\/uploads\/2020\/08\/73ccc02c14485f72cfd7c64e3074f3b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>The Docker daemon runs on the Docker_host and launches containers. There is a Client that sends commands: build an image, download an image, start a container. The Docker daemon accesses the registry to execute them. The Docker client can connect both locally (to the Unix socket) and remotely via TCP.<\/p>\n<p><\/p>\n<p>Let's go through each component.<\/p>\n<p><\/p>\n<p><u>Docker daemon<\/u> \u2014 is the server part, running on the host machine: it downloads images and starts containers from them, creates a network between containers, and collects logs. When we say \"create an image\", that is also handled by the daemon.<\/p>\n<p><\/p>\n<p><u>Docker CLI<\/u> \u2014 is the client part of Docker, a console utility for working with the daemon. I emphasize that it can operate not only locally but also over the network. <\/p>\n<p><\/p>\n<p><strong>Basic commands:<\/strong><\/p>\n<p><\/p>\n<p>docker ps \u2014 shows the containers currently running on the Docker host.<br \/>\ndocker images \u2014 shows the images downloaded locally.<br \/>\ndocker search &lt;&gt; \u2014 searches for an image in the registry.<br \/>\ndocker pull &lt;&gt; \u2014 downloads an image from the registry to the machine.<br \/>\ndocker build &lt;&lt;\\\/path\\\/to\\\/dir&gt;&gt; \u2014 builds an image.<br \/>\ndocker run &lt;&gt; \u2014 starts a container.<br \/>\ndocker rm &lt;&gt; \u2014 removes a container.<br \/>\ndocker logs &lt;&gt; \u2014 logs of the container.<br \/>\ndocker start\\\/stop\\\/restart &lt;&gt; \u2014 manages the container.\n<\/p>\n<p>If you master these commands and use them confidently, you can consider that you have mastered Docker at the user level by 70%.<\/p>\n<p><\/p>\n<p><u>Dockerfile<\/u> \u2014 an instruction for creating an image. Almost every command in the instruction represents a new layer. Let's look at an example.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Mi az a Docker: r\u00f6vid \u00e1ttekint\u00e9s a t\u00f6rt\u00e9nelemr\u0151l \u00e9s a f\u0151bb absztrakci\u00f3kr\u00f3l\" src=\"\/wp-content\/uploads\/2020\/08\/4d61b58d0d0d8b2e4ddbbfe573f34f7e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>A Dockerfile looks something like this: commands on the left, arguments on the right. Each command present here (and generally written in Dockerfile) creates a new layer in the Image. <\/p>\n<p><\/p>\n<p>M\u00e9g a bal oldal\u00e1ra tekintve is k\u00f6r\u00fclbel\u00fcl meg\u00e9rthetj\u00fck, mi t\u00f6rt\u00e9nik. Azt mondjuk: \u201ehozz l\u00e9tre egy mapp\u00e1t\u201d \u2014 ez egy r\u00e9teg. \u201eTedd akt\u00edvv\u00e1 a mapp\u00e1t\u201d \u2014 ez m\u00e9g egy r\u00e9teg, \u00e9s \u00edgy tov\u00e1bb. A r\u00e9tegezett torta megk\u00f6nny\u00edti az \u00e9letet. Ha l\u00e9trehozok m\u00e9g egy Dockerfile-t, \u00e9s az utols\u00f3 sorban valamit megv\u00e1ltoztatok \u2014 nem a \"python\" \"main.py\" parancsot ind\u00edtom el, hanem valami m\u00e1st, vagy m\u00e1s f\u00e1jlb\u00f3l telep\u00edtem a f\u00fcgg\u0151s\u00e9geket \u2014 akkor az el\u0151z\u0151 r\u00e9tegek \u00fajra felhaszn\u00e1l\u00e1sra ker\u00fclnek, mint a cache.<\/p>\n<p><\/p>\n<p><u>Image<\/u> \u2014 ez a kont\u00e9ner k\u00e9pe, amelyb\u0151l kont\u00e9nerek ind\u00edt\u00f3dnak. Ha a Dockert csomagkezel\u0151k\u00e9nt n\u00e9zz\u00fck (mintha deb vagy rpm csomagokkal dolgozn\u00e1nk), akkor a k\u00e9p l\u00e9nyeg\u00e9ben egy rpm csomag. A yum install seg\u00edts\u00e9g\u00e9vel telep\u00edthetj\u00fck az alkalmaz\u00e1st, elt\u00e1vol\u00edthatjuk, kereshetj\u00fck a t\u00e1rol\u00f3ban, let\u00f6lthetj\u00fck. Itt nagyj\u00e1b\u00f3l ugyanaz t\u00f6rt\u00e9nik: a k\u00e9pb\u0151l kont\u00e9nerek indulnak, amelyeket a Docker registry-ben t\u00e1rolunk (a yum t\u00e1rol\u00f3 anal\u00f3gi\u00e1j\u00e1ra), \u00e9s minden k\u00e9p rendelkezik egy SHA-256 hash-sel, n\u00e9vvel \u00e9s c\u00edmk\u00e9vel.<\/p>\n<p><\/p>\n<p>A k\u00e9p a Dockerfile utas\u00edt\u00e1sai alapj\u00e1n k\u00e9sz\u00fcl. Minden utas\u00edt\u00e1s \u00faj r\u00e9teget hoz l\u00e9tre. A r\u00e9tegek \u00fajra felhaszn\u00e1lhat\u00f3k.<\/p>\n<p><\/p>\n<p><u>Docker registry<\/u> \u2014 ez a Docker k\u00e9pek t\u00e1rol\u00f3ja. Az oper\u00e1ci\u00f3s rendszerekkel anal\u00f3gi\u00e1ban a Dockernek van nyilv\u00e1nos standard regisztere \u2014 dockerhub. De l\u00e9trehozhatunk saj\u00e1t t\u00e1rol\u00f3t, saj\u00e1t Docker registry-t. <\/p>\n<p><\/p>\n<p><u>Kont\u00e9ner<\/u> \u2014 ez az, ami a k\u00e9pb\u0151l elindul. A Dockerfile utas\u00edt\u00e1sai alapj\u00e1n \u00f6sszerakott k\u00e9pet ind\u00edtjuk el. Ez a kont\u00e9ner izol\u00e1lva van a t\u00f6bbi kont\u00e9nert\u0151l, \u00e9s mindennel el kell l\u00e1tnia az alkalmaz\u00e1s m\u0171k\u00f6d\u00e9s\u00e9hez sz\u00fcks\u00e9ges dolgokkal. Ebben az esetben egy kont\u00e9ner \u2014 egy folyamat. El\u0151fordulhat, hogy k\u00e9t folyamatot kell l\u00e9trehoznunk, de ez ellentmond a Docker ideol\u00f3gi\u00e1j\u00e1nak.<\/p>\n<p><\/p>\n<p>Az \u201eegy kont\u00e9ner \u2014 egy folyamat\u201d k\u00f6vetelm\u00e9ny a PID Namespace-hez kapcsol\u00f3dik. Amikor a Namespace-ben egy folyamatot PID 1-gyel ind\u00edtanak, ha az hirtelen meghal, akkor az eg\u00e9sz kont\u00e9ner is meghal. Ha viszont ott k\u00e9t folyamat fut: az egyik \u00e9l, a m\u00e1sik pedig meghalt, akkor a kont\u00e9ner m\u00e9g mindig \u00e9letben marad. De ez a legjobb gyakorlatok k\u00e9rd\u00e9se, azokr\u00f3l m\u00e1s anyagokban fogunk besz\u00e9lni.<\/p>\n<p><\/p>\n<p>A kurzus r\u00e9szleteivel \u00e9s teljes programj\u00e1val kapcsolatos inform\u00e1ci\u00f3k itt tal\u00e1lhat\u00f3k: \u00ab<noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/2patKQ\">Videokurzus a Docker-r\u0151l<\/a><\/noindex>\u00bb. <\/p>\n<p><\/p>\n<p><em>Szerz\u0151: Marcell Ibrajev, tan\u00fas\u00edtott Kubernetes adminisztr\u00e1tor, gyakorl\u00f3 m\u00e9rn\u00f6k a Southbridge-n\u00e9l, el\u0151ad\u00f3 \u00e9s a Slyerm tanfolyamok fejleszt\u0151je.<\/em><\/p>\n<p>Forr\u00e1s: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/southbridge\/blog\/515508\/\">habr.com<\/a> <\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>10 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432 \u0421\u043b\u0451\u0440\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u0432\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u043f\u043e Docker, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u2014 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 \u0434\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0435\u0442\u0438. \u0412 \u044d\u0442\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u043f\u043e\u0433\u043e\u0432\u043e\u0440\u0438\u043c \u043e\u0431 \u0438\u0441\u0442\u043e\u0440\u0438\u0438 \u043f\u043e\u044f\u0432\u043b\u0435\u043d\u0438\u044f Docker \u0438 \u0435\u0433\u043e \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u044f\u0445: Image, Cli, Dockerfile. \u041b\u0435\u043a\u0446\u0438\u044f \u0440\u0430\u0441\u0441\u0447\u0438\u0442\u0430\u043d\u0430 \u043d\u0430 \u043d\u043e\u0432\u0438\u0447\u043a\u043e\u0432, \u043f\u043e\u044d\u0442\u043e\u043c\u0443 \u0432\u0440\u044f\u0434 \u043b\u0438 \u0431\u0443\u0434\u0435\u0442 \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u0430 \u043e\u043f\u044b\u0442\u043d\u044b\u043c \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f\u043c. \u0417\u0434\u0435\u0441\u044c \u043d\u0435 \u0431\u0443\u0434\u0435\u0442 \u043a\u0440\u043e\u0432\u0438, \u0430\u043f\u043f\u0435\u043d\u0434\u0438\u043a\u0441\u0430 \u0438 \u0433\u043b\u0443\u0431\u043e\u043a\u043e\u0433\u043e \u043f\u043e\u0433\u0440\u0443\u0436\u0435\u043d\u0438\u044f. [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":91906,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-91905","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.3 - aioseo.com -->\n\t<meta name=\"description\" content=\"10 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432 \u0421\u043b\u0451\u0440\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u0432\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u043f\u043e Docker, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u2014 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 \u0434\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0435\u0442\u0438.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"Yuri Gagarin\"\/>\n\t<link rel=\"canonical\" href=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii\" \/>\n\t\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.3\" \/>\n\t\t<meta property=\"og:locale\" content=\"hu_HU\" \/>\n\t\t<meta property=\"og:site_name\" content=\"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"\ud83e\udd47\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Docker: \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u044d\u043a\u0441\u043a\u0443\u0440\u0441 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"10 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432 \u0421\u043b\u0451\u0440\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u0432\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u043f\u043e Docker, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u2014 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 \u0434\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0435\u0442\u0438.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii\" \/>\n\t\t<meta property=\"og:image\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:secure_url\" content=\"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg\" \/>\n\t\t<meta property=\"og:image:width\" content=\"350\" \/>\n\t\t<meta property=\"og:image:height\" content=\"350\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2020-08-20T05:42:23+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-08-20T05:42:23+00:00\" \/>\n\t\t<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<meta property=\"article:author\" content=\"https:\/\/www.facebook.com\/prohoster\" \/>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"\ud83e\udd47Mi az a Docker: r\u00f6vid \u00e1ttekint\u00e9s a t\u00f6rt\u00e9nelemr\u0151l \u00e9s a f\u0151bb absztrakci\u00f3kr\u00f3l | ProHoster","description":"Augusztus 10-\u00e9n a Slyern elind\u00edtotta a vide\u00f3kurzust a Dockerr\u0151l, amelyben teljes m\u00e9rt\u00e9kben felfedj\u00fck azt \u2014 az alapvet\u0151 absztrakci\u00f3kt\u00f3l a h\u00e1l\u00f3zati param\u00e9terekig.","canonical_url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"hu_HU","og:site_name":"ProHoster | \u041a\u0443\u043f\u0438\u0442\u044c \u043d\u0430\u0434\u0435\u0436\u043d\u044b\u0439 \u0445\u043e\u0441\u0442\u0438\u043d\u0433 \u0434\u043b\u044f \u0441\u0430\u0439\u0442\u043e\u0432 \u0441 \u0437\u0430\u0449\u0438\u0442\u043e\u0439 \u043e\u0442 DDoS, VPS VDS \u0441\u0435\u0440\u0432\u0435\u0440\u044b","og:type":"article","og:title":"\ud83e\udd47\u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 Docker: \u043a\u0440\u0430\u0442\u043a\u0438\u0439 \u044d\u043a\u0441\u043a\u0443\u0440\u0441 \u0432 \u0438\u0441\u0442\u043e\u0440\u0438\u044e \u0438 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0435 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0438 | ProHoster","og:description":"10 \u0430\u0432\u0433\u0443\u0441\u0442\u0430 \u0432 \u0421\u043b\u0451\u0440\u043c \u0441\u0442\u0430\u0440\u0442\u043e\u0432\u0430\u043b \u0432\u0438\u0434\u0435\u043e\u043a\u0443\u0440\u0441 \u043f\u043e Docker, \u0432 \u043a\u043e\u0442\u043e\u0440\u043e\u043c \u043c\u044b \u0440\u0430\u0437\u0431\u0438\u0440\u0430\u0435\u043c \u0435\u0433\u043e \u043f\u043e\u043b\u043d\u043e\u0441\u0442\u044c\u044e \u2014 \u043e\u0442 \u043e\u0441\u043d\u043e\u0432\u043d\u044b\u0445 \u0430\u0431\u0441\u0442\u0440\u0430\u043a\u0446\u0438\u0439 \u0434\u043e \u043f\u0430\u0440\u0430\u043c\u0435\u0442\u0440\u043e\u0432 \u0441\u0435\u0442\u0438.","og:url":"https:\/\/prohoster.info\/hu\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","og:image":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:secure_url":"https:\/\/prohoster.info\/wp-content\/uploads\/2021\/11\/logo-350.jpg","og:image:width":350,"og:image:height":350,"article:published_time":"2020-08-20T05:42:23+00:00","article:modified_time":"2020-08-20T05:42:23+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"91905","title":null,"description":null,"keywords":null,"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"local_seo":null,"seo_analyzer_scan_date":null,"breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-02-28 12:18:28","updated":"2022-10-01 05:09:53","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/91905","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/comments?post=91905"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/posts\/91905\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media\/91906"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/media?parent=91905"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/categories?post=91905"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/hu\/wp-json\/wp\/v2\/tags?post=91905"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}