{"id":31641,"date":"2019-10-31T21:42:19","date_gmt":"2019-10-31T18:42:19","guid":{"rendered":"https:\/\/prohoster.info\/blog\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\/"},"modified":"2019-10-31T21:42:19","modified_gmt":"2019-10-31T18:42:19","slug":"docker-eto-igrushka-ili-net-ili-vsyo-taki-da","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","title":{"rendered":"Ist Docker ein Spielzeug oder nicht? Oder doch?","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Hallo zusammen!<\/p>\n<p><\/p>\n<p>Ich w\u00fcrde sehr gerne sofort mit dem Thema beginnen, aber es ist besser, ein wenig \u00fcber meine Geschichte zu erz\u00e4hlen:<\/p>\n<p><\/p>\n<h2>Einleitung<\/h2>\n<p><\/p>\n<p>Ich bin Programmierer mit Erfahrung in der Entwicklung von Frontend-Einzelanwendungen, Scala\/Java und Node.js auf dem Server. <\/p>\n<p><\/p>\n<p>Lange Zeit (schon mindestens zwei bis drei Jahre) war ich der Meinung, dass Docker ein Geschenk des Himmels ist und insgesamt ein cooles Tool, das jeder Entwickler beherrschen sollte. Daraus folgt, dass jeder Entwickler Docker auf seinem lokalen Rechner installiert haben sollte. Und wenn Sie mein Urteil anzweifeln, schauen Sie sich einfach die Jobangebote auf derselben Plattform an. In jedem zweiten gibt es eine Erw\u00e4hnung von Docker, und wenn Sie damit vertraut sind, wird das Ihr Wettbewerbsvorteil sein \ud83d\ude09.<\/p>\n<p><\/p>\n<p>Auf meinem Weg habe ich viele Menschen getroffen, die unterschiedliche Einstellungen zu Docker und seinem \u00d6kosystem hatten. Einige sagten, dass es ein n\u00fctzliches Werkzeug ist, das Plattformunabh\u00e4ngigkeit garantiert. Andere verstanden nicht, warum sie in Containern arbeiten sollten und welchen Nutzen das hat, w\u00e4hrend es Dritte v\u00f6llig egal war \u2013 sie schrieben einfach ihren Code und gingen nach Hause \u2013 ich beneide sie \u00fcbrigens ein bisschen \ud83d\ude42.<\/p>\n<p><noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><\/p>\n<h2>Gr\u00fcnde f\u00fcr die Nutzung<\/h2>\n<p><\/p>\n<p>Warum habe ich Docker verwendet? Wahrscheinlich aus den folgenden Gr\u00fcnden:<\/p>\n<p><\/p>\n<ul>\n<li>Datenbankstart, 99 % der Anwendungen nutzen sie.<\/li>\n<li>Nginx-Start f\u00fcr die Bereitstellung des Frontends und das Proxying zum Backend.<\/li>\n<li>Ich kann meine Anwendung in ein Docker-Image verpacken, sodass meine Anwendung \u00fcberall dort funktioniert, wo Docker vorhanden ist. Das Verteilungsproblem ist somit bereits gel\u00f6st.<\/li>\n<li>Service-Discovery direkt integriert, ich kann Mikrodienste erstellen; jeder Container (verbunden mit einem gemeinsamen Netzwerk) kann leicht \u00fcber einen Alias auf einen anderen zugreifen, sehr praktisch.<\/li>\n<li>Es ist cool, einen Container zu erstellen und darin zu &#171;spielen&#187;.<\/li>\n<\/ul>\n<p><\/p>\n<h2>Was mir an Docker immer NICHT gefallen hat:<\/h2>\n<p><\/p>\n<ul>\n<li>Damit meine Anwendung funktioniert, muss Docker auf dem Server vorhanden sein. Aber warum brauche ich das, wenn meine Anwendungen bereits auf JRE oder Node.js basieren und die Umgebung daf\u00fcr bereits auf dem Server vorhanden ist?<\/li>\n<li>Wenn ich mein (privates) lokal erstelltes Image auf einem entfernten Server starten m\u00f6chte, ben\u00f6tige ich ein eigenes Docker-Repository, da irgendwo ein Registry laufen muss, und ich muss au\u00dferdem HTTPS einrichten, da die Docker-CLI nur \u00fcber HTTPS funktioniert. Oh verdammtes Chao... es gibt zwar Alternativen, wie das Bild lokal zu speichern \u00fcber <code>docker save<\/code> Und \u00fcber SCP einfach das Image hochzuladen\u2026 Aber das ist so viel Aufwand. Au\u00dferdem sieht es &#171;flickwerk&#187; aus, bis ein eigenes Repository vorhanden ist.<\/li>\n<li><code>docker-compose<\/code>. Es wird nur zum Starten von Containern ben\u00f6tigt. Und das war's. Mehr kann es nicht. <code>Docker-compose<\/code> hat eine Menge Versionen seiner Dateien, seine eigene Syntax. So deklarativ es auch sein mag, ich m\u00f6chte deren Dokumentation nicht lesen. Ich werde sie sonst nirgendwo ben\u00f6tigen.<\/li>\n<li>In der Teamarbeit schreiben die meisten Menschen Dockerfiles sehr schlecht, verstehen nicht, wie es gecached wird, f\u00fcgen alle notwendigen und unn\u00f6tigen Inhalte in das Image ein, erben von Images, die nicht in Docker Hub oder im privaten Repository vorhanden sind, und kreieren irgendwelche <code>docker-compose<\/code> Dateien mit Datenbanken und nichts ist persistent. Die Entwickler behaupten stolz, dass Docker gro\u00dfartig ist, alles lokal funktioniert und die HR-Abteilung in den Stellenanzeigen schreibt: &#171;Wir verwenden Docker und suchen einen Kandidaten mit solcher Erfahrung&#187;.<\/li>\n<li>verfolgen st\u00e4ndig die Gedanken, alles in Docker hochzufahren: Postgresql, Kafka, Redis. Schade, dass nicht alles in Containern funktioniert, nicht alles leicht konfiguriert und gestartet werden kann. Die Unterst\u00fctzung daf\u00fcr kommt von Drittanbietern und nicht von den Anbietern selbst. Und \u00fcbrigens stellt sich gleich die Frage, warum sich die Anbieter nicht um die Unterst\u00fctzung ihrer Produkte in Docker k\u00fcmmern, vielleicht wissen sie etwas?<\/li>\n<li>Es gibt immer wieder Fragen zur Persistenz der Containerdaten. Und hier \u00fcberlege ich, ob ich einfach ein Verzeichnis des Hosts einbinden oder ein Docker-Volume erstellen oder einen Data-Container erstellen soll, der nun <code>deprecated<\/code>? \u0415\u0441\u043b\u0438 \u044f \u043c\u043e\u043d\u0442\u0438\u0440\u0443\u044e \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044e \u0442\u043e \u043c\u043d\u0435 \u043d\u0443\u0436\u043d\u043e \u0443\u0431\u0435\u0434\u0438\u0442\u044c\u0441\u044f \u0447\u0442\u043e uid \u0438 gid \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0432 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u0435 \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0443\u0435\u0442 id \u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u0435\u043b\u044f \u0437\u0430\u043f\u0443\u0441\u0442\u0438\u0432\u0448\u0435\u0433\u043e \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440, \u0438\u043d\u0430\u0447\u0435 \u0444\u0430\u0439\u043b\u044b \u0441\u043e\u0437\u0434\u0430\u043d\u043d\u044b\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u043c \u0431\u0443\u0434\u0443\u0442 \u0441\u043e\u0437\u0434\u0430\u043d\u044b \u0441 \u043f\u0440\u0430\u0432\u0430\u043c\u0438 \u0432\u043b\u0430\u0434\u0435\u043b\u044c\u0446\u0430 root. \u0415\u0441\u043b\u0438 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u0443\u044e <code>Volume<\/code> die Daten einfach in irgendeinem <code>\/usr\/*<\/code> Und es wird die gleiche Geschichte mit UID und GID wie im ersten Fall geben. Wenn man eine Drittanbieterkomponente startet, muss man die Dokumentation lesen und die Antwort auf die Frage suchen: &#171;In welche Verzeichnisse schreibt die Komponente Dateien im Container?&#187;<\/li>\n<\/ul>\n<p>Ich mochte es schon immer nicht, dass man zu lange mit Docker herumspielen muss. <strong>In der Anfangsphase<\/strong>: Ich \u00fcberlegte, wie ich Container starten, von welchen Images ich ausgehen sollte, und erstellte Makefiles, die Aliase f\u00fcr lange Docker-Befehle enthielten. Ich konnte Docker-compose nicht ausstehen, weil ich kein weiteres Tool des Docker-\u00d6kosystems lernen wollte. Und <code>docker-compose up<\/code> es nervte mich, besonders wenn dort auch noch <code>build<\/code> Konstruktionen vorkamen und nicht bereits gebaute Images. Alles, was ich wirklich wollte, war, das Produkt effizient und schnell zu erstellen. Aber ich konnte die Nutzung von Docker einfach nicht vern\u00fcnftig aufschl\u00fcsseln.<\/p>\n<p><\/p>\n<h2>Bekanntschaft mit Ansible<\/h2>\n<p><\/p>\n<p>Vor kurzem (vor etwa drei Monaten) arbeitete ich mit einem DevOps-Team zusammen, dessen fast jedes Mitglied eine negative Einstellung zu Docker hatte. Aus folgenden Gr\u00fcnden:<\/p>\n<p><\/p>\n<ul>\n<li>Docker verwaltet iptables (obwohl man es in daemon.json deaktivieren kann)<\/li>\n<li>Docker ist instabil und wir werden ihn in der Produktion nicht einsetzen<\/li>\n<li>Wenn der Docker Daemon abst\u00fcrzt, fallen entsprechend alle Container mit Infrastruktur aus<\/li>\n<li>In Docker ist keine Notwendigkeit vorhanden<\/li>\n<li>Warum Docker, wenn es Ansible und virtuelle Maschinen gibt?<\/li>\n<\/ul>\n<p><\/p>\n<p>Bei der gleichen Arbeit habe ich ein weiteres Tool kennengelernt \u2013 Ansible. Fr\u00fcher hatte ich schon davon geh\u00f6rt, aber nie versucht, meine eigenen Playbooks zu schreiben. Jetzt habe ich angefangen, meine Aufgaben zu schreiben, und mein Blick hat sich endg\u00fcltig ge\u00e4ndert! Denn ich erkannte: Ansible hat Module zum Starten von Docker-Containern, zum Erstellen von Images, Netzwerken usw., und Container k\u00f6nnen nicht nur lokal, sondern auch auf entfernten Servern gestartet werden! Meine Begeisterung kannte keine Grenzen \u2013 ich habe ein vern\u00fcnftiges Tool gefunden und meine Makefile- und Docker-Compose-Dateien entsorgt, sie wurden durch YAML-Aufgaben ersetzt. Der Code wurde durch die Verwendung von Konstruktionen wie <code>loop<\/code>, <code>when<\/code>, usw. reduziert.<\/p>\n<p><\/p>\n<h2>Docker zum Starten von Drittanbieter-Komponenten wie Datenbanken<\/h2>\n<p><\/p>\n<p>K\u00fcrzlich habe ich SSH-Tunnel kennengelernt. Es stellte sich heraus, dass es sehr einfach ist, einen Port von einem Remote-Server auf einen lokalen Port &#171;durchzuleiten&#187;. Der Remote-Server kann sowohl eine Maschine in der Cloud als auch eine virtuelle Maschine sein, die in VirtualBox l\u00e4uft. Wenn ich oder mein Kollege eine Datenbank (oder eine andere Drittanbieterkomponente) ben\u00f6tigen, k\u00f6nnen wir einfach den Server mit dieser Komponente starten und ihn abschalten, wenn der Server nicht mehr ben\u00f6tigt wird. Das Durchleiten von Ports hat den gleichen Effekt wie eine Datenbank, die in einem Docker-Container l\u00e4uft.<\/p>\n<p><\/p>\n<p>Dieser Befehl leitet meinen lokalen Port an den entfernten Server mit PostgreSQL weiter:<\/p>\n<p><\/p>\n<blockquote><p>ssh -L 9000:localhost:5432 user@example.com<\/p><\/blockquote>\n<p>Die Verwendung eines Remote-Servers l\u00f6st das Problem mit der Zusammenarbeit im Team. Dieser Server kann gleichzeitig von mehreren Entwicklern genutzt werden, die sich nicht mit der Einrichtung von PostgreSQL, dem Umgang mit Docker und anderen Feinheiten auseinandersetzen m\u00fcssen. Auf dem Remote-Server kann dieselbe Datenbank in Docker installiert werden, wenn es schwierig ist, eine spezielle Version zu installieren. Alles, was die Entwickler brauchen, ist SSH-Zugriff!<\/p>\n<p><\/p>\n<p>K\u00fcrzlich las ich, dass SSH-Tunnel eine eingeschr\u00e4nkte Funktionalit\u00e4t eines normalen VPNs sind! Man kann einfach OpenVPN oder andere VPN-Implementierungen einrichten, die Infrastruktur konfigurieren und den Entwicklern zur Verf\u00fcgung stellen. Das ist doch gro\u00dfartig!<\/p>\n<p><\/p>\n<p>Gl\u00fccklicherweise bieten AWS, GoogleCloud und andere ein Jahr kostenlose Nutzung an, also nutzen Sie sie! Sie sind g\u00fcnstig, wenn man sie abschaltet, wenn sie nicht in Gebrauch sind. Ich habe immer dar\u00fcber nachgedacht, wof\u00fcr ich einen Remote-Server wie gcloud ben\u00f6tigen k\u00f6nnte, und ich glaube, ich habe es gefunden.<\/p>\n<p><\/p>\n<p>Als virtuelle Maschine auf der lokalen Maschine kann man das gleiche Alpine verwenden, das aktiv in Docker-Containern genutzt wird. Oder andere leichte Distributionen, damit die Maschine schneller hochf\u00e4hrt.<\/p>\n<p><\/p>\n<p>Fazit: Datenbanken und andere infrastrukturelle Extras k\u00f6nnen und sollten auf Remote-Servern oder in VirtualBox betrieben werden. Ich brauche Docker nicht f\u00fcr diese Zwecke.<\/p>\n<p><\/p>\n<h2>Einige Informationen zu Docker-Images und Distribution<\/h2>\n<p><\/p>\n<p>Ich habe bereits geschrieben <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/443136\/\">einen Artikel<\/a><\/noindex> dar\u00fcber, dass die Nutzung von Docker-Images keine Garantie bietet. Docker-Images sind nur dazu da, um Docker-Container zu erstellen. Wenn Sie auf ein Docker-Image angewiesen sind, sind Sie auf die Nutzung von Docker-Containern angewiesen und werden nur mit ihnen arbeiten.<\/p>\n<p><\/p>\n<p>Haben Sie schon irgendwo gesehen, dass Softwareentwickler ihre Produkte nur als Docker-Image portiert haben?<br \/>\nDas Ergebnis der meisten Produkte sind Bin\u00e4rdateien f\u00fcr eine bestimmte Plattform, die einfach in ein Docker-Image hinzugef\u00fcgt werden, das von der ben\u00f6tigten Plattform abgeleitet ist. Haben Sie sich schon mal gefragt, warum es so viele \u00e4hnliche Images auf Docker Hub gibt? Geben Sie zum Beispiel nginx ein, und Sie werden unz\u00e4hlige Images von verschiedenen Personen sehen. Diese Leute haben Nginx nicht selbst entwickelt, sie haben einfach Nginx in ihr Docker-Image hinzugef\u00fcgt und es mit ihren Konfigurationen f\u00fcr die bequeme Ausf\u00fchrung von Containern angereichert. <\/p>\n<p><\/p>\n<p>Im Allgemeinen kann man es einfach in tgz aufbewahren. Wenn jemand es in Docker starten m\u00f6chte, kann er es im Dockerfile hinzuf\u00fcgen, von der ben\u00f6tigten Umgebung erben und zus\u00e4tzliche Extras erstellen, die die Anwendung im tgz nicht ver\u00e4ndern. Derjenige, der ein Docker-Image erstellt, wird wissen, was dieses tgz ist und was er f\u00fcr die Arbeit ben\u00f6tigt. So nutze ich Docker. <noindex><a rel=\"nofollow\" href=\"https:\/\/github.com\/kondaurovDev\/dockerfile\">hier<\/a><\/noindex><\/p>\n<p><\/p>\n<p>Fazit: Ich brauche kein Docker-Registry, ich werde irgendeinen S3 oder einfach ein Dateispeicher wie Google Drive\/Dropbox verwenden.<\/p>\n<p><\/p>\n<h2>Docker in CI<\/h2>\n<p><\/p>\n<p>Alle Unternehmen, in denen ich gearbeitet habe, \u00e4hneln sich. Sie sind in der Regel produktorientiert. Das hei\u00dft, sie haben eine bestimmte Anwendung, einen Technologiestack (vielleicht ein bis drei Programmiersprachen).<\/p>\n<p><\/p>\n<p>Diese Unternehmen verwenden Docker auf ihren Servern, wo der CI-Prozess l\u00e4uft. Die Frage ist: Warum sollten Projekte in einem Docker-Container auf den eigenen Servern gebaut werden? Warum nicht einfach eine Umgebung f\u00fcr den Build vorbereiten, zum Beispiel ein Ansible-Playbook schreiben, das die ben\u00f6tigten Versionen von Node.js, PHP, JDK installiert, SSH-Schl\u00fcssel usw. auf den Server kopiert, auf dem der Build stattfindet? <\/p>\n<p><\/p>\n<p>Jetzt verstehe ich, dass das sich selbst ins Bein schie\u00dfen bedeutet, weil Docker durch seine Isolation keinen Nutzen bringt. Die Probleme mit CI in Docker, mit denen ich konfrontiert war:<\/p>\n<p><\/p>\n<ul>\n<li>Wieder wird ein Docker-Image f\u00fcr den Build ben\u00f6tigt. Man muss ein Image suchen oder eine eigene Dockerfile schreiben.<\/li>\n<li>Es gibt eine 90%ige Wahrscheinlichkeit, dass man irgendwelche SSH-Schl\u00fcssel, geheime Daten weitergeben muss, die man nicht im Docker-Image speichern m\u00f6chte.<\/li>\n<li>Der Container wird erstellt und stirbt, alle Caches gehen mit ihm verloren. Der n\u00e4chste Build muss alle Abh\u00e4ngigkeiten des Projekts neu herunterladen, und das ist langsam und ineffizient; Zeit ist Geld.<\/li>\n<\/ul>\n<p><\/p>\n<p>Entwickler bauen Projekte nicht in Docker-Containern (ich war einmal ein solcher Fan, es tut mir leid um mein fr\u00fcheres Ich xD). In Java hat man die M\u00f6glichkeit, mehrere Versionen zu haben und kann mit einem Befehl auf die ben\u00f6tigte Version wechseln. Bei Node.js ist es dasselbe, es gibt nvm.<\/p>\n<p><\/p>\n<h2>Ausgabe<\/h2>\n<p><\/p>\n<p>Ich denke, dass Docker ein sehr m\u00e4chtiges und flexibles Werkzeug ist, was auch sein Nachteil ist (klingt seltsam, oder?). Damit sind Unternehmen leicht &#171;abh\u00e4ngig&#187; von ihm, nutzen ihn dort, wo es sinnvoll ist, und wo nicht. Entwickler starten ihre Container, ihre eigene Umgebung, und das alles flie\u00dft dann sanft in CI und Produktion. Das DevOps-Team entwickelt irgendwelche Fahrr\u00e4der, um diese Container zu starten.<\/p>\n<p><\/p>\n<p>Verwenden Sie Docker nur im <strong>allerletzten<\/strong> Schritt Ihres Arbeitsprozesses, ziehen Sie es nicht zu Beginn ins Projekt. Es wird Ihre Gesch\u00e4ftsprobleme nicht l\u00f6sen. Es wird die Probleme nur auf eine ANDERE Ebene verschieben und eigene L\u00f6sungsvorschl\u00e4ge anbieten, wodurch Sie doppelte Arbeit leisten m\u00fcssen.<\/p>\n<p><\/p>\n<p><strong><em>Wenn Docker ben\u00f6tigt wird<\/em><\/strong>: bin ich zu dem Schluss gekommen, dass Docker sehr gut zur Optimierung des festgelegten Prozesses geeignet ist, aber nicht beim Aufbau der grundlegenden Funktionalit\u00e4t.<\/p>\n<p><\/p>\n<p>Wenn Sie sich dennoch entschieden haben, Docker zu verwenden, dann:<\/p>\n<p><\/p>\n<ul>\n<li>Seien Sie \u00e4u\u00dferst vorsichtig<\/li>\n<li>Dr\u00e4ngen Sie die Verwendung von Docker nicht den Entwicklern auf<\/li>\n<li>Lokalisieren Sie dessen Verwendung an einem Ort, verbreiten Sie es nicht \u00fcber alle Repositories mit Dockerfile und docker-compose.<\/li>\n<\/ul>\n<p><\/p>\n<p>PS:<\/p>\n<p><\/p>\n<ul>\n<li>Ich bin k\u00fcrzlich auf etwas gesto\u00dfen. <noindex><a rel=\"nofollow\" href=\"https:\/\/www.packer.io\/\">packer<\/a><\/noindex> Und sie sagen, er arbeitet sehr gut mit Ansible und erm\u00f6glicht die Vereinheitlichung des Prozesses zur Erstellung von Images (einschlie\u00dflich Docker-Images).<\/li>\n<li><noindex><a rel=\"nofollow\" href=\"http:\/\/www.smashcompany.com\/technology\/docker-is-a-dangerous-gamble-which-we-will-regret\">Auch \u00fcber Docker, ein interessanter Artikel.<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<p>Vielen Dank f\u00fcrs Lesen! Ich w\u00fcnsche Ihnen transparente L\u00f6sungen in Ihren Gesch\u00e4ften und produktive Arbeitstage!<\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/post\/445914\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend \u043e\u0434\u043d\u043e\u0441\u0442\u0440\u0430\u043d\u0438\u0447\u043d\u044b\u0445 \u043f\u0440\u0438\u043b\u043e\u0436\u0435\u043d\u0438\u0439, scala\/java \u0438 nodejs \u043d\u0430 \u0441\u0435\u0440\u0432\u0435\u0440\u0435. \u0414\u043e\u0432\u043e\u043b\u044c\u043d\u043e \u0434\u043e\u043b\u0433\u043e (\u0443\u0436\u0435 \u0442\u043e\u0447\u043d\u043e \u043f\u0430\u0440\u0443 \u2014 \u0442\u0440\u043e\u0439\u043a\u0443 \u043b\u0435\u0442), \u044f \u043f\u0440\u0438\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u043b\u0441\u044f \u043c\u043d\u0435\u043d\u0438\u044f, \u0447\u0442\u043e docker \u044d\u0442\u043e \u043c\u0430\u043d\u043d\u0430 \u043d\u0435\u0431\u0435\u0441\u043d\u0430\u044f \u0438 \u0432\u043e\u043e\u0431\u0449\u0435 \u043e\u0447\u0435\u043d\u044c \u043a\u0440\u0443\u0442\u043e\u0439 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442 \u0438 \u0430\u0431\u0441\u043e\u043b\u044e\u0442\u043d\u043e \u043a\u0430\u0436\u0434\u044b\u0439 [&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-31641","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=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.\" \/>\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\/de\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 5.0.1.1\" \/>\n\t\t<meta property=\"og:locale\" content=\"de_DE\" \/>\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\udd47Docker \u2014 \u044d\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u0418\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430? | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da\" \/>\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-31T18:42:19+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2019-10-31T18:42:19+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 Ist Docker ein Spielzeug oder nicht? Oder vielleicht doch?","description":"Hallo zusammen! Ich m\u00f6chte wirklich sofort mit dem Thema beginnen, aber es ist besser, wenn ich ein wenig \u00fcber meine Geschichte erz\u00e4hle: Einleitung Ich bin Programmierer mit Erfahrung in der Frontend-Entwicklung.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","robots":"max-image-preview:large","keywords":"","webmasterTools":{"miscellaneous":""},"schema":null,"og:locale":"de_DE","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\udd47Docker \u2014 \u044d\u0442\u043e \u0438\u0433\u0440\u0443\u0448\u043a\u0430 \u0438\u043b\u0438 \u043d\u0435\u0442? \u0418\u043b\u0438 \u0432\u0441\u0451-\u0442\u0430\u043a\u0438 \u0434\u0430? | ProHoster","og:description":"\u0412\u0441\u0435\u043c \u043f\u0440\u0438\u0432\u0435\u0442! \u041e\u043e\u043e\u0447\u0435\u043d\u044c \u0445\u043e\u0447\u0435\u0442\u0441\u044f \u043f\u0440\u044f\u043c \u0441\u0440\u0430\u0437\u0443 \u043f\u0440\u0438\u0441\u0442\u0443\u043f\u0438\u0442\u044c \u043a \u0442\u0435\u043c\u0435, \u043d\u043e \u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u0435\u0435 \u0431\u0443\u0434\u0435\u0442 \u043d\u0435\u043c\u043d\u043e\u0433\u043e \u0440\u0430\u0441\u0441\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0440\u043e \u043c\u043e\u044e \u0438\u0441\u0442\u043e\u0440\u0438\u044e: \u0412\u0441\u0442\u0443\u043f\u043b\u0435\u043d\u0438\u0435 \u042f \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0441\u0442 \u0441 \u043e\u043f\u044b\u0442\u043e\u043c \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0438 frontend.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/docker-eto-igrushka-ili-net-ili-vsyo-taki-da","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-31T18:42:19+00:00","article:modified_time":"2019-10-31T18:42:19+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"31641","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-21 07:08:22","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 03:13:28","updated":"2026-01-21 07:08:22","focus_keyword":null,"additional_keywords":null,"truseo_locale":null},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/31641","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/comments?post=31641"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/31641\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=31641"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=31641"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=31641"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}