{"id":36772,"date":"2019-10-31T22:13:44","date_gmt":"2019-10-31T19:13:44","guid":{"rendered":"https:\/\/prohoster.info\/blog\/ponimaya-docker\/"},"modified":"2019-10-31T22:13:44","modified_gmt":"2019-10-31T19:13:44","slug":"ponimaya-docker","status":"publish","type":"post","link":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/ponimaya-docker","title":{"rendered":"\u00cen\u021beleg\u00e2nd Docker","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>De c\u00e2teva luni folosesc Docker pentru a structura procesul de dezvoltare\/ livrare a proiectelor web. Ofer cititorilor \u201eHabrhabr\u201d traducerea articolului introductiv despre Docker \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/introduction\/understanding-docker\/\">\u201e\u00cen\u021belegerea Docker\u201d<\/a><\/noindex>.<\/i><\/p>\n<h3>Ce este Docker?<\/h3>\n<p>\nDocker este o platform\u0103 deschis\u0103 pentru dezvoltarea, livrarea \u0219i operarea aplica\u021biilor. Docker este conceput pentru a lansa aplica\u021biile dvs. mai repede. Cu Docker, pute\u021bi separa aplica\u021bia dvs. de infrastructura dvs. \u0219i s\u0103 trata\u021bi infrastructura ca pe o aplica\u021bie gestionat\u0103. Docker ajut\u0103 la livrarea codului mai repede, testeaz\u0103 mai rapid, lanseaz\u0103 aplica\u021biile mai repede \u0219i reduce timpul dintre scrierea codului \u0219i rularea acestuia. Docker face acest lucru cu ajutorul unei platforme de virtualizare a containerelor u\u0219oare, folosind procese \u0219i utilitare care ajut\u0103 la gestionarea \u0219i livrarea aplica\u021biilor dumneavoastr\u0103.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nLa baz\u0103, Docker permite rularea aproape oric\u0103rei aplica\u021bii, izolate \u00een siguran\u021b\u0103 \u00eentr-un container. Izolarea sigur\u0103 v\u0103 permite s\u0103 rula\u021bi simultan mai multe containere pe un singur host. Natura u\u0219oar\u0103 a containerului, care ruleaz\u0103 f\u0103r\u0103 sarcini suplimentare ale hipervizorului, v\u0103 permite s\u0103 ob\u021bine\u021bi mai mult de la hardware-ul dvs.<\/p>\n<p>Platforma \u0219i instrumentele de virtualizare a containerelor pot fi utile \u00een urm\u0103toarele cazuri:<\/p>\n<ul>\n<li>ambalarea aplica\u021biei dvs. (\u0219i a componentelor utilizate) \u00een containere Docker;<\/li>\n<li>distribuirea \u0219i livrarea acestor containere echipelor pentru dezvoltare \u0219i testare;<\/li>\n<li>lansarea acestor containere \u00een produc\u021bie, at\u00e2t \u00een centre de date, c\u00e2t \u0219i \u00een cloud.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Pentru ce pot folosi Docker?<\/h3>\n<p><\/p>\n<h4>Lansarea rapid\u0103 a aplica\u021biilor dvs.<\/h4>\n<p>\nDocker este perfect pentru organizarea ciclului de dezvoltare. Docker permite dezvoltatorilor s\u0103 foloseasc\u0103 containere locale cu aplica\u021bii \u0219i servicii. Aceasta permite integrarea ulterioar\u0103 \u00een procesul de integrare \u0219i livrare continue (continuous integration and deployment workflow).<\/p>\n<p>De exemplu, dezvoltatorii dvs. scriu cod local \u0219i \u00eemp\u0103rt\u0103\u0219esc stiva de dezvoltare (setul de imagini Docker) cu colegii. C\u00e2nd sunt preg\u0103ti\u021bi, trimit codul \u0219i containerele pe o platform\u0103 de testare \u0219i ruleaz\u0103 orice teste necesare. De pe platforma de testare, pot trimite codul \u0219i imaginile \u00een produc\u021bie.<\/p>\n<h4>O lansare \u0219i desf\u0103\u0219urare mai simpl\u0103<\/h4>\n<p>\nPlatforma bazat\u0103 pe containere Docker permite portabilitatea u\u0219oar\u0103 a sarcinilor dumneavoastr\u0103 utile. Containerele Docker pot rula at\u00e2t pe ma\u0219ina local\u0103, fie fizic\u0103, fie pe o ma\u0219in\u0103 virtual\u0103 \u00een centrul de date, c\u00e2t \u0219i \u00een cloud.<\/p>\n<p>Portabilitatea \u0219i natura u\u0219oar\u0103 a Docker-ului permit gestionarea dinamic\u0103 a sarcinilor dumneavoastr\u0103. Pute\u021bi utiliza Docker pentru a desf\u0103\u0219ura sau a opri aplica\u021bia sau serviciile dumneavoastr\u0103. Viteza Docker-ului face ca acest lucru s\u0103 fie posibil aproape \u00een timp real.<\/p>\n<h4>Sarcini mari \u0219i mai multe sarcini utile<\/h4>\n<p>\nDocker este u\u0219or \u0219i rapid. Ofer\u0103 o alternativ\u0103 durabil\u0103 \u0219i rentabil\u0103 la ma\u0219inile virtuale bazate pe hypervisor. Este deosebit de util \u00een condi\u021bii de sarcin\u0103 mare, de exemplu, atunci c\u00e2nd crea\u021bi un cloud propriu sau o platform\u0103 ca serviciu. \u00cens\u0103 este de asemenea util pentru aplica\u021bii mici \u0219i medii, c\u00e2nd dori\u021bi s\u0103 ob\u021bine\u021bi mai mult din resursele existente.<\/p>\n<h3>Principalele componente Docker<\/h3>\n<p>\nDocker este compus din dou\u0103 componente principale:<\/p>\n<ul>\n<li>Docker: platform\u0103 de virtualizare open-source;<\/li>\n<li>Docker Hub: platforma noastr\u0103 ca serviciu pentru distribuirea \u0219i gestionarea containerelor Docker.<\/li>\n<\/ul>\n<p>\n<i>Not\u0103! Docker este distribuit sub licen\u021ba Apache 2.0.<\/i><\/p>\n<h3>Arhitectura Docker<\/h3>\n<p><\/p>\n<p>Docker utilizeaz\u0103 o arhitectur\u0103 client-server. Clientul Docker comunic\u0103 cu demonul Docker, care preia sarcina de a crea, rula \u0219i distribui containerele dumneavoastr\u0103. At\u00e2t clientul, c\u00e2t \u0219i serverul pot rula pe aceea\u0219i sistem; pute\u021bi conecta clientul la un demon Docker de la distan\u021b\u0103. Clientul \u0219i serverul comunic\u0103 prin socket sau prin API RESTful.<\/p>\n<p><img decoding=\"async\" alt=\"\u00cen\u021beleg\u00e2nd Docker\" src=\"\/wp-content\/uploads\/2019\/08\/eb67e625e776737163e49a41829ed102.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<\/p>\n<h4>Demon Docker<\/h4>\n<p>\nDup\u0103 cum se arat\u0103 \u00een diagram\u0103, demonul ruleaz\u0103 pe ma\u0219ina gazd\u0103. Utilizatorul nu interac\u021bioneaz\u0103 direct cu serverul, ci folose\u0219te clientul.<\/p>\n<h4>Client Docker<\/h4>\n<p>\nClientul Docker, programul Docker, este principalul interfa\u021ba c\u0103tre Docker. Acesta prime\u0219te comenzi de la utilizator \u0219i interac\u021bioneaz\u0103 cu demonul Docker.<\/p>\n<h4>\u00cen interiorul Docker-ului<\/h4>\n<p>\nPentru a \u00een\u021belege din ce este compus Docker, trebuie s\u0103 cunoa\u0219te\u021bi trei componente:<\/p>\n<ul>\n<li>imagini (images)<\/li>\n<li>registru (registries)<\/li>\n<li>containere<\/li>\n<\/ul>\n<h4>Imagini<\/h4>\n<p>\nUn imagine Docker este un \u0219ablon read-only. De exemplu, o imagine poate con\u021bine sistemul de operare Ubuntu cu Apache \u0219i aplica\u021bia acestuia. Imaginile sunt folosite pentru a crea containere. Docker permite crearea u\u0219oar\u0103 de imagini noi, actualizarea celor existente sau pute\u021bi desc\u0103rca imagini create de alte persoane. Imaginile sunt un component al construc\u021biei Docker.<\/p>\n<h4>Registru<\/h4>\n<p>\nRegistrul Docker stocheaz\u0103 imagini. Exist\u0103 registre publice \u0219i private, din care se pot desc\u0103rca sau \u00eenc\u0103rca imagini. Registrul public Docker este <noindex><a rel=\"nofollow\" href=\"http:\/\/hub.docker.com\/\">Docker Hub<\/a><\/noindex>. Acolo se afl\u0103 o colec\u021bie imens\u0103 de imagini. Dup\u0103 cum \u0219ti\u021bi, imaginile pot fi create de voi sau pute\u021bi folosi imagini create de al\u021bii. Registrele sunt un component al distribu\u021biei.<\/p>\n<h4>Containere<\/h4>\n<p>\nContainerele sunt asem\u0103n\u0103toare cu directoarele. \u00cen containere se g\u0103se\u0219te tot ce este necesar pentru func\u021bionarea aplica\u021biei. Fiecare container este creat dintr-o imagine. Containerele pot fi create, pornite, oprite, transferate sau \u0219terse. Fiecare container este izolat \u0219i reprezint\u0103 o platform\u0103 sigur\u0103 pentru aplica\u021bie. Containerele sunt un component al func\u021bion\u0103rii.<\/p>\n<h4>Cum func\u021bioneaz\u0103 Docker?<\/h4>\n<p>\nP\u00e2n\u0103 acum \u0219tim c\u0103:<\/p>\n<ul>\n<li>putem crea imagini care con\u021bin aplica\u021biile noastre;<\/li>\n<li>putem crea containere din imagini pentru a rula aplica\u021biile;<\/li>\n<li>putem distribui imagini prin Docker Hub sau alt registru de imagini.<\/li>\n<\/ul>\n<p>\nS\u0103 vedem cum se \u00eembin\u0103 aceste componente.<\/p>\n<h4>Cum func\u021bioneaz\u0103 o imagine?<\/h4>\n<p>\n\u0218tim deja c\u0103 o imagine este un \u0219ablon read-only, din care se creeaz\u0103 un container. Fiecare imagine este format\u0103 dintr-un set de niveluri. Docker folose\u0219te <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/UnionFS\">sistemul de fi\u0219iere unional<\/a><\/noindex> pentru a combina aceste niveluri \u00eentr-o singur\u0103 imagine. Sistemul de fi\u0219iere unional permite fi\u0219ierelor \u0219i directoarelor din diferite sisteme de fi\u0219iere (diferi\u021bi arbori) s\u0103 se suprapun\u0103 transparent, cre\u00e2nd un sistem de fi\u0219iere coerent.<\/p>\n<p>Unul dintre motivele pentru care Docker este u\u0219or este utilizarea acestor niveluri. C\u00e2nd modifica\u021bi o imagine, de exemplu, actualiz\u00e2nd aplica\u021bia, se creeaz\u0103 un nou nivel. Astfel, f\u0103r\u0103 a \u00eenlocui \u00eentreaga imagine sau a o reconstrui, a\u0219a cum s-ar putea s\u0103 trebuiasc\u0103 s\u0103 face\u021bi cu o ma\u0219in\u0103 virtual\u0103, doar nivelul este ad\u0103ugat sau actualizat. \u0218i nu trebuie s\u0103 distribui\u021bi \u00eentreaga nou\u0103 imagine, ci doar actualizarea, ceea ce face distribu\u021bia imaginilor mai simpl\u0103 \u0219i mai rapid\u0103.<\/p>\n<p>Fiecare imagine se bazeaz\u0103 pe o imagine de baz\u0103. De exemplu, ubuntu este imaginea de baz\u0103 Ubuntu, iar fedora este imaginea de baz\u0103 a distribu\u021biei Fedora. De asemenea, pute\u021bi folosi imagini ca baz\u0103 pentru a crea imagini noi. De exemplu, dac\u0103 ave\u021bi o imagine apache, o pute\u021bi folosi ca imagine de baz\u0103 pentru aplica\u021biile dvs. web.<\/p>\n<p><i>Not\u0103! Docker ob\u021bine de obicei imagini din registrul Docker Hub.<\/i><\/p>\n<p>Imaginile Docker pot fi create din aceste imagini de baz\u0103, pa\u0219ii pentru crearea acestor imagini \u00eei numim instruc\u021biuni. Fiecare instruc\u021biune creeaz\u0103 o nou\u0103 imagine sau un nou nivel. Instruc\u021biunile vor fi urm\u0103toarele ac\u021biuni:<\/p>\n<p><\/p>\n<ul>\n<li>lansarea unei comenzi<\/li>\n<li>ad\u0103ugarea unui fi\u0219ier sau a unui director<\/li>\n<li>crearea unei variabile de mediu<\/li>\n<li>indica\u021bia a ce s\u0103 ruleze atunci c\u00e2nd se porne\u0219te un container din aceast\u0103 imagine<\/li>\n<\/ul>\n<p>Aceste instruc\u021biuni sunt stocate \u00eentr-un fi\u0219ier <code>Dockerfile<\/code>. Docker cite\u0219te acest <code>Dockerfile<\/code>, atunci c\u00e2nd construi\u021bi imaginea, execut\u0103 aceste instruc\u021biuni \u0219i returneaz\u0103 imaginea final\u0103.<\/p>\n<h4>Cum func\u021bioneaz\u0103 registrul Docker?<\/h4>\n<p>\nRegistrul este un depozit de imagini Docker. Dup\u0103 ce a\u021bi creat o imagine, o pute\u021bi publica pe registrul public Docker Hub sau pe registrul dvs. privat.<\/p>\n<p>Cu ajutorul clientului Docker, pute\u021bi c\u0103uta imagini deja publicate \u0219i le pute\u021bi desc\u0103rca pe ma\u0219ina dvs. cu Docker pentru a crea containere.<\/p>\n<p>Docker Hub ofer\u0103 depozite publice \u0219i private de imagini. C\u0103utarea \u0219i desc\u0103rcarea imaginilor din depozitele publice sunt disponibile pentru toat\u0103 lumea. Con\u021binutul depozitelor private nu apare \u00een rezultatele c\u0103ut\u0103rii. Numai dvs. \u0219i utilizatorii dvs. pot ob\u021bine aceste imagini \u0219i crea din ele containere.<\/p>\n<h4>Cum func\u021bioneaz\u0103 un container?<\/h4>\n<p>\nUn container const\u0103 dintr-un sistem de operare, fi\u0219iere de utilizator \u0219i metadate. Dup\u0103 cum \u0219tim, fiecare container este creat dintr-o imagine. Aceast\u0103 imagine i-a spune lui Docker ce con\u021bine containerul, ce proces s\u0103 porneasc\u0103 atunci c\u00e2nd containerul este lansat \u0219i alte date de configurare. Imaginea Docker este disponibil\u0103 doar \u00een citire. C\u00e2nd Docker porne\u0219te un container, acesta creeaz\u0103 un nivel de citire\/scriere deasupra imaginii (folosind sistemul de fi\u0219iere union, a\u0219a cum a fost men\u021bionat anterior), \u00een care poate fi rulat aplica\u021bia.<\/p>\n<h4>Ce se \u00eent\u00e2mpl\u0103 c\u00e2nd se lanseaz\u0103 un container?<\/h4>\n<p>\nFie printr-un program <code>docker<\/code>, fie printr-o API RESTful, clientul Docker spune demonului Docker s\u0103 porneasc\u0103 containerul.<\/p>\n<p><code>$ sudo docker run -i -t ubuntu \/bin\/bash<br \/>\n<\/code><br \/>\nS\u0103 analiz\u0103m aceast\u0103 comand\u0103. Clientul se porne\u0219te cu comanda <code>docker<\/code>, cu op\u021biunea <code>run<\/code>, care spune c\u0103 va fi lansat un nou container. Cerin\u021bele minime pentru a lansa un container sunt urm\u0103toarele atribute:<\/p>\n<ul>\n<li>ce imagine s\u0103 folose\u0219ti pentru a crea containerul. \u00cen cazul nostru <code>ubuntu<\/code><\/li>\n<li>comanda pe care vrei s\u0103 o rulezi c\u00e2nd containerul va fi lansat. \u00cen cazul nostru <code>\/bin\/bash<\/code><\/li>\n<\/ul>\n<p>Ce se \u00eent\u00e2mpl\u0103, de fapt, \u00een spatele cortinei atunci c\u00e2nd lans\u0103m aceast\u0103 comand\u0103?<\/p>\n<p>Docker, \u00een ordine, face urm\u0103toarele:<\/p>\n<ul>\n<li><b>descarc\u0103 imaginea ubuntu:<\/b> docker verific\u0103 dac\u0103 imaginea exist\u0103 <code>ubuntu<\/code> pe ma\u0219ina local\u0103, iar dac\u0103 nu este prezent\u0103 - o descarc\u0103 de la <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/\">Docker Hub<\/a><\/noindex>. Dac\u0103 imaginea exist\u0103, o folose\u0219te pentru a crea containerul;<\/li>\n<li><b>creeaz\u0103 containerul:<\/b> dup\u0103 ce imaginea a fost ob\u021binut\u0103, docker o folose\u0219te pentru a crea containerul;<\/li>\n<li><b>ini\u021bializeaz\u0103 sistemul de fi\u0219iere \u0219i monteaz\u0103 nivelul read-only:<\/b> containerul a fost creat \u00een sistemul de fi\u0219iere \u0219i nivelul read-only a fost ad\u0103ugat imaginii;<\/li>\n<li><b>ini\u021bializeaz\u0103 re\u021beaua\/bridge:<\/b> creeaz\u0103 o interfa\u021b\u0103 de re\u021bea care permite docker-ului s\u0103 comunice cu ma\u0219ina gazd\u0103;<\/li>\n<li><b>Setarea adresei IP:<\/b> g\u0103se\u0219te \u0219i seteaz\u0103 adresa;<\/li>\n<li><b>Lanseaz\u0103 procesul specificat:<\/b> \u00ee\u0219i \u00eencepe aplica\u021bia;<\/li>\n<li><b>Proceseaz\u0103 \u0219i returneaz\u0103 ie\u0219irea aplica\u021biei tale:<\/b> se conecteaz\u0103 \u0219i \u00eenregistreaz\u0103 intrarea standard, ie\u0219irea \u0219i fluxul de erori al aplica\u021biei tale, astfel \u00eenc\u00e2t s\u0103 po\u021bi urm\u0103ri cum func\u021bioneaz\u0103 aplica\u021bia ta.<\/li>\n<\/ul>\n<p>\nAcum ai un container func\u021bional. Po\u021bi gestiona containerul t\u0103u, interac\u021bion\u00e2nd cu aplica\u021bia ta. C\u00e2nd decizi s\u0103 opre\u0219ti aplica\u021bia, \u0219terge containerul.<\/p>\n<h3>Tehnologiile utilizate<\/h3>\n<p>\nDocker este scris \u00een Go \u0219i folose\u0219te unele caracteristici ale nucleului Linux pentru a implementa func\u021bionalitatea de mai sus.<\/p>\n<h4>Namespace-urile<\/h4>\n<p>\nDocker utilizeaz\u0103 tehnologia <code>namespaces<\/code> pentru a organiza spa\u021bii de lucru izolate, pe care le numim containere. C\u00e2nd lans\u0103m un container, docker creeaz\u0103 un set de namespace-uri pentru acel container.<\/p>\n<p>Aceasta creeaz\u0103 un nivel izolat, fiecare aspect al containerului fiind rulat \u00een propriul s\u0103u namespace, f\u0103r\u0103 acces la sistemul extern.<\/p>\n<p>O list\u0103 de unele namespace-uri utilizate de docker:<\/p>\n<ul>\n<li><b>pid:<\/b> pentru izolarea procesului;<\/li>\n<li><b>net:<\/b> pentru gestionarea interfe\u021belor de re\u021bea;<\/li>\n<li><b>ipc:<\/b> pentru gestionarea resurselor IPC. (IPC: InterProccess Communication);<\/li>\n<li><b>mnt:<\/b> pentru gestionarea punctelor de montare;<\/li>\n<li><b>utc:<\/b> pentru izolarea nucleului \u0219i controlul genera\u021biei de versiuni (UTC: Unix timesharing system).<\/li>\n<\/ul>\n<h4>Control groups (grupuri de control)<\/h4>\n<p>\nDocker utilizeaz\u0103, de asemenea, tehnologia <code>cgroups<\/code> sau grupuri de control. Cheia func\u021bion\u0103rii aplica\u021biei \u00een izolare este furnizarea aplica\u021biei doar a resurselor pe care dori\u021bi s\u0103 le oferi\u021bi. Acest lucru garanteaz\u0103 c\u0103 containerele vor fi vecini buni. Grupurile de control permit \u00eemp\u0103r\u021birea resurselor hardware disponibile \u0219i, dac\u0103 este necesar, stabilirea de limite \u0219i restric\u021bii. De exemplu, pute\u021bi limita cantitatea posibil\u0103 de memorie pentru un container.<\/p>\n<h4>Sistem de Fi\u0219iere Union<\/h4>\n<p>\nSistemul de Fi\u0219iere Union sau UnionFS este un sistem de fi\u0219iere care func\u021bioneaz\u0103 prin crearea de niveluri, f\u0103c\u00e2ndu-l foarte u\u0219or \u0219i rapid. Docker folose\u0219te UnionFS pentru a crea blocuri din care se construiesc containerele. Docker poate utiliza mai multe variante de UnionFS, inclusiv: AUFS, btrfs, vfs \u0219i DeviceMapper.<\/p>\n<h4>Formate de containere<\/h4>\n<p>\nDocker combin\u0103 aceste componente \u00eentr-o \u00eembr\u0103care pe care o numim format de container. Formatul folosit \u00een mod implicit se nume\u0219te <code>libcontainer<\/code>. De asemenea, Docker sus\u021bine formatul tradi\u021bional de containere \u00een Linux prin <noindex><a rel=\"nofollow\" href=\"http:\/\/linuxcontainers.org\">LXC<\/a><\/noindex>. \u00cen viitor, Docker ar putea suporta alte formate de containere. De exemplu, integr\u00e2ndu-se cu BSD Jails sau Solaris Zones.<br \/>\n<br \/>Sursa: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/253877\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432. \u041f\u0440\u0435\u0434\u043b\u0430\u0433\u0430\u044e \u0447\u0438\u0442\u0430\u0442\u0435\u043b\u044f\u043c \u00ab\u0425\u0430\u0431\u0440\u0430\u0445\u0430\u0431\u0440\u0430\u00bb \u043f\u0435\u0440\u0435\u0432\u043e\u0434 \u0432\u0432\u043e\u0434\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0438 \u043e docker \u2014 \u00abUnderstanding docker\u00bb. \u0427\u0442\u043e \u0442\u0430\u043a\u043e\u0435 \u0434\u043e\u043a\u0435\u0440? \u0414\u043e\u043a\u0435\u0440 \u2014 \u044d\u0442\u043e \u043e\u0442\u043a\u0440\u044b\u0442\u0430\u044f \u043f\u043b\u0430\u0442\u0444\u043e\u0440\u043c\u0430 \u0434\u043b\u044f \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438, \u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0438 \u044d\u043a\u0441\u043f\u043b\u0443\u0430\u0442\u0430\u0446\u0438\u0438 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. Docker \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u0430\u043d \u0434\u043b\u044f \u0431\u043e\u043b\u0435\u0435 \u0431\u044b\u0441\u0442\u0440\u043e\u0433\u043e \u0432\u044b\u043a\u043b\u0430\u0434\u044b\u0432\u0430\u043d\u0438\u044f \u0432\u0430\u0448\u0438\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439. \u0421 \u043f\u043e\u043c\u043e\u0449\u044c\u044e docker \u0432\u044b \u043c\u043e\u0436\u0435\u0442\u0435 \u043e\u0442\u0434\u0435\u043b\u0438\u0442\u044c \u0432\u0430\u0448\u0435 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0435 \u043e\u0442 \u0432\u0430\u0448\u0435\u0439 \u0438\u043d\u0444\u0440\u0430\u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u044b \u0438 [&hellip;]<\/p>\n","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[688],"tags":[],"class_list":["post-36772","post","type-post","status-publish","format-standard","hentry","category-administrirovanie"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 5.0.2.1 - aioseo.com -->\n\t<meta name=\"description\" content=\"\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.\" \/>\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\/ro\/blog\/administrirovanie\/ponimaya-docker\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.2.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"ro_RO\" \/>\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\u041f\u043e\u043d\u0438\u043c\u0430\u044f Docker | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/ponimaya-docker\" \/>\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=\"2019-10-31T19:13:44+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T19:13:44+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\udd47\u00cen\u021beleg\u00e2nd Docker | ProHoster","description":"Folosesc Docker de c\u00e2teva luni pentru structurarea procesului de dezvoltare\/livrare a proiectelor web.","canonical_url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/ponimaya-docker","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"ro_RO","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\u041f\u043e\u043d\u0438\u043c\u0430\u044f Docker | ProHoster","og:description":"\u0423\u0436\u0435 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u043c\u0435\u0441\u044f\u0446\u0435\u0432 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e docker \u0434\u043b\u044f \u0441\u0442\u0440\u0443\u043a\u0442\u0443\u0440\u0438\u0437\u0430\u0446\u0438\u0438 \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0430 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438\/\u0434\u043e\u0441\u0442\u0430\u0432\u043a\u0438 \u0432\u0435\u0431-\u043f\u0440\u043e\u0435\u043a\u0442\u043e\u0432.","og:url":"https:\/\/prohoster.info\/ro\/blog\/administrirovanie\/ponimaya-docker","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":"2019-10-31T19:13:44+00:00","article:modified_time":"2019-10-31T19:13:44+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"36772","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":"2026-01-22 04:47:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 01:39:22","updated":"2026-01-22 04:47:19","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/36772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/comments?post=36772"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/posts\/36772\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/media?parent=36772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/categories?post=36772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/ro\/wp-json\/wp\/v2\/tags?post=36772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}