{"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\/pl\/blog\/administrirovanie\/ponimaya-docker","title":{"rendered":"Rozumiej\u0105c Docker","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><i>Od kilku miesi\u0119cy u\u017cywam dockera do strukturyzacji procesu tworzenia i dostarczania projekt\u00f3w webowych. Proponuj\u0119 czytelnikom 'Habr Habr' t\u0142umaczenie wprowadzaj\u0105cego artyku\u0142u o dockerze \u2014 <noindex><a rel=\"nofollow\" href=\"https:\/\/docs.docker.com\/introduction\/understanding-docker\/\">\u00abZrozumienie dockera\u00bb<\/a><\/noindex>.<\/i><\/p>\n<h3>Co to jest docker?<\/h3>\n<p>\nDocker to otwarta platforma do tworzenia, dostarczania i uruchamiania aplikacji. Docker zosta\u0142 stworzony, aby przyspieszy\u0107 wdra\u017canie twoich aplikacji. Dzi\u0119ki dockerowi mo\u017cesz oddzieli\u0107 swoj\u0105 aplikacj\u0119 od infrastruktury i traktowa\u0107 infrastruktur\u0119 jako zarz\u0105dzan\u0105 aplikacj\u0119. Docker pomaga w szybszym wdra\u017caniu kodu, szybszym testowaniu, szybszym uruchamianiu aplikacji i skr\u00f3ceniu czasu pomi\u0119dzy pisaniem kodu a jego uruchomieniem. Docker osi\u0105ga to dzi\u0119ki lekkiej platformie wirtualizacji kontenerowej, wykorzystuj\u0105c procesy i narz\u0119dzia, kt\u00f3re pomagaj\u0105 zarz\u0105dza\u0107 i wdra\u017ca\u0107 twoje aplikacje.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nU podstaw docker pozwala uruchamia\u0107 prawie ka\u017cd\u0105 aplikacj\u0119, bezpiecznie izolowan\u0105 w kontenerze. Bezpieczna izolacja pozwala uruchamia\u0107 wiele kontener\u00f3w r\u00f3wnocze\u015bnie na jednym ho\u015bcie. Lekk\u0105 natura kontenera, kt\u00f3ry dzia\u0142a bez dodatkowego obci\u0105\u017cenia hypervisor, pozwala osi\u0105gn\u0105\u0107 wi\u0119cej z twojego sprz\u0119tu.<\/p>\n<p>Platforma i narz\u0119dzia wirtualizacji kontenerowej mog\u0105 by\u0107 przydatne w nast\u0119puj\u0105cych przypadkach:<\/p>\n<ul>\n<li>opakowanie twojej aplikacji (i r\u00f3wnie\u017c u\u017cywanych komponent\u00f3w) w kontenery docker;<\/li>\n<li>dystrybucja i dostarczanie tych kontener\u00f3w twoim zespo\u0142om do pracy i testowania;<\/li>\n<li>wdra\u017canie tych kontener\u00f3w w twoich \u015brodowiskach produkcyjnych, zar\u00f3wno w centrach danych, jak i w chmurze.<\/li>\n<\/ul>\n<p><\/p>\n<h3>Do czego mog\u0119 u\u017cywa\u0107 dockera?<\/h3>\n<p><\/p>\n<h4>Szybkie wdra\u017canie twoich aplikacji<\/h4>\n<p>\nDocker \u015bwietnie nadaje si\u0119 do organizacji cyklu rozwoju. Docker pozwala programistom u\u017cywa\u0107 lokalnych kontener\u00f3w z aplikacjami i us\u0142ugami. Co umo\u017cliwia p\u00f3\u017aniejsz\u0105 integracj\u0119 z procesem ci\u0105g\u0142ej integracji i wdra\u017cania.<\/p>\n<p>Na przyk\u0142ad twoi programi\u015bci pisz\u0105 kod lokalnie i dziel\u0105 si\u0119 swoim stosem deweloperskim (zestawem obraz\u00f3w dockera) z kolegami. Kiedy s\u0105 gotowi, wysy\u0142aj\u0105 kod i kontenery na stref\u0119 testow\u0105 i uruchamiaj\u0105 wszelkie niezb\u0119dne testy. Z strefy testowej mog\u0105 wys\u0142a\u0107 kod i obrazy na produkcj\u0119.<\/p>\n<h4>Prostsze wdra\u017canie i uruchamianie<\/h4>\n<p>\nPlatforma oparta na kontenerach Docker umo\u017cliwia \u0142atwe przenoszenie Twojego obci\u0105\u017cenia. Kontenery Docker mog\u0105 dzia\u0142a\u0107 na Twojej lokalnej maszynie, zar\u00f3wno na rzeczywistym sprz\u0119cie, jak i na maszynie wirtualnej w data center, a tak\u017ce w chmurze.<\/p>\n<p>Przeno\u015bno\u015b\u0107 i lekka natura Dockera umo\u017cliwiaj\u0105 \u0142atwe dynamiczne zarz\u0105dzanie Twoim obci\u0105\u017ceniem. Mo\u017cesz u\u017cywa\u0107 Dockera do uruchamiania lub zatrzymywania swojej aplikacji lub us\u0142ug. Szybko\u015b\u0107 Dockera pozwala na to niemal w czasie rzeczywistym.<\/p>\n<h4>Wysokie obci\u0105\u017cenia i wi\u0119ksze \u0142adunki.<\/h4>\n<p>\nDocker jest lekki i szybki. Oferuje stabiln\u0105, ekonomiczn\u0105 alternatyw\u0119 dla maszyn wirtualnych opartych na hipernadzorze. Jest szczeg\u00f3lnie przydatny w warunkach wysokich obci\u0105\u017ce\u0144, na przyk\u0142ad przy budowie w\u0142asnej chmury lub platforma-jako-us\u0142uga (platform-as-service). Jednak jest tak\u017ce u\u017cyteczny dla ma\u0142ych i \u015brednich aplikacji, gdy chcesz maksymalnie wykorzysta\u0107 dost\u0119pne zasoby.<\/p>\n<h3>G\u0142\u00f3wne sk\u0142adniki Dockera.<\/h3>\n<p>\nDocker sk\u0142ada si\u0119 z dw\u00f3ch g\u0142\u00f3wnych sk\u0142adnik\u00f3w:<\/p>\n<ul>\n<li>Docker: platforma wirtualizacji z otwartym kodem;<\/li>\n<li>Docker Hub: nasza platforma-jako-us\u0142uga do dystrybucji i zarz\u0105dzania kontenerami Docker.<\/li>\n<\/ul>\n<p>\n<i>Uwaga! Docker jest rozpowszechniany na licencji Apache 2.0.<\/i><\/p>\n<h3>Architektura Dockera.<\/h3>\n<p><\/p>\n<p>Docker wykorzystuje architektur\u0119 klient-serwer. Klient Docker komunikuje si\u0119 z demonem Docker, kt\u00f3ry zajmuje si\u0119 ci\u0119\u017carem tworzenia, uruchamiania i zarz\u0105dzania Twoimi kontenerami. Zar\u00f3wno klient, jak i serwer mog\u0105 dzia\u0142a\u0107 na tym samym systemie; mo\u017cesz pod\u0142\u0105czy\u0107 klienta do zdalnego demona Docker. Klient i serwer komunikuj\u0105 si\u0119 za po\u015brednictwem gniazda lub przez RESTful API.<\/p>\n<p><img decoding=\"async\" alt=\"Rozumiej\u0105c 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>\nJak pokazano na diagramie, demon uruchamia si\u0119 na ho\u015bcie. U\u017cytkownik nie wchodzi w bezpo\u015bredni\u0105 interakcj\u0119 z serwerem, ale korzysta z klienta.<\/p>\n<h4>Klient Docker.<\/h4>\n<p>\nKlient Docker, program docker \u2014 to g\u0142\u00f3wny interfejs do Dockera. Odbiera polecenia od u\u017cytkownika i komunikuje si\u0119 z demonem Docker.<\/p>\n<h4>Wewn\u0105trz Dockera.<\/h4>\n<p>\nAby zrozumie\u0107, z czego sk\u0142ada si\u0119 Docker, musisz zna\u0107 trzy sk\u0142adniki:<\/p>\n<ul>\n<li>obrazy (images)<\/li>\n<li>rejestry (registries)<\/li>\n<li>kontenery<\/li>\n<\/ul>\n<h4>Obrazy<\/h4>\n<p>\nObraz Docker to szablon tylko do odczytu. Na przyk\u0142ad obraz mo\u017ce zawiera\u0107 system operacyjny Ubuntu z Apache i aplikacj\u0105 na nim. Obrazy s\u0105 u\u017cywane do tworzenia kontener\u00f3w. Docker umo\u017cliwia \u0142atwe tworzenie nowych obraz\u00f3w, aktualizowanie istniej\u0105cych lub mo\u017cesz pobra\u0107 obrazy utworzone przez innych. Obrazy to sk\u0142adnik budowy Dockera.<\/p>\n<h4>Rejestr<\/h4>\n<p>\nRejestr Docker przechowuje obrazy. S\u0105 publiczne i prywatne rejestry, z kt\u00f3rych mo\u017cna pobra\u0107 lub za\u0142adowa\u0107 obrazy. Publiczny rejestr Docker to <noindex><a rel=\"nofollow\" href=\"http:\/\/hub.docker.com\/\">Docker Hub<\/a><\/noindex>. Gromadzi ogromn\u0105 kolekcj\u0119 obraz\u00f3w. Jak wiesz, obrazy mog\u0105 by\u0107 utworzone przez Ciebie lub mo\u017cesz korzysta\u0107 z obraz\u00f3w stworzonych przez innych. Rejestry to sk\u0142adnik dystrybucji.<\/p>\n<h4>Kontenery<\/h4>\n<p>\nKontenery s\u0105 podobne do katalog\u00f3w. W kontenerach znajduje si\u0119 wszystko, co potrzebne do dzia\u0142ania aplikacji. Ka\u017cdy kontener jest tworzony z obrazu. Kontenery mog\u0105 by\u0107 tworzone, uruchamiane, zatrzymywane, przenoszone lub usuwane. Ka\u017cdy kontener jest izolowany i stanowi bezpieczn\u0105 platform\u0119 dla aplikacji. Kontenery to sk\u0142adnik dzia\u0142ania.<\/p>\n<h4>Jak dzia\u0142a Docker?<\/h4>\n<p>\nNa razie wiemy, \u017ce:<\/p>\n<ul>\n<li>mo\u017cemy tworzy\u0107 obrazy, w kt\u00f3rych znajduj\u0105 si\u0119 nasze aplikacje;<\/li>\n<li>mo\u017cemy tworzy\u0107 kontenery z obraz\u00f3w, aby uruchamia\u0107 aplikacje;<\/li>\n<li>mo\u017cemy rozpowszechnia\u0107 obrazy przez Docker Hub lub inny rejestr obraz\u00f3w.<\/li>\n<\/ul>\n<p>\nPrzyjrzyjmy si\u0119, jak te sk\u0142adniki wsp\u00f3\u0142pracuj\u0105.<\/p>\n<h4>Jak dzia\u0142a obraz?<\/h4>\n<p>\nJu\u017c wiemy, \u017ce obraz to szablon tylko do odczytu, z kt\u00f3rego tworzony jest kontener. Ka\u017cdy obraz sk\u0142ada si\u0119 z zestawu warstw. Docker wykorzystuje <noindex><a rel=\"nofollow\" href=\"http:\/\/en.wikipedia.org\/wiki\/UnionFS\">system plik\u00f3w union<\/a><\/noindex> do \u0142\u0105czenia tych warstw w jeden obraz. System plik\u00f3w union pozwala na przezroczyste nak\u0142adanie si\u0119 plik\u00f3w i katalog\u00f3w z r\u00f3\u017cnych system\u00f3w plik\u00f3w (r\u00f3\u017cnych ga\u0142\u0119zi), tworz\u0105c sp\u00f3jn\u0105 struktur\u0119 plik\u00f3w.<\/p>\n<p>Jednym z powod\u00f3w, dla kt\u00f3rych Docker jest lekki, jest wykorzystanie takich warstw. Kiedy modyfikujesz obraz, na przyk\u0142ad aktualizujesz aplikacj\u0119, tworzona jest nowa warstwa. Dzi\u0119ki temu, bez wymiany ca\u0142ego obrazu lub jego ponownego skompilowania, jak mo\u017ce by\u0107 konieczne w przypadku maszyny wirtualnej, tylko warstwa jest dodawana lub aktualizowana. Nie musisz rozprowadza\u0107 ca\u0142ego nowego obrazu, rozprowadzasz tylko aktualizacj\u0119, co u\u0142atwia i przyspiesza dystrybucj\u0119 obraz\u00f3w.<\/p>\n<p>Podstaw\u0105 ka\u017cdego obrazu jest obraz bazowy. Na przyk\u0142ad, ubuntu, obraz bazowy Ubuntu, lub fedora, obraz bazowy dystrybucji Fedora. Mo\u017cesz r\u00f3wnie\u017c u\u017cywa\u0107 obraz\u00f3w jako podstawy do tworzenia nowych obraz\u00f3w. Na przyk\u0142ad, je\u015bli masz obraz apache, mo\u017cesz u\u017cy\u0107 go jako obrazu bazowego dla swoich aplikacji webowych.<\/p>\n<p><i>Uwaga! Docker zazwyczaj pobiera obrazy z rejestru Docker Hub.<\/i><\/p>\n<p>Obrazy Dockera mog\u0105 by\u0107 tworzone z tych bazowych obraz\u00f3w, kroki opisuj\u0105ce tworzenie tych obraz\u00f3w nazywamy instrukcjami. Ka\u017cda instrukcja tworzy nowy obraz lub warstw\u0119. Instrukcjami b\u0119d\u0105 nast\u0119puj\u0105ce dzia\u0142ania:<\/p>\n<p><\/p>\n<ul>\n<li>uruchomienie polecenia<\/li>\n<li>dodanie pliku lub katalogu<\/li>\n<li>utworzenie zmiennej \u015brodowiskowej<\/li>\n<li>okre\u015blenie, co uruchomi\u0107, gdy kontener tego obrazu jest uruchamiany<\/li>\n<\/ul>\n<p>Te instrukcje s\u0105 przechowywane w pliku <code>Dockerfile<\/code>. Docker odczytuje to <code>Dockerfile<\/code>, gdy budujesz obraz, wykonuje te instrukcje i zwraca ko\u0144cowy obraz.<\/p>\n<h4>Jak dzia\u0142a rejestr dockera?<\/h4>\n<p>\nRejestr to przechowalnia obraz\u00f3w dockera. Po utworzeniu obrazu mo\u017cesz opublikowa\u0107 go w publicznym rejestrze Docker Hub lub w swoim prywatnym rejestrze.<\/p>\n<p>Za pomoc\u0105 klienta dockera mo\u017cesz wyszukiwa\u0107 ju\u017c opublikowane obrazy i pobiera\u0107 je na swoj\u0105 maszyn\u0119 z dockerem w celu tworzenia kontener\u00f3w.<\/p>\n<p>Docker Hub oferuje publiczne i prywatne repozytoria obraz\u00f3w. Wyszukiwanie i pobieranie obraz\u00f3w z publicznych repozytori\u00f3w jest dost\u0119pne dla wszystkich. Zawarto\u015b\u0107 prywatnych repozytori\u00f3w nie pojawia si\u0119 w wynikach wyszukiwania. Tylko Ty i Twoi u\u017cytkownicy mog\u0105 uzyskiwa\u0107 dost\u0119p do tych obraz\u00f3w i tworzy\u0107 z nich kontenery.<\/p>\n<h4>Jak dzia\u0142a kontener?<\/h4>\n<p>\nKontener sk\u0142ada si\u0119 z systemu operacyjnego, plik\u00f3w u\u017cytkownika i metadanych. Jak wiemy, ka\u017cdy kontener jest tworzony z obrazu. Ten obraz informuje docker, co znajduje si\u0119 w kontenerze, jaki proces uruchomi\u0107, gdy kontener jest uruchamiany oraz inne dane konfiguracyjne. Obraz dockera jest dost\u0119pny tylko do odczytu. Gdy docker uruchamia kontener, tworzy warstw\u0119 do odczytu\/zapisu na szczycie obrazu (u\u017cywaj\u0105c systemu plik\u00f3w union, jak wspomniano wcze\u015bniej), w kt\u00f3rej mo\u017cna uruchomi\u0107 aplikacj\u0119.<\/p>\n<h4>Co si\u0119 dzieje, gdy kontener jest uruchamiany?<\/h4>\n<p>\nAlbo za pomoc\u0105 programu <code>docker<\/code>, albo za pomoc\u0105 RESTful API, klient dockera m\u00f3wi demonowi dockera, aby uruchomi\u0142 kontener.<\/p>\n<p><code>$ sudo docker run -i -t ubuntu \/bin\/bash<br \/>\n<\/code><br \/>\nPrzyjrzyjmy si\u0119 tej komendzie. Klient jest uruchamiany poleceniem <code>docker<\/code>, z opcj\u0105 <code>run<\/code>, kt\u00f3ry m\u00f3wi, \u017ce nowy kontener zostanie uruchomiony. Minimalne wymagania do uruchomienia kontenera to nast\u0119puj\u0105ce atrybuty:<\/p>\n<ul>\n<li>jaki obraz u\u017cy\u0107 do stworzenia kontenera. W naszym przypadku <code>ubuntu<\/code><\/li>\n<li>komenda, kt\u00f3r\u0105 chcesz uruchomi\u0107, gdy kontener b\u0119dzie uruchomiony. W naszym przypadku <code>\/bin\/bash<\/code><\/li>\n<\/ul>\n<p>Co tak naprawd\u0119 dzieje si\u0119 w tle, gdy uruchamiamy t\u0119 komend\u0119?<\/p>\n<p>Docker, krok po kroku, wykonuje nast\u0119puj\u0105ce czynno\u015bci:<\/p>\n<ul>\n<li><b>pobiera obraz ubuntu:<\/b> docker sprawdza, czy obraz <code>ubuntu<\/code> jest na lokalnej maszynie, a je\u015bli go nie ma - pobiera go z <noindex><a rel=\"nofollow\" href=\"https:\/\/hub.docker.com\/\">Docker Hub<\/a><\/noindex>. Je\u015bli obraz jest dost\u0119pny, wykorzystuje go do stworzenia kontenera;<\/li>\n<li><b>tworzy kontener:<\/b> gdy obraz jest ju\u017c pobrany, docker wykorzystuje go do stworzenia kontenera;<\/li>\n<li><b>inicjalizuje system plik\u00f3w i montuje poziom tylko do odczytu:<\/b> kontener jest tworzony w systemie plik\u00f3w, a poziom tylko do odczytu jest dodawany do obrazu;<\/li>\n<li><b>inicjalizuje sie\u0107\/moszt:<\/b> tworzy interfejs sieciowy, kt\u00f3ry pozwala dockerowi komunikowa\u0107 si\u0119 z maszyn\u0105 hosta;<\/li>\n<li><b>Ustala adres IP:<\/b> znajduje i ustawia adres;<\/li>\n<li><b>Uruchamia wskazany proces:<\/b> uruchamia Twoj\u0105 aplikacj\u0119;<\/li>\n<li><b>Przetwarza i generuje wyj\u015bcie Twojej aplikacji:<\/b> \u0142\u0105czy si\u0119 i rejestruje standardowy input, output i strumie\u0144 b\u0142\u0119d\u00f3w Twojej aplikacji, aby\u015b m\u00f3g\u0142 \u015bledzi\u0107, jak dzia\u0142a Twoja aplikacja.<\/li>\n<\/ul>\n<p>\nTeraz masz dzia\u0142aj\u0105cy kontener. Mo\u017cesz zarz\u0105dza\u0107 swoim kontenerem i wchodzi\u0107 w interakcje ze swoj\u0105 aplikacj\u0105. Gdy zdecydujesz si\u0119 zatrzyma\u0107 aplikacj\u0119, usu\u0144 kontener.<\/p>\n<h3>Wykorzystywane technologie<\/h3>\n<p>\nDocker jest napisany w j\u0119zyku Go i wykorzystuje niekt\u00f3re mo\u017cliwo\u015bci j\u0105dra Linux, aby zrealizowa\u0107 powy\u017csz\u0105 funkcjonalno\u015b\u0107.<\/p>\n<h4>Przestrzenie nazw (namespaces)<\/h4>\n<p>\nDocker wykorzystuje technologi\u0119 <code>namespaces<\/code> do organizacji izolowanych przestrzeni roboczych, kt\u00f3re nazywamy kontenerami. Gdy uruchamiamy kontener, docker tworzy zestaw przestrzeni nazw dla danego kontenera.<\/p>\n<p>Tworzy to poziom izolacji, w kt\u00f3rym ka\u017cdy aspekt kontenera dzia\u0142a w swoim w\u0142asnym przestrzeni nazw i nie ma dost\u0119pu do systemu zewn\u0119trznego.<\/p>\n<p>List\u0119 niekt\u00f3rych przestrzeni nazw, kt\u00f3re wykorzystuje docker:<\/p>\n<ul>\n<li><b>pid:<\/b> do izolacji procesu;<\/li>\n<li><b>net:<\/b> do zarz\u0105dzania interfejsami sieciowymi;<\/li>\n<li><b>ipc:<\/b> do zarz\u0105dzania zasobami IPC. (ICP: InterProccess Communication);<\/li>\n<li><b>mnt:<\/b> do zarz\u0105dzania punktami montowania;<\/li>\n<li><b>utc:<\/b> do izolacji j\u0105dra i kontroli wersji (UTC: Unix timesharing system).<\/li>\n<\/ul>\n<h4>Grupy kontrolne (control groups)<\/h4>\n<p>\nDocker r\u00f3wnie\u017c wykorzystuje t\u0119 technologi\u0119 <code>cgroups<\/code> lub grupy kontrolne. Klucz do pracy aplikacji w izolacji, zapewniaj\u0105c aplikacji tylko te zasoby, kt\u00f3re chcesz udost\u0119pni\u0107. Gwarantuje to, \u017ce kontenery b\u0119d\u0105 dobrymi s\u0105siadami. Grupy kontrolne pozwalaj\u0105 dzieli\u0107 dost\u0119pne zasoby sprz\u0119towe, a w razie potrzeby ustala\u0107 limity i ograniczenia. Na przyk\u0142ad, ograniczy\u0107 mo\u017cliw\u0105 ilo\u015b\u0107 pami\u0119ci dla kontenera.<\/p>\n<h4>Union File System<\/h4>\n<p>\nUnion File System lub UnionFS \u2013 to system plik\u00f3w, kt\u00f3ry dzia\u0142a przez tworzenie warstw, co czyni go bardzo lekkim i szybkim. Docker wykorzystuje UnionFS do tworzenia blok\u00f3w, z kt\u00f3rych budowany jest kontener. Docker mo\u017ce korzysta\u0107 z kilku wariant\u00f3w UnionFS, w tym: AUFS, btrfs, vfs i DeviceMapper.<\/p>\n<h4>Formaty kontener\u00f3w<\/h4>\n<p>\nDocker \u0142\u0105czy te komponenty w opakowanie, kt\u00f3re nazywamy formatem kontenera. Domy\u015blnie u\u017cywany format nazywa si\u0119 <code>libcontainer<\/code>. Docker wspiera r\u00f3wnie\u017c tradycyjny format kontener\u00f3w w systemie Linux za pomoc\u0105 <noindex><a rel=\"nofollow\" href=\"http:\/\/linuxcontainers.org\">LXC<\/a><\/noindex>. W przysz\u0142o\u015bci Docker mo\u017ce wspiera\u0107 inne formaty kontener\u00f3w, na przyk\u0142ad integruj\u0105c si\u0119 z BSD Jails lub Solaris Zones.<br \/>\n<br \/>\u0179r\u00f3d\u0142o: <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.1.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\/pl\/blog\/administrirovanie\/ponimaya-docker\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"pl_PL\" \/>\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\/pl\/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\udd47Rozumienie Dockera | ProHoster","description":"Ju\u017c od kilku miesi\u0119cy u\u017cywam docker do usystematyzowania procesu tworzenia i dostarczania projekt\u00f3w internetowych.","canonical_url":"https:\/\/prohoster.info\/pl\/blog\/administrirovanie\/ponimaya-docker","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"pl_PL","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\/pl\/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\/pl\/wp-json\/wp\/v2\/posts\/36772","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/comments?post=36772"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/posts\/36772\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/media?parent=36772"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/categories?post=36772"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/pl\/wp-json\/wp\/v2\/tags?post=36772"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}