{"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\/de\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","title":{"rendered":"Was ist Docker: ein kurzer \u00dcberblick \u00fcber die Geschichte und die grundlegenden Abstraktionen","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p>Am 10. August startete in Sljorm <noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/2patKQ\">ein Videokurs zu Docker<\/a><\/noindex>, in dem wir es komplett behandeln \u2013 von den grundlegenden Abstraktionen bis hin zu den Netzwerkeinstellungen. <\/p>\n<p><\/p>\n<p>In diesem Artikel sprechen wir \u00fcber die Entstehungsgeschichte von Docker und seine grundlegenden Abstraktionen: Image, CLI, Dockerfile. Die Vorlesung richtet sich an Anf\u00e4nger, daher wird sie erfahrene Benutzer wahrscheinlich nicht interessieren. Hier wird es keine blutigen Details, keinen Appendix und keine tiefgehende Analyse geben. Nur die Grundlagen.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Was ist Docker: ein kurzer \u00dcberblick \u00fcber die Geschichte und die grundlegenden Abstraktionen\" 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\">Was ist Docker<\/h2>\n<p><\/p>\n<p>Lassen Sie uns die Definition von Docker aus Wikipedia betrachten.<\/p>\n<p><\/p>\n<blockquote><p>Docker ist eine Software zur Automatisierung der Bereitstellung und Verwaltung von Anwendungen in containerisierungsf\u00e4higen Umgebungen.<\/p><\/blockquote>\n<p>Aus dieser Definition wird nichts klar. Besonders unverst\u00e4ndlich ist, was \"in containerisierungsf\u00e4higen Umgebungen\" bedeutet. Um das zu kl\u00e4ren, gehen wir in die Vergangenheit zur\u00fcck. Beginnen wir mit einer \u00c4ra, die ich als \"Monolithische \u00c4ra\" bezeichne.<\/p>\n<p><\/p>\n<h2 id=\"monolitnaya-era\">Monolithische \u00c4ra<\/h2>\n<p><\/p>\n<p>Die monolithische \u00c4ra ist der Anfang der 2000er Jahre, als alle Anwendungen monolithisch waren, mit vielen Abh\u00e4ngigkeiten. Die Entwicklung dauerte lange. Zu diesem Zeitpunkt gab es nicht so viele Server, wir kannten sie alle beim Namen und \u00fcberwachten sie. Es gibt einen interessanten Vergleich:<\/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=\"Video abspielen\" 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>Haustiere \u2014 das sind unsere treuen Begleiter. In der \u00c4ra der Monolithen behandelten wir unsere Server wie Haustiere, k\u00fcmmerten uns um sie und entfernten jeden Staub. Um die Ressourcen besser zu verwalten, setzten wir Virtualisierung ein: Wir nahmen einen Server und teilten ihn in mehrere virtuelle Maschinen auf, um so eine isolierte Umgebung zu schaffen.<\/p>\n<p><\/p>\n<h2 id=\"sistemy-virtualizacii-na-baze-gipervizora\">Hypervisor-basierte Virtualisierungssysteme<\/h2>\n<p><\/p>\n<p>\u00dcber Virtualisierungssysteme hat sicher jeder schon geh\u00f6rt: VMware, VirtualBox, Hyper-V, Qemu KVM usw. Diese bieten Anwendungsisolierung und Ressourcenmanagement, haben jedoch auch Nachteile. Um Virtualisierung durchzuf\u00fchren, ben\u00f6tigt man einen Hypervisor, was einen Ressourcen\u00fcberhead bedeutet. Zudem ist eine virtuelle Maschine oft ziemlich umfangreich \u2014 ein schweres Abbild, auf dem ein Betriebssystem, Nginx, Apache und m\u00f6glicherweise auch MySQL laufen. Dieses gro\u00dfe Abbild macht die Verwaltung virtueller Maschinen unhandlich. In der Folge kann die Arbeit mit virtuellen Maschinen langsam sein. Um dieses Problem zu l\u00f6sen, wurden Kernvirtualisierungssysteme entwickelt.<\/p>\n<p><\/p>\n<h2 id=\"sistemy-virtualizacii-na-urovne-yadra\">Kernvirtualisierungssysteme<\/h2>\n<p><\/p>\n<p>Kernvirtualisierung wird von Systemen wie OpenVZ, Systemd-nspawn und LXC unterst\u00fctzt. Ein herausragendes Beispiel daf\u00fcr ist LXC (Linux-Container). <\/p>\n<p><\/p>\n<p>LXC \u2014 ein Betriebssystem-virtualisierungssystem zur Ausf\u00fchrung mehrerer isolierter Instanzen des Linux-Betriebssystems auf einem Knoten. LXC verwendet keine virtuellen Maschinen, sondern schafft eine virtuelle Umgebung mit eigenen Prozessr\u00e4umen und Netzwerkstacks.<\/p>\n<p><\/p>\n<p>Im Grunde genommen erstellt LXC Container. Was ist der Unterschied zwischen virtuellen Maschinen und Containern?<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Was ist Docker: ein kurzer \u00dcberblick \u00fcber die Geschichte und die grundlegenden Abstraktionen\" src=\"\/wp-content\/uploads\/2020\/08\/55afdcfd700d4869c9de488033a8e314.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Container sind nicht geeignet, um Prozesse zu isolieren: In Kernvirtualisierungssystemen gibt es Schwachstellen, die es erm\u00f6glichen, aus dem Container auf den Host zu gelangen. Daher ist es besser, eine virtuelle Maschine zu verwenden, wenn Sie etwas isolieren m\u00fcssen.<\/p>\n<p><\/p>\n<p>Die Unterschiede zwischen Virtualisierung und Containerisierung k\u00f6nnen in der Abbildung gesehen werden.<br \/>\nEs gibt Hardware-Hypervisoren, Hypervisoren \u00fcber dem Betriebssystem und Container. <\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Was ist Docker: ein kurzer \u00dcberblick \u00fcber die Geschichte und die grundlegenden Abstraktionen\" src=\"\/wp-content\/uploads\/2020\/08\/a0c06e9adc1fab3b4b5e9e1b05b51d66.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Hardware-Hypervisoren sind eine gro\u00dfartige Sache, wenn Sie wirklich etwas isolieren m\u00f6chten. Denn hier besteht die M\u00f6glichkeit, auf Seitenebene und Prozessoren zu isolieren.<\/p>\n<p><\/p>\n<p>Es gibt Hypervisoren als Programme und Container, \u00fcber die wir im Folgenden sprechen werden. In Containerisierungssystemen gibt es keinen Hypervisor, sondern eine Container-Engine, die Container erstellt und verwaltet. Diese Technologie ist leichter und hat aufgrund der Arbeit mit dem Kernel weniger Overhead oder keinen \u00fcberhaupt.<\/p>\n<p><\/p>\n<blockquote>\n<h2 id=\"chto-ispolzuetsya-dlya-konteynerizacii-na-urovne-yadra\">Was auf Kernel-Ebene f\u00fcr die Containerisierung verwendet wird<\/h2>\n<p>Die wichtigsten Technologien, die es erm\u00f6glichen, einen von anderen Prozessen isolierten Container zu erstellen, sind Namespaces und Control Groups.<\/p>\n<p>Namespaces: PID, Networking, Mount und User. Es gibt noch weitere, aber zur Vereinfachung konzentrieren wir uns auf diese.<\/p>\n<p>Der PID Namespace beschr\u00e4nkt Prozesse. Wenn wir zum Beispiel einen PID Namespace erstellen und dort einen Prozess platzieren, erh\u00e4lt dieser die PID 1. Normalerweise ist in Systemen PID 1 systemd oder init. Wenn wir also einen Prozess in einen neuen Namespace verschieben, erh\u00e4lt auch dieser die PID 1.<\/p>\n<p>Der Networking Namespace erm\u00f6glicht es, das Netzwerk zu beschr\u00e4nken\/zu isolieren und darin eigene Schnittstellen zu platzieren. Mount ist eine Einschr\u00e4nkung des Dateisystems. User ist eine Einschr\u00e4nkung der Nutzer.<\/p>\n<p>Control Groups: Memory, CPU, IOPS, Network \u2013 insgesamt etwa 12 Einstellungen. Sie werden auch als Cgroups (\"C-Gruppe\") bezeichnet.<\/p>\n<p>Control Groups verwalten die Ressourcen f\u00fcr Container. Mit Control Groups k\u00f6nnen wir festlegen, dass ein Container nicht mehr Ressourcen verbrauchen darf als eine bestimmte Menge.<\/p>\n<p>Um die Containerisierung vollst\u00e4ndig zu nutzen, werden zus\u00e4tzliche Technologien verwendet: Capabilities, Copy-on-Write und andere.<\/p>\n<p>Capabilities legen fest, was ein Prozess tun darf und was nicht. Auf Kernel-Ebene handelt es sich dabei einfach um Bitmaps mit vielen Parametern. Zum Beispiel hat der Root-Benutzer vollst\u00e4ndige Berechtigungen und kann alles tun. Der Zeitserver kann die Systemzeit \u00e4ndern: Er hat die entsprechenden Capabilities f\u00fcr Time Capsule \u2013 und das war's. Mit Berechtigungen lassen sich die Einschr\u00e4nkungen f\u00fcr Prozesse flexibel festlegen und so die eigene Sicherheit erh\u00f6hen.<\/p>\n<p>Das Copy-on-Write-System erm\u00f6glicht es uns, mit Docker-Images effizienter zu arbeiten.<\/p>\n<p><em>Derzeit hat Docker Probleme mit der Kompatibilit\u00e4t zu Cgroups v2, daher werden in diesem Artikel speziell Cgroups v1 behandelt.<\/em><\/p><\/blockquote>\n<p>Kehren wir zur Geschichte zur\u00fcck. <\/p>\n<p><\/p>\n<p>Als die Virtualisierungssysteme auf Kernel-Ebene eingef\u00fchrt wurden, wurden sie schnell eingesetzt. Der Overhead des Hypervisors fiel weg, aber einige Probleme blieben bestehen:<\/p>\n<p><\/p>\n<ul>\n<li>Gro\u00dfe Images: In dasselbe OpenVZ werden das Betriebssystem, Bibliotheken und eine Menge verschiedener Software gepackt, und letztendlich wird das Image dennoch ziemlich gro\u00df.<\/li>\n<li>Es gibt keinen angemessenen Standard f\u00fcr Verpackung und Lieferung, weshalb das Abh\u00e4ngigkeitsproblem bestehen bleibt. Es gibt Situationen, in denen zwei Teile des Codes dieselbe Bibliothek verwenden, jedoch mit unterschiedlichen Versionen. Dadurch k\u00f6nnen Konflikte auftreten.<\/li>\n<\/ul>\n<p><\/p>\n<p>Um all diese Probleme zu l\u00f6sen, ist die n\u00e4chste \u00c4ra angebrochen.<\/p>\n<p><\/p>\n<h2 id=\"era-konteynerov\">Die \u00c4ra der Container<\/h2>\n<p><\/p>\n<p>Als die \u00c4ra der Container begann, \u00e4nderte sich die Philosophie im Umgang mit ihnen:<\/p>\n<p><\/p>\n<ul>\n<li>Ein Prozess \u2014 ein Container.<\/li>\n<li>Alle notwendigen Abh\u00e4ngigkeiten f\u00fcr den Prozess werden in seinen Container geliefert. Das erfordert, Monolithen in Mikroservices zu zerteilen.<\/li>\n<li>Je kleiner das Image, desto besser \u2013 weniger potenzielle Schwachstellen, schnelleres Deployment und so weiter.<\/li>\n<li>Instanzen werden ephemeral. <\/li>\n<\/ul>\n<p><\/p>\n<p>Erinnern Sie sich, ich habe von Haustieren und Vieh gesprochen? Fr\u00fcher waren Instanzen wie Haustiere, jetzt sind sie wie Vieh - cattle. Fr\u00fcher gab es ein Monolith - eine Anwendung. Jetzt sind es 100 Microservices, 100 Container. Einige Container k\u00f6nnen 2-3 Replikate haben. Es ist weniger wichtig, jeden Container zu kontrollieren. Wichtiger ist die Verf\u00fcgbarkeit des Dienstes selbst: das, was dieses Set von Containern bereitstellt. Das ver\u00e4ndert die Ans\u00e4tze im Monitoring.<\/p>\n<p><\/p>\n<p>In den Jahren 2014-2015 erlebte Docker seinen Aufschwung - die Technologie, \u00fcber die wir jetzt sprechen werden.<\/p>\n<p><\/p>\n<p>Docker hat die Philosophie ver\u00e4ndert und die Verpackung von Anwendungen standardisiert. Mit Docker k\u00f6nnen wir eine Anwendung verpacken, sie in ein Repository schicken, von dort herunterladen und bereitstellen. <\/p>\n<p><\/p>\n<p>In einem Docker-Container integrieren wir alles Notwendige, was das Problem der Abh\u00e4ngigkeiten l\u00f6st. Docker gew\u00e4hrleistet Reproduzierbarkeit. Viele von uns haben wahrscheinlich schon die Herausforderung der Nicht-Reproduzierbarkeit erlebt: alles funktioniert lokal, aber im Produktionsumfeld klappt es nicht mehr. Mit Docker geh\u00f6rt dieses Problem der Vergangenheit an. Wenn dein Docker-Container startet und das tut, was erforderlich ist, besteht eine hohe Wahrscheinlichkeit, dass er auch in der Produktion funktioniert und das Gleiche leistet.<\/p>\n<p><\/p>\n<blockquote>\n<h2 id=\"otstuplenie-pro-overhed\">Ein kurzer Exkurs zum Overhead<\/h2>\n<p>Es gibt st\u00e4ndig Diskussionen \u00fcber den Overhead. Einige sind der Meinung, dass Docker keinen zus\u00e4tzlichen Aufwand verursacht, da es den Linux-Kernel und alle notwendigen Prozesse f\u00fcr die Containerisierung nutzt. Man k\u00f6nnte sagen: 'Wenn Sie behaupten, Docker sei Overhead, dann ist das Linux-Kernel auch Overhead.'<\/p>\n<p>Auf der anderen Seite, wenn man genauer hinsieht, hat Docker tats\u00e4chlich einige Aspekte, die man mit etwas Recht als Overhead bezeichnen k\u00f6nnte.<\/p>\n<p>Das erste ist der PID-Namespace. Wenn wir einen Prozess in einen Namespace verschieben, wird ihm die PID 1 zugewiesen. Gleichzeitig hat dieser Prozess eine weitere PID, die sich im Host-Namespace, au\u00dferhalb des Containers, befindet. Zum Beispiel, wenn wir Nginx in einem Container starten, wird es zu PID 1 (Master-Prozess). Auf dem Host hat es jedoch die PID 12623. Es ist schwierig zu sagen, wie hoch dieser Overhead ist.<\/p>\n<p>Das zweite Element sind Cgroups. Nehmen wir Cgroups f\u00fcr den Arbeitsspeicher, das hei\u00dft die M\u00f6glichkeit, den Speicher eines Containers zu begrenzen. Wenn sie aktiviert sind, wird das Speicher-Accounting aktiviert: Der Kern muss verstehen, wie viele Seiten zugewiesen wurden und wie viele noch frei sind f\u00fcr diesen Container. Das k\u00f6nnte einen Overhead verursachen, aber ich habe keine genauen Studien dazu gefunden, wie sich dies auf die Leistung auswirkt. Und ich habe auch nicht bemerkt, dass eine Anwendung, die in Docker l\u00e4uft, pl\u00f6tzlich stark an Leistung verloren hat. <\/p>\n<p>Und noch eine Anmerkung zur Leistung. Einige Kernelparameter werden vom Host in den Container durchgereicht. Insbesondere betrifft dies bestimmte Netzwerkeinstellungen. Wenn Sie also etwas Hochleistungsf\u00e4higes in Docker betreiben m\u00f6chten, wie beispielsweise Anwendungen, die intensiv das Netzwerk nutzen, sollten Sie diese Parameter anpassen. Zum Beispiel etwas wie nf_conntrack. <\/p><\/blockquote>\n<p><\/p>\n<h2 id=\"o-koncepcii-docker\">\u00dcber das Konzept von Docker<\/h2>\n<p><\/p>\n<p>Docker besteht aus mehreren Komponenten: <\/p>\n<p><\/p>\n<ol>\n<li>Docker Daemon \u2014 das ist die Container-Engine; sie startet die Container. <\/li>\n<li>Docker CLI \u2014 das Tool zur Verwaltung von Docker.<\/li>\n<li>Dockerfile \u2014 eine Anleitung zum Erstellen eines Images.<\/li>\n<li>Image \u2014 das Image, aus dem der Container erstellt wird.<\/li>\n<li>Container.<\/li>\n<li>Docker-Registry \u2014 ein Speicher f\u00fcr Images.<\/li>\n<\/ol>\n<p><\/p>\n<p>Schematically looks like this:<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Was ist Docker: ein kurzer \u00dcberblick \u00fcber die Geschichte und die grundlegenden Abstraktionen\" src=\"\/wp-content\/uploads\/2020\/08\/73ccc02c14485f72cfd7c64e3074f3b9.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>Auf dem Docker-Host l\u00e4uft der Docker-Daemon, der die Container startet. Es gibt einen Client, der Befehle \u00fcbertr\u00e4gt: Image erstellen, Image herunterladen, Container starten. Der Docker-Daemon greift auf die Registry zu und f\u00fchrt diese aus. Der Docker-Client kann sowohl lokal (\u00fcber den Unix-Socket) als auch \u00fcber TCP von einem Remote-Host aus kommunizieren.<\/p>\n<p><\/p>\n<p>Lassen Sie uns jede Komponente durchgehen.<\/p>\n<p><\/p>\n<p><u>Docker-Daemon<\/u> \u2014 das ist der Server-Teil, der auf der Hostmaschine l\u00e4uft: er l\u00e4dt Images herunter und startet Container daraus, erstellt ein Netzwerk zwischen den Containern und sammelt Protokolle. Wenn wir sagen \"Erstelle ein Image\", k\u00fcmmert sich auch der Daemon darum.<\/p>\n<p><\/p>\n<p><u>Docker CLI<\/u> \u2014 der Client-Teil von Docker, ein Konsolenwerkzeug zur Interaktion mit dem Daemon. Ich m\u00f6chte betonen, dass es nicht nur lokal, sondern auch \u00fcber das Netzwerk arbeiten kann. <\/p>\n<p><\/p>\n<p><strong>Grundlegende Befehle:<\/strong><\/p>\n<p><\/p>\n<p>docker ps \u2014 zeigt die derzeit auf dem Docker-Host laufenden Container an.<br \/>\ndocker images \u2014 zeigt die lokal heruntergeladenen Images an.<br \/>\ndocker search  \u2014 sucht ein Image im Registry.<br \/>\ndocker pull  \u2014 l\u00e4dt ein Image aus der Registry auf die Maschine herunter.<br \/>\ndocker build &lt;&gt; \u2014 erstellt ein Image.<br \/>\ndocker run  \u2014 startet einen Container.<br \/>\ndocker rm  \u2014 entfernt einen Container.<br \/>\ndocker logs  \u2014 zeigt die Protokolle des Containers an.<br \/>\ndocker start\/stop\/restart  \u2014 verwaltet den Container.\n<\/p>\n<p>Wenn Sie diese Befehle beherrschen und sie sicher anwenden k\u00f6nnen, dann betrachten Sie sich als zu 70% im Docker auf Anwender-Ebene vertraut.<\/p>\n<p><\/p>\n<p><u>Dockerfile<\/u> \u2014 Anleitung zum Erstellen eines Images. Fast jeder Befehl in der Anleitung ist eine neue Schicht. Lassen Sie uns das anhand eines Beispiels betrachten.<\/p>\n<p><\/p>\n<p><img decoding=\"async\" alt=\"Was ist Docker: ein kurzer \u00dcberblick \u00fcber die Geschichte und die grundlegenden Abstraktionen\" src=\"\/wp-content\/uploads\/2020\/08\/4d61b58d0d0d8b2e4ddbbfe573f34f7e.png\" style=\"display:block;margin: 0 auto;\" \/><\/p>\n<p><\/p>\n<p>So sieht ein Dockerfile aus: links die Befehle, rechts die Argumente. Jedes Kommando, das hier steht (und \u00fcberhaupt in einem Dockerfile geschrieben wird), erzeugt eine neue Schicht im Image. <\/p>\n<p><\/p>\n<p>\u0414\u0430\u0436\u0435 \u0433\u043b\u044f\u0434\u044f \u043d\u0430 \u043b\u0435\u0432\u0443\u044e \u0447\u0430\u0441\u0442\u044c, \u043c\u043e\u0436\u043d\u043e \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e \u043f\u043e\u043d\u044f\u0442\u044c, \u0447\u0442\u043e \u043f\u0440\u043e\u0438\u0441\u0445\u043e\u0434\u0438\u0442. \u041c\u044b \u0433\u043e\u0432\u043e\u0440\u0438\u043c: \u00ab\u0441\u043e\u0437\u0434\u0430\u0439 \u043d\u0430\u043c \u043f\u0430\u043f\u043a\u0443\u00bb \u2014 \u044d\u0442\u043e \u043e\u0434\u0438\u043d \u0441\u043b\u043e\u0439. \u00ab\u0421\u0434\u0435\u043b\u0430\u0439 \u043f\u0430\u043f\u043a\u0443 \u0440\u0430\u0431\u043e\u0447\u0435\u0439\u00bb \u2014 \u044d\u0442\u043e \u0435\u0449\u0451 \u043e\u0434\u0438\u043d \u0441\u043b\u043e\u0439, \u0438 \u0442\u0430\u043a \u0434\u0430\u043b\u0435\u0435. \u0421\u043b\u043e\u0451\u043d\u044b\u0439 \u043f\u0438\u0440\u043e\u0433 \u0443\u043f\u0440\u043e\u0449\u0430\u0435\u0442 \u0436\u0438\u0437\u043d\u044c. \u0415\u0441\u043b\u0438 \u044f \u0441\u043e\u0437\u0434\u0430\u043c \u0435\u0449\u0451 \u043e\u0434\u0438\u043d Dockerfile \u0438 \u0432 \u043f\u043e\u0441\u043b\u0435\u0434\u043d\u0435\u0439 \u0441\u0442\u0440\u043e\u0447\u043a\u0435 \u0447\u0442\u043e-\u0442\u043e \u0438\u0437\u043c\u0435\u043d\u044e \u2014 \u0437\u0430\u043f\u0443\u0449\u0443 \u043d\u0435 &quot;python&quot; &quot;main.py&quot;, \u0430 \u0447\u0442\u043e-\u043d\u0438\u0431\u0443\u0434\u044c \u0434\u0440\u0443\u0433\u043e\u0435, \u0438\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u044e \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u0438\u0437 \u0434\u0440\u0443\u0433\u043e\u0433\u043e \u0444\u0430\u0439\u043b\u0430 \u2014 \u0442\u043e \u043f\u0440\u0435\u0434\u044b\u0434\u0443\u0449\u0438\u0435 \u0441\u043b\u043e\u0438 \u0431\u0443\u0434\u0443\u0442 \u043f\u0435\u0440\u0435\u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043d\u044b, \u043a\u0430\u043a \u043a\u0435\u0448.<\/p>\n<p><\/p>\n<p><u>Bild<\/u> \u2013 das ist die Verpackung des Containers, aus dem Images Container gestartet werden. Wenn man Docker aus der Perspektive eines Paketmanagers betrachtet (als w\u00fcrden wir mit deb- oder rpm-Paketen arbeiten), dann ist das Image im Grunde genommen ein rpm-Paket. \u00dcber yum install k\u00f6nnen wir Anwendungen installieren, sie deinstallieren, im Repository suchen und herunterladen. Hier ist es \u00e4hnlich: Aus dem Image werden Container gestartet, sie werden im Docker-Registry gespeichert (analog zu yum im Repository), und jedes Image hat einen SHA-256-Hash, einen Namen und ein Tag.<\/p>\n<p><\/p>\n<p>Images werden gem\u00e4\u00df der Anleitung aus dem Dockerfile erstellt. Jede Anweisung im Dockerfile erzeugt eine neue Schicht. Schichten k\u00f6nnen wiederverwendet werden.<\/p>\n<p><\/p>\n<p><u>Docker-Registry<\/u> \u2013 ist ein Repository f\u00fcr Docker-Images. \u00c4hnlich wie bei Betriebssystemen hat Docker ein \u00f6ffentliches Standard-Repository \u2013 dockerhub. Es ist jedoch auch m\u00f6glich, ein eigenes Repository, eine eigene Docker-Registry, zu erstellen. <\/p>\n<p><\/p>\n<p><u>Container<\/u> \u2013 ist das, was aus einem Image gestartet wird. Nach der Anleitung im Dockerfile haben wir das Image erstellt, und dann starten wir einen Container aus diesem Image. Dieser Container ist von anderen Containern isoliert und sollte alles Notwendige f\u00fcr den Betrieb der Anwendung enthalten. Hierbei gilt: Ein Container \u2013 ein Prozess. Es kommt vor, dass zwei Prozesse notwendig sind, aber das widerspricht ein wenig der Docker-Philosophie.<\/p>\n<p><\/p>\n<p>Die Anforderung \u00bbein Container \u2013 ein Prozess\u00ab steht im Zusammenhang mit dem PID-Namespace. Wenn ein Prozess mit PID 1 im Namespace gestartet wird und er pl\u00f6tzlich stirbt, stirbt auch der gesamte Container. Wenn jedoch zwei Prozesse dort laufen: einer bleibt am Leben, der andere stirbt, bleibt der Container trotzdem am Leben. Dies geh\u00f6rt zum Thema Best Practices, \u00fcber die wir in anderen Materialien sprechen werden.<\/p>\n<p><\/p>\n<p>Um die Besonderheiten und das vollst\u00e4ndige Programm des Kurses n\u00e4her zu erkunden, klicken Sie bitte auf den Link:<noindex><a rel=\"nofollow\" href=\"http:\/\/to.slurm.io\/2patKQ\">Videokurs zu Docker<\/a><\/noindex>\u00bb. <\/p>\n<p><\/p>\n<p><em>Autor: Marcel Ibryaev, zertifizierter Kubernetes-Administrator, praktizierender Ingenieur bei Southbridge, Redner und Kursentwickler bei Sl\u00fcrm.<\/em><\/p>\n<p>Quelle: <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 4.9.10 - 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. \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.\" \/>\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\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.10\" \/>\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\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. \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.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/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\udd47Was ist Docker: Ein kurzer \u00dcberblick \u00fcber die Geschichte und die grundlegenden Abstraktionen | ProHoster","description":"Am 10. August startete bei Sl\u00fcrm ein Videokurs zu Docker, in dem wir es umfassend behandeln \u2013 von den grundlegenden Abstraktionen bis zu den Netzwerkeinstellungen. In diesem Artikel sprechen wir \u00fcber die Entstehungsgeschichte von Docker und seine wichtigsten Abstraktionen: Image, Cli, Dockerfile. Die Vorlesung richtet sich an Anf\u00e4nger und d\u00fcrfte erfahrene Nutzer daher wenig interessieren. Hier wird es keine Blutvergie\u00dfung, keinen Blinddarm und kein tiefes Eintauchen geben.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/chto-takoe-docker-kratkij-ekskurs-v-istoriyu-i-osnovnye-abstrakczii","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\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. \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.","og:url":"https:\/\/prohoster.info\/de\/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"},"gt_translate_keys":[{"key":"link","format":"url"}],"_links":{"self":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/91905","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=91905"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/91905\/revisions"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media\/91906"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=91905"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=91905"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=91905"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}