{"id":42175,"date":"2019-03-18T00:00:00","date_gmt":"2019-03-17T21:00:00","guid":{"rendered":"https:\/\/prohoster.info\/blog\/blog_prohoster\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem"},"modified":"2020-02-18T13:45:00","modified_gmt":"2020-02-18T10:45:00","slug":"evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem","status":"publish","type":"post","link":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem","title":{"rendered":"Die Evolution von Liefermethoden, oder \u00dcberlegungen zu Docker, deb, jar und anderen.","gt_translate_keys":[{"key":"rendered","format":"text"}]},"content":{"rendered":"<p><img decoding=\"async\" alt=\"Die Evolution von Liefermethoden, oder \u00dcberlegungen zu Docker, deb, jar und anderen.\" src=\"\/wp-content\/uploads\/2019\/03\/3c677d0628824497039901c0179a8749.jpg\" style=\"display:block;margin: 0 auto;\" \/><br \/>\n<br \/>\nIrgendwie beschloss ich eines Tages, einen Artikel \u00fcber die Bereitstellung in Form von Docker-Containern und deb-Paketen zu schreiben. Doch als ich anfing, brachte es mich irgendwie zur\u00fcck zu den fr\u00fchen Zeiten der ersten Personal Computer und sogar Taschenrechner. Statt trockener Vergleiche zwischen Docker und deb entstanden so Gedanken zur Evolution, die ich Ihnen zur Verf\u00fcgung stelle.<br \/>\n<noindex><a rel=\"nofollow\" name=\"habracut\"><\/a><\/noindex><br \/>\nJedes Produkt, egal was es ist, muss irgendwie zu den Produktservern gelangen, muss konfiguriert und in Betrieb genommen werden. Dieser Artikel wird sich genau mit diesem Thema befassen.<\/p>\n<p>Ich werde im historischen Kontext nachdenken: \"Was ich sehe, dar\u00fcber singe ich\". Was ich gesehen habe, als ich anfing, Code zu schreiben, und was ich jetzt beobachte, und was wir derzeit selbst nutzen und warum. Der Artikel erhebt keinen Anspruch auf eine umfassende Untersuchung, einige Punkte wurden ausgelassen. Dies ist mein pers\u00f6nlicher Blick auf das, was war und was es heute ist.<\/p>\n<p>Nun, in den guten alten Zeiten\u2026 der fr\u00fcheste Bereitstellungsweg, den ich erlebt habe, waren Kassetten von Kassettenrecordern. Ich hatte einen BK-0010.01 Computer\u2026<\/p>\n<h2>Das Zeitalter der Taschenrechner<\/h2>\n<p>\nNein, es gab einen noch fr\u00fcheren Moment, da gab es einen Taschenrechner <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%9C%D0%9A-61\">MK-61<\/a><\/noindex> und <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%9C%D0%9A-52\">MK-52<\/a><\/noindex>.<\/p>\n<p><img decoding=\"async\" alt=\"Die Evolution von Liefermethoden, oder \u00dcberlegungen zu Docker, deb, jar und anderen.\" src=\"\/wp-content\/uploads\/2019\/03\/ea68507cd83b4da3038cea7329ff1813.jpg\" style=\"display:block;margin: 0 auto;\" \/> Jedenfalls, als ich hatte <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%9C%D0%9A-61\">MK-61<\/a><\/noindex>, war die Methode, ein Programm zu \u00fcbertragen, ein gew\u00f6hnliches kariertes Blatt Papier, auf dem das Programm aufgeschrieben war, das, wenn man es starten wollte, manuell in den Taschenrechner eingegeben wurde. Willst du spielen (ja, ja, sogar auf diesem uralten Taschenrechner gab es Spiele) \u2014 setzt du dich hin und schreibst das Programm in den Taschenrechner. Nat\u00fcrlich verschwand das Programm beim Ausschalten des Taschenrechners ins Nichts. Neben den handgeschriebenen Codes auf Papier wurden Programme auch in den Zeitschriften \"Radio\" und \"Technik der Jugend\" ver\u00f6ffentlicht und in B\u00fcchern dieser Zeit abgedruckt.<\/p>\n<p>Die n\u00e4chste Modifikation war der Taschenrechner <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%AD%D0%BB%D0%B5%D0%BA%D1%82%D1%80%D0%BE%D0%BD%D0%B8%D0%BA%D0%B0_%D0%9C%D0%9A-52\">MK-52<\/a><\/noindex>, der nun eine Art von nichtfl\u00fcchtigem Datenspeicher hatte. Jetzt musste das Spiel oder Programm nicht mehr manuell eingegeben werden; durch einige magische Tastenkombinationen wurde es automatisch geladen.<\/p>\n<p>Das Volumen des gr\u00f6\u00dften Programms im Taschenrechner betrug 105 Schritte, w\u00e4hrend der Speicher im MK-52 512 Schritte betrug.<\/p>\n<p>\u00dcbrigens, falls es Fans dieser Taschenrechner gibt, die diesen Artikel lesen: W\u00e4hrend ich den Artikel schrieb, fand ich auch einen Emulator f\u00fcr den Taschenrechner f\u00fcr Android sowie Programme daf\u00fcr. Auf geht's in die Vergangenheit!<\/p>\n<ul>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/play.google.com\/store\/apps\/details?id=com.cax.pmk.ext\">MK-61 Emulator f\u00fcr Android<\/a><\/noindex><\/li>\n<li><noindex><a rel=\"nofollow\" href=\"https:\/\/xvadim.github.io\/xbasoft\/pmk\/pmk.html\">Programmverzeichnis f\u00fcr den MK-61<\/a><\/noindex><\/li>\n<\/ul>\n<p><\/p>\n<blockquote><p><b>Eine kleine Abzweigung zum MK-52<\/b> <i>(aus Wikipedia)<\/i><\/p>\n<p>Der MK-52 flog ins All mit dem Raumschiff \u201eSojus TM-7\u201c. Er sollte zur Berechnung der Lande Bahn im Falle eines Ausfalls des Bordcomputers verwendet werden.<\/p>\n<p>Der MK-52 mit dem Speichererweiterungsblock \u201eElektronika-Astro\u201c wurde seit 1988 an die Schiffe der Marine im Rahmen des navigatorischen Berechnungskomplexes geliefert. <\/p><\/blockquote>\n<h2>Die ersten Personal Computer<\/h2>\n<p><img decoding=\"async\" alt=\"Die Evolution von Liefermethoden, oder \u00dcberlegungen zu Docker, deb, jar und anderen.\" src=\"\/wp-content\/uploads\/2019\/03\/5d443c3919023854c53c83ac2265cea3.jpg\" style=\"display:block;margin: 0 auto;\" \/> Lass uns zu den Zeiten zur\u00fcckkehren <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/%D0%91%D0%9A_(%D1%81%D0%B5%D0%BC%D0%B5%D0%B9%D1%81%D1%82%D0%B2%D0%BE_%D0%BA%D0%BE%D0%BC%D0%BF%D1%8C%D1%8E%D1%82%D0%B5%D1%80%D0%BE%D0%B2)\">BK-0010<\/a><\/noindex>. Es ist klar, dass der Speicher gr\u00f6\u00dfer wurde und es schon ganz unm\u00f6glich war, den Code von einem Zettel einzugeben (auch wenn ich das anfangs tat, weil es einfach kein anderes Speichermedium gab). Hauptspeichermedium f\u00fcr die Speicherung und Lieferung von Software wurden Audiokassetten f\u00fcr Kassettenrekorder.<\/p>\n<p><br clear=\"all\"><br \/>\n<br clear=\"all\"><br \/>\n<img decoding=\"async\" alt=\"Die Evolution von Liefermethoden, oder \u00dcberlegungen zu Docker, deb, jar und anderen.\" src=\"\/wp-content\/uploads\/2019\/03\/988316eac02a95a16e15502a826f0653.jpg\" style=\"display:block;margin: 0 auto;\" \/>Die Speicherung auf Kassette war normalerweise in Form einer oder zweier Bin\u00e4rdateien, alles andere befand sich im Inneren. Die Zuverl\u00e4ssigkeit war sehr gering, sodass man 2-3 Kopien des Programms aufbewahren musste. Auch die Ladezeiten waren nicht erfreulich, und Enthusiasten experimentierten mit unterschiedlichen Frequenzkodierungen, um diese M\u00e4ngel zu \u00fcberwinden. Zu dieser Zeit besch\u00e4ftigte ich mich noch nicht professionell mit Softwareentwicklung (abgesehen von einfachen Programmen in BASIC), deshalb kann ich leider nicht im Detail erz\u00e4hlen, wie alles intern strukturiert war. Die Tatsache, dass der Computer haupts\u00e4chlich nur \u00fcber RAM verf\u00fcgte, bestimmte gr\u00f6\u00dftenteils die Einfachheit des Datenspeicherschemas.<\/p>\n<h2>Das Erscheinen zuverl\u00e4ssiger und gro\u00dfer Speichermedien<\/h2>\n<p>\nSp\u00e4ter tauchen Disketten auf, der Kopiervorgang wird einfacher, die Zuverl\u00e4ssigkeit steigt.<br \/>\nAber die Situation ver\u00e4ndert sich grundlegend, erst als ausreichend gro\u00dfe lokale Speicher in Form von HDD verf\u00fcgbar werden.<\/p>\n<p>Der Typ der Lieferung \u00e4ndert sich grundlegend: Programme-Installer erscheinen, die den Prozess der Systemkonfiguration sowie der Bereinigung nach der Deinstallation steuern, da Programme nicht einfach in den Speicher geladen werden, sondern bereits in den lokalen Speicher kopiert werden, aus dem man bei Bedarf unerw\u00fcnschte Daten auch l\u00f6schen k\u00f6nnen muss.<\/p>\n<p>Parallel dazu steigt die Komplexit\u00e4t der gelieferten Software.<br \/>\nDie Anzahl der Dateien in der Lieferung steigt von wenigen auf Hunderte und Tausende, es beginnen Konflikte zwischen verschiedenen Versionen von Bibliotheken und andere Herausforderungen, wenn verschiedene Programme dieselben Daten verwenden.<\/p>\n<p><img decoding=\"async\" alt=\"Die Evolution von Liefermethoden, oder \u00dcberlegungen zu Docker, deb, jar und anderen.\" src=\"\/wp-content\/uploads\/2019\/03\/48af8fca591a1061df45cd619854a59a.jpg\" style=\"display:block;margin: 0 auto;\" \/> In jener Zeit war mir die Existenz von Linux noch nicht bekannt, ich lebte in der Welt von MS DOS und sp\u00e4ter von Windows und schrieb in Borland Pascal und Delphi, w\u00e4hrend ich manchmal in Richtung C++ schaute. F\u00fcr die Bereitstellung von Produkten verwendeten damals viele InstallShield, <noindex><a rel=\"nofollow\" href=\"https:\/\/ru.wikipedia.org\/wiki\/InstallShield\">ru.wikipedia.org\/wiki\/InstallShield<\/a><\/noindex>, das alle gestellten Aufgaben der Bereitstellung und Konfiguration von Software sehr erfolgreich l\u00f6ste.<\/p>\n<p><br clear=\"all\"><br \/>\n<br clear=\"all\"><\/p>\n<h2>Das Internetzeitalter<\/h2>\n<p>\nAllm\u00e4hlich wird die Komplexit\u00e4t der Softwaresysteme noch komplizierter, der \u00dcbergang vom Monolithen und Desktop-Anwendungen erfolgt zu verteilten Systemen, schlanken Clients und Mikrodiensten. Jetzt muss man nicht mehr nur ein Programm konfigurieren, sondern deren Sammlung, und zwar so, dass sie alle zusammenarbeiten.<\/p>\n<p>Das Konzept \u00e4nderte sich grundlegend, das Internet kam auf, das Zeitalter der Cloud-Dienste begann. Zun\u00e4chst war es nur in der Anfangsphase in Form von Webseiten, und wirklich Dienste hatte noch niemand im Blick. Aber das war ein Wendepunkt in der Industrie sowohl in der Entwicklung als auch in der Bereitstellung von Anwendungen.<\/p>\n<p>F\u00fcr mich wurde in diesem Moment deutlich, dass ein Generationenwechsel unter den Entwicklern stattfand (oder war das nur in meiner Umgebung so?), und es entstand das Gef\u00fchl, dass all die alten, bew\u00e4hrten Methoden der Bereitstellung pl\u00f6tzlich vergessen waren und alles neu begann: die gesamte Bereitstellung wurde mit Bastelskripten durchgef\u00fchrt und stolz als \u201eContinuous Delivery\u201c bezeichnet. Tats\u00e4chlich begann eine Art chaotische Phase, in der das Alte vergessen war und nicht mehr benutzt wurde, w\u00e4hrend es einfach nichts Neues gab.<\/p>\n<p>Ich erinnere mich an Zeiten, als in unserem Unternehmen, wo ich damals arbeitete (ich m\u00f6chte es nicht nennen), anstatt eine Compilation \u00fcber Ant zu machen (Maven war damals noch nicht popul\u00e4r oder gab es gar nicht), die Leute einfach JARs in der IDE erstellten und sorglos in SVN committed haben. Folglich bestand die Bereitstellung darin, die Datei aus SVN zu holen und \u00fcber SSH auf die entsprechende Maschine zu kopieren. So einfach und grob.<\/p>\n<p>Zur gleichen Zeit wurde die Bereitstellung einfacher Webseiten in PHP auf \u00e4u\u00dferst primitive Weise durchgef\u00fchrt, indem die ge\u00e4nderte Datei einfach \u00fcber FTP auf das Zielger\u00e4t kopiert wurde. Manchmal war nicht einmal das der Fall \u2013 der Code wurde direkt auf dem produktiven Server bearbeitet, und es war besonders schick, wenn irgendwo Backups vorhanden waren.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>RPM- und DEB-Pakete<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Die Evolution von Liefermethoden, oder \u00dcberlegungen zu Docker, deb, jar und anderen.\" src=\"\/wp-content\/uploads\/2019\/03\/8590e7db6c67cad4b97654465ba5e946.jpg\" style=\"display:block;margin: 0 auto;\" \/>Andererseits gewannen mit der Entwicklung des Internets UNIX-\u00e4hnliche Systeme zunehmend an Popularit\u00e4t. Insbesondere entdeckte ich damals RedHat Linux 6, ca. 2000. Nat\u00fcrlich gab es auch dort bestimmte Mittel zur Bereitstellung von Software; laut Wikipedia erschien RPM als Hauptpaketmanager bereits 1995 in der Version RedHat Linux 2.0. Seitdem wird das System bis heute in Form von RPM-Paketen geliefert und entwickelt sich durchaus erfolgreich weiter.<\/p>\n<p>Distributionen der Debian-Familie gingen einen \u00e4hnlichen Weg und implementierten die Bereitstellung in Form von deb-Paketen, was bis heute unver\u00e4ndert bleibt.<\/p>\n<p>Paketmanager erm\u00f6glichen die Bereitstellung der Softwareprodukte selbst, konfigurieren diese w\u00e4hrend der Installation, verwalten Abh\u00e4ngigkeiten zwischen verschiedenen Paketen und f\u00fchren die Deinstallation von Produkten durch sowie das Entfernen \u00fcberfl\u00fcssiger Dateien im Deinstallationsprozess. Das hei\u00dft, gr\u00f6\u00dftenteils ist das alles, was man braucht, genau deshalb haben sie sich \u00fcber mehrere Jahrzehnte nahezu ohne Ver\u00e4nderungen gehalten.<\/p>\n<p>Cloud-L\u00f6sungen haben in Paketmanager die Installation nicht nur von physischen Tr\u00e4gern, sondern auch aus Cloud-Repositorys hinzugef\u00fcgt, aber prinzipiell hat sich am Grundsatz wenig ge\u00e4ndert.<\/p>\n<p>Es ist bemerkenswert, dass es derzeit einige Bestrebungen gibt, von deb abzur\u00fccken und auf Snap-Pakete umzusteigen, aber dazu sp\u00e4ter mehr.<\/p>\n<p>So wuchs diese neue Generation von Cloud-Entwicklern, die weder DEB noch RPM kannten, langsam heran, sammelte Erfahrungen, die Produkte wurden komplexer, und es wurden intelligenteren Bereitstellungsmethoden ben\u00f6tigt als FTP, bash-Skripte und \u00e4hnliche studentische Bastelarbeiten. <br \/>\nUnd hier tritt Docker auf, eine Art Mischung aus Virtualisierung, Ressourcenteilung und Bereitstellungsmethode. Es ist jetzt modern, jugendlich, aber wird es \u00fcberall ben\u00f6tigt? Ist es ein Allheilmittel?<\/p>\n<p>Nach meinen Beobachtungen wird Docker oft nicht als vern\u00fcnftige Wahl angeboten, sondern schlichtweg, weil es in der Gemeinschaft besprochen wird und diejenigen, die es anbieten, nur dies kennen. Auf der anderen Seite wird \u00fcber die guten alten Verpackungssysteme gr\u00f6\u00dftenteils geschwiegen \u2014 sie sind vorhanden und leisten still und unauff\u00e4llig ihre Arbeit. In dieser Situation gibt es nicht viel Auswahl \u2014 die Wahl ist offensichtlich \u2014 Docker.<\/p>\n<p>Ich werde versuchen, meine Erfahrungen zu teilen, wie bei uns die Einf\u00fchrung von Docker ablief und was dabei herausgekommen ist.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Selbstgeschriebene Skripte<\/h4>\n<p>\nUrspr\u00fcnglich gab es Bash-Skripte, die Jar-Archive auf die ben\u00f6tigten Maschinen deployten. Jenkins steuerte diesen Prozess. Das funktionierte erfolgreich, da das Jar-Archiv selbst bereits eine Sammlung ist, die Klassen, Ressourcen und sogar Konfigurationen enth\u00e4lt. Wenn man alles maximiert, ist es nicht die schwierigste Aufgabe, es mit einem Skript zu entpacken.<\/p>\n<p>Aber Skripte haben mehrere Nachteile:<\/p>\n<ul>\n<li> Skripte werden normalerweise hastig geschrieben und sind daher so primitiv, dass sie nur ein einziges, am erfolgreichsten getestetes Szenario beinhalten. Das wird durch das Interesse des Entwicklers an einer schnellen Auslieferung beg\u00fcnstigt, w\u00e4hrend ein ordentliches Skript eine betr\u00e4chtliche Menge an Ressourcen erfordert.<\/li>\n<li> Infolge des vorherigen Punktes enthalten Skripte keine Deinstallationsprozeduren.<\/li>\n<li> Es gibt kein festgelegtes Upgrade-Verfahren.<\/li>\n<li> Bei der Einf\u00fchrung eines neuen Produkts muss ein neues Skript geschrieben werden.<\/li>\n<li> Es gibt keine Unterst\u00fctzung f\u00fcr Abh\u00e4ngigkeiten.<\/li>\n<\/ul>\n<p>\nNat\u00fcrlich k\u00f6nnte man ein ausgefeiltes Skript schreiben, aber wie ich bereits erw\u00e4hnt habe, ist das eine erhebliche Entwicklungszeit, und Zeit ist bekanntlich immer knapp.<\/p>\n<p>All dies schr\u00e4nkt den Einsatz einer solchen Bereitstellungsmethode auf die einfachsten Systeme ein. Es ist an der Zeit, dies zu \u00e4ndern.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Docker<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Die Evolution von Liefermethoden, oder \u00dcberlegungen zu Docker, deb, jar und anderen.\" src=\"\/wp-content\/uploads\/2019\/03\/f9c6180a2775513ce88c5425727817d1.jpg\" style=\"display:block;margin: 0 auto;\" \/>Irgendwann kamen frischgebackene Mid-Level-Entwickler zu uns, spr\u00fchend vor Ideen und begeistert von Docker. Na gut, lassen Sie uns das angehen! Es gab zwei Versuche. Beide waren erfolglos \u2013 sagen wir, wegen gro\u00dfer Ambitionen, aber fehlender praktischer Erfahrung. H\u00e4tte man das nicht forciert und mit aller Kraft zu Ende bringen sollen? Wahrscheinlich nicht \u2013 das Team muss evolution\u00e4r auf das n\u00f6tige Niveau wachsen, bevor es in der Lage ist, die entsprechenden Werkzeuge zu nutzen. Zudem hatten wir oft Schwierigkeiten mit Docker-Images, bei denen das Netzwerk nicht richtig funktionierte (was m\u00f6glicherweise mit der Unreife von Docker selbst zusammenhing) oder es schwierig war, fremde Container zu erweitern.<\/p>\n<p>Mit welchen Unannehmlichkeiten sind wir konfrontiert worden?<\/p>\n<ul>\n<li> Netzwerkprobleme im Bridge-Modus.<\/li>\n<li> Es ist unpraktisch, die Logs im Container zu betrachten (wenn sie nicht getrennt im Dateisystem der Hostmaschine gespeichert sind).<\/li>\n<li> Gelegentlich kam es zu seltsamen H\u00e4ngern von ElasticSearch im Container, die Ursache wurde nie ermittelt, der Container ist offiziell.<\/li>\n<li> Die Nutzung der Shell im Container ist unpraktisch \u2013 alles ist stark eingeschr\u00e4nkt, die gewohnten Werkzeuge fehlen.<\/li>\n<li> Die gro\u00dfe Gr\u00f6\u00dfe der gesammelten Container ist teuer zu lagern.<\/li>\n<li> Aufgrund der gro\u00dfen Gr\u00f6\u00dfe der Container ist es schwierig, mehrere Versionen zu verwalten.<\/li>\n<li> L\u00e4ngere Aufbauzeit im Vergleich zu anderen Methoden (Skripte oder deb-Pakete).<\/li>\n<\/ul>\n<p>\nWarum l\u00e4sst sich ein Spring-Service als jar-Archiv nicht ebenso gut \u00fcber ein deb deployen? Ist Ressourcensicherung wirklich notwendig? Sollten wir auf n\u00fctzliche Werkzeuge des Betriebssystems verzichten, indem wir den Service in einen stark reduzierten Container packen?<\/p>\n<p>Wie die Erfahrung zeigt, ist das in der Realit\u00e4t nicht n\u00f6tig; mit deb-Paketen kommt man in 90 % der F\u00e4lle aus.<\/p>\n<p>Wann funktioniert der gute alte deb nicht mehr und wann war Docker tats\u00e4chlich erforderlich?<\/p>\n<p>F\u00fcr uns ging es um das Deployment von Services in Python. Viele Bibliotheken, die f\u00fcr maschinelles Lernen notwendig sind und in der Standardausstattung des Betriebssystems fehlen (und die vorhandenen sind nicht die richtigen Versionen), Hacks mit Konfigurationen und die Notwendigkeit, verschiedene Versionen f\u00fcr verschiedene Services zu haben, die auf demselben Host-System laufen, f\u00fchrten dazu, dass Docker die einzige logische Methode zur Bereitstellung dieser Mischung war. Der Aufwand f\u00fcr den Aufbau eines Docker-Containers erwies sich als geringer als die Idee, all dies in separate deb-Pakete mit Abh\u00e4ngigkeiten zu verpacken, und niemand mit vollem Verstand w\u00fcrde dies wagen.<\/p>\n<p>Ein weiterer Punkt, an dem Docker genutzt werden soll, ist das Deployment von Services nach dem Schema Blue-Green Deploy. Hier m\u00f6chten wir jedoch die Komplexit\u00e4t schrittweise erh\u00f6hen: Zuerst werden deb-Pakete erstellt, und dann wird daraus der Docker-Container gebaut.<\/p>\n<p><br clear=\"all\"><\/p>\n<h4>Snap-Pakete.<\/h4>\n<p>\n<img decoding=\"async\" alt=\"Die Evolution von Liefermethoden, oder \u00dcberlegungen zu Docker, deb, jar und anderen.\" src=\"\/wp-content\/uploads\/2019\/03\/8c9001b28757f8427c85e54bca5b4e73.jpg\" style=\"display:block;margin: 0 auto;\" \/> Kehren wir zu den Snap-Paketen zur\u00fcck. Sie wurden zum ersten Mal offiziell in Ubuntu 16.04 eingef\u00fchrt. Im Gegensatz zu den gewohnten deb- und rpm-Paketen bringen Snap-Pakete alle Abh\u00e4ngigkeiten mit. Einerseits verhindert dies Konflikte zwischen Bibliotheken, andererseits f\u00fchrt es zu gr\u00f6\u00dferen Paketgr\u00f6\u00dfen. Dar\u00fcber hinaus kann dies die Sicherheit des Systems beeinflussen: Bei der Bereitstellung von Snap-Paketen muss der Entwickler, der das Paket erstellt, alle \u00c4nderungen der enthaltenen Bibliotheken \u00fcberwachen. Insgesamt ist das nicht so eindeutig und das allgemeine Gl\u00fcck \u00fcber deren Nutzung tritt nicht ein. Dennoch ist es eine durchaus vern\u00fcnftige Alternative, wenn Docker lediglich als Mittel zum Verpacken und nicht zur Virtualisierung genutzt wird.<\/p>\n<p><br clear=\"all\"><br \/>\nInsgesamt verwenden wir derzeit eine sinnvolle Kombination aus deb-Paketen und Docker-Containern, die wir in bestimmten F\u00e4llen m\u00f6glicherweise durch Snap-Pakete ersetzen.<\/p>\n<p class=\"for_users_only_msg\">Nur registrierte Benutzer k\u00f6nnen an der Umfrage teilnehmen. <noindex><a rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/auth\/login\/\">Bitte einloggen<\/a><\/noindex>.<\/p>\n<h2 class=\"default-block__polling-title\">Welche Methode verwenden Sie f\u00fcr die Bereitstellung?<\/h2>\n<ul class=\"content-list content-list_polling\">\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Selbstgeschriebene Skripte<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Wir kopieren manuell \u00fcber FTP.<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    deb-Pakete<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    rpm-Pakete<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    snap-Pakete<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Docker-Images<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Virtuelle Maschinen-Images<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Wir klonen die gesamte HDD.<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Puppet<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    ansible<\/p>\n<\/li>\n<li class=\"content-list__item content-list__item_polling\">\n<p>                    Sonstiges<\/p>\n<\/li>\n<\/ul>\n<p>    109 Benutzer haben abgestimmt. 32 Benutzer haben sich enthalten.<\/p>\n<p>Quelle: <a content=\"nofollow\" rel=\"nofollow\" href=\"https:\/\/habr.com\/ru\/company\/srg\/blog\/444102\/\">habr.com<\/a><\/p>","protected":false,"gt_translate_keys":[{"key":"rendered","format":"html"}]},"excerpt":{"rendered":"<p>\u041a\u0430\u043a-\u0442\u043e \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442 \u044f \u0440\u0435\u0448\u0438\u043b \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u0442\u0430\u0442\u044c\u044e \u043f\u0440\u043e \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0443 \u0432 \u0432\u0438\u0434\u0435 \u043a\u043e\u043d\u0442\u0435\u0439\u043d\u0435\u0440\u043e\u0432 \u0434\u043e\u043a\u0435\u0440 \u0438 deb-\u043f\u0430\u043a\u0435\u0442\u043e\u0432, \u043d\u043e \u043a\u043e\u0433\u0434\u0430 \u043d\u0430\u0447\u0430\u043b, \u043c\u0435\u043d\u044f \u043f\u043e\u0447\u0435\u043c\u0443-\u0442\u043e \u043f\u043e\u043d\u0435\u0441\u043b\u043e \u0432 \u0434\u0430\u043b\u0435\u043a\u0438\u0435 \u0432\u0440\u0435\u043c\u0435\u043d\u0430 \u043f\u0435\u0440\u0432\u044b\u0445 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0445 \u043a\u043e\u043c\u043f\u044c\u044e\u0442\u0435\u0440\u043e\u0432 \u0438 \u0434\u0430\u0436\u0435 \u043a\u0430\u043b\u044c\u043a\u0443\u043b\u044f\u0442\u043e\u0440\u043e\u0432. \u0412 \u043e\u0431\u0449\u0435\u043c, \u0432\u043c\u0435\u0441\u0442\u043e \u0441\u0443\u0445\u0438\u0445 \u0441\u0440\u0430\u0432\u043d\u0435\u043d\u0438\u0439 \u0434\u043e\u043a\u0435\u0440\u0430 \u0438 deb \u043f\u043e\u043b\u0443\u0447\u0438\u043b\u0438\u0441\u044c \u0432\u043e\u0442 \u0442\u0430\u043a\u0438\u0435 \u0432\u043e\u0442 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043d\u0430 \u0442\u0435\u043c\u0443 \u044d\u0432\u043e\u043b\u044e\u0446\u0438\u0438, \u043a\u043e\u0438 \u0438 \u043f\u0440\u0435\u0434\u0441\u0442\u0430\u0432\u043b\u044f\u044e \u043d\u0430 \u0412\u0430\u0448 \u0441\u0443\u0434. \u041b\u044e\u0431\u043e\u0439 \u043f\u0440\u043e\u0434\u0443\u043a\u0442, [&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-42175","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=\"\u041a\u0430\u043a-\u0442\u043e \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442.\" \/>\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\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem\" \/>\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\udd47\u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043e Docker, deb, jar \u0438 \u043f\u0440\u043e\u0447\u0435\u043c | ProHoster\" \/>\n\t\t<meta property=\"og:description\" content=\"\u041a\u0430\u043a-\u0442\u043e \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem\" \/>\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-03-17T21:00:00+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2020-02-18T10:45:00+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\udd47Die Evolution der Bereitstellungsmittel oder \u00dcberlegungen zu Docker, deb, jar und anderen | ProHoster","description":"Irgendwann in einem Moment.","canonical_url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem","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\u042d\u0432\u043e\u043b\u044e\u0446\u0438\u044f \u0441\u0440\u0435\u0434\u0441\u0442\u0432 \u043f\u043e\u0441\u0442\u0430\u0432\u043a\u0438, \u0438\u043b\u0438 \u0440\u0430\u0437\u043c\u044b\u0448\u043b\u0435\u043d\u0438\u044f \u043e Docker, deb, jar \u0438 \u043f\u0440\u043e\u0447\u0435\u043c | ProHoster","og:description":"\u041a\u0430\u043a-\u0442\u043e \u0432 \u043e\u0434\u0438\u043d \u043c\u043e\u043c\u0435\u043d\u0442.","og:url":"https:\/\/prohoster.info\/de\/blog\/administrirovanie\/evolyutsiya-sredstv-postavki-ili-razmyshleniya-o-docker-deb-jar-i-prochem","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-03-17T21:00:00+00:00","article:modified_time":"2020-02-18T10:45:00+00:00","article:publisher":"https:\/\/www.facebook.com\/prohoster","article:author":"https:\/\/www.facebook.com\/prohoster"},"aioseo_meta_data":{"post_id":"42175","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 07:30:19","breadcrumb_settings":null,"limit_modified_date":false,"reviewed_by":null,"ai":null,"created":"2021-03-01 00:04:29","updated":"2026-01-22 07:30:19","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\/42175","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=42175"}],"version-history":[{"count":0,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/posts\/42175\/revisions"}],"wp:attachment":[{"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/media?parent=42175"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/categories?post=42175"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/prohoster.info\/de\/wp-json\/wp\/v2\/tags?post=42175"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}