‫Jetzt fragen Sie sich vielleicht immer noch, selbst nachdem Sie einige der wichtigsten Funktionen von Docker kennengelernt haben.
‫Warum muss Docker existieren?
‫Offensichtlich paketieren wir seit Jahrzehnten Software, zusammen mit unzähligen anderen Paketmanagern, die Software auf Servern
‫bereitstellen.
‫Also lass uns darüber reden.
‫Dieses Video konzentriert sich auf drei Dinge, warum Docker und warum jetzt?
‫Und zu der Zeit, als es geschaffen wurde, gab es Reibungen.
‫Es gab Dinge, die uns im Wege standen, die nächste Stufe der Geschwindigkeit und Benutzerfreundlichkeit des Software-Lebenszyklus zu erreichen, insbesondere in Bezug auf das
‫Packen, Verteilen und Ausführen der gesamten von uns erstellten Software.
‫Und ich mag Dreierlisten, denke ich.
‫Also diese Hauptliste von isolierten Umgebungen und Geschwindigkeit.
‫Über diese drei Bereiche möchte ich als die drei Hauptgründe sprechen.
‫Ich habe das Gefühl, dass die Container selbst existieren mussten und warum sie heute so beliebt sind.
‫Zunächst einmal das Problem der Isolation.
‫Und wenn wir zu den Anfängen meiner Karriere in den Neunzigern zurückgehen, können wir anfangen, darüber zu
‫sprechen, was Server früher waren, bevor wir Container hatten.
‫Wenn wir noch weiter zurückgehen als nur 2013, bevor Docker erstellt wurde, und wir über die frühen 2000er Jahre in
‫den neunziger Jahren sprechen, als wir von Mainframe auf PC umgestiegen sind, könnte so ein typischer Administrator aussehen.
‫Ich hatte ein paar Server pro Firma.
‫Wissen Sie, wir wären nicht wirklich in der Lage, 100 Server pro Person zu verwalten.
‫Das war wieder wie im Jahr 2000.
‫Und so hätten wir diese sehr teuren großen Server, die selten alle ihre Ressourcen mit einer einzigen
‫App verbrauchen.
‫Dann würden Sie also mit all diesen Apps enden, die einfach alle auf demselben Server zusammengeschustert sind.
‫Und der Server wurde spröde.
‫Es wurde schwierig zu verwalten, weil Sie möglicherweise eine Sache für eine App ändern mussten und dann eine andere App eine
‫andere Sache benötigte.
‫Und dann müssten Sie ihre verschiedenen Python-Versionen oder Ihre verschiedenen Apache-Versionen auf verschiedenen Servern
‫verwalten, nur um alles gleichzeitig auszugleichen, Sie wollten mehr und mehr Zeug auf jedem Server
‫platzieren.
‫Aber nichts war isoliert, also teilten sich alle diese Apps dasselbe Dateisystem.
‫Sie könnten normalerweise nicht mehrere Versionen dieser App ohne viel kompliziertes Hacken sein.
‫Und das war ein großes Problem.
‫Dann kamen VMs.
‫Als VMs wirklich populär wurden, sogar vor der Cloud, konnten wir alle unsere Anwendungen abstrahieren und
‫damit beginnen, weniger Anwendungen auf kleineren VMs zu platzieren, die alle auf demselben großen Host geschrieben wurden.
‫Es könnte also so aussehen und wir könnten mit Chef oder Puppet beginnen, um all
‫diese wachsende Anzahl von Servern zu verwalten.
‫Tatsächlich hatten wir Anfang 20 vor der Gründung von Dockers so viele Server, dass es sehr
‫schwierig wurde, sie alle gleichzeitig zu verwalten.
‫Sie waren ein einzelner Administrator, der vielleicht versucht hat, Dutzende, wenn nicht Hunderte von Servern zu verwalten, selbst wenn
‫die Cloud uns dabei hilft, Maschinen schneller hochzufahren und sie schneller herunterzufahren.
‫Es war viel.
‫Es war so viel zu bewältigen, dass es vielen von uns einfach zu viel wurde.
‫Und die Cloud, denke ich, hat es besser, aber auch schlechter gemacht, weil es so viel einfacher war, so viele
‫mehr zu drehen.
‫Wie kann Docker dabei helfen?
‫Wie kann es uns helfen, die Menge der zu verwaltenden Infrastruktur zu reduzieren und gleichzeitig die Isolierung unserer Workloads sicherzustellen, damit
‫die Dinge nicht spröde oder schwer zu verwalten werden?
‫Nun, wenn dies unsere Einrichtung vor 20 Jahren gewesen wäre, anstatt all diese VMs mit unnötig vielen Betriebssystemen
‫zu verteilen.
‫Was Container tun, ist, dass sie uns die Isolierung wie eine VM geben.
‫Es ist nicht ganz dasselbe, aber wir werden vorerst nur argumentieren, dass es sich um eine Isolationsschicht handelt, auf
‫der sie ihre eigene IP-Adresse, ihr eigenes Dateisystem und ihren eigenen Prozessraum erhalten.
‫Und so scheint es fast eine vollständige VM zu sein, aber Sie brauchen nicht all die verschiedenen Betriebssysteme, damit
‫wir unser Betriebssystem reduzieren und unsere Anzahl physischer Hosts zählen können.
‫Sie müssen keine VMs mehr als Isolationsschicht verwenden, und es könnte so aussehen.
‫Anstatt S-H zu verwenden, würden Sie einen Docker verwenden.
‫Seelye Oder wenn Sie zu Kubernetes wechseln, könnten Sie das Kubernetes-Siegel AI verwenden und Ihre Anwendungen sind
‫alle in ihren eigenen Containern isoliert.
‫Dies bietet Ihnen viele Vorteile, einschließlich der konfliktfreien Ausführung mehrerer Versionen derselben App
‫auf demselben System.
‫Als nächstes das Problem der Umgebungen.
‫Und offensichtlich haben wir Tonnen von Betriebssystemen entwickelt, über die ich gesprochen habe, aber die Anzahl der verschiedenen Arten
‫von Umgebungen hat auch zugenommen.
‫Haben Sie jemals von Arbeiten an meiner Maschine gehört?
‫Es wurde als Witz von Jeff Atwood, einem der Gründer von StackOverflow, und einem berühmten
‫Blog-Beitrag von damals berühmt.
‫Aber das funktioniert auf meiner Maschine Idee war ein wenig bissig, aber der Witz war, dass es oft die
‫Aufgabe des Entwicklers ist, sicherzustellen, dass die Anwendung richtig funktioniert.
‫Sie verfügen jedoch nicht über alle Umgebungen, die für die Ausführung dieser App erforderlich sind.
‫Also führen sie es einfach auf ihrer Maschine aus, testen sie auf ihrer Maschine, und wenn es
‫woanders nicht funktioniert, sagen sie, das funktioniert auf meiner Maschine.
‫Es ist wirklich eine Herausforderung, wenn wir all diese verschiedenen Betriebssysteme haben und Docker diese Matrix aus der Hölle
‫geprägt hat, was im Wesentlichen bedeutet, dass Sie für jeden Teil Ihrer App, der über mir ist,
‫und dann für jede Art von Umgebung hier drüben auf dieser Seite eine haben andere Konfiguration.
‫Möglicherweise müssen Sie die Abhängigkeiten anders installieren.
‫Vielleicht sind die Abhängigkeiten etwas anders, weil das eine eine andere Version im anderen hat.
‫Sie haben all diese unterschiedlichen Arten von Umgebungen und mussten wahrscheinlich Dokumentation darüber lesen oder schreiben, wie die App,
‫die der Entwickler auf dem Mac verwendet, unter Windows anders installiert werden muss, was wiederum auf einem
‫Linux-Server anders installiert werden muss und weiter und weiter.
‫Nun wurde das Container-Image und der Container selbst zum Fundament.
‫Geistig, abstrakt oder ein Vertrag zwischen dem Ort, an dem es betrieben wird, und dem, was darin betrieben wird, ähnlich wie physische Container
‫in der realen Welt, die es uns ermöglichen, Waren von vor fast hundert Jahren in die ganze
‫Welt zu versenden.
‫Das Ziel dort war, dass die Leute, die die physischen Container liefern, nicht wissen mussten, was sich darin
‫befand, und die Leute, die ihre Sachen in den Container packten, mussten nicht wissen oder sich darum kümmern, wie der Container
‫physisch an seinen Bestimmungsort gelangte.
‫Das war eine Abstraktion von jetzt epischen Ausmaßen von Millionen von Containern, die auf der ganzen Welt verschifft wurden.
‫Und so ziemlich alles in Ihrem Haus war wahrscheinlich zu Lebzeiten in einem Container.
‫Das Gleiche gilt jetzt für Bilder in Docker-Containern.
‫Sie sind ein konsistentes Standardformat, das jetzt als OCI-Standards bekannt ist.
‫Diese stellen sicher, dass überall dort, wo Sie den Container ausführen, er auf die gleiche konsistente Weise mit denselben genauen Abhängigkeiten ausgeführt
‫wird, mit denen er erstellt wurde.
‫Als nächstes das Problem der Geschwindigkeit.
‫Nun, ich meine hier nicht unbedingt die Geschwindigkeit der CPUs oder die Geschwindigkeit des Speichers.
‫Diese Dinge werden mit der Zeit natürlich schneller.
‫Aber ich spreche wirklich von der Geschwindigkeit des Geschäfts.
‫Und wenn wir über mich sprechen. T. und Software und den Software-Lebenszyklus,
‫wir sprechen wirklich über die Fähigkeit für Unternehmen und Organisationen, ihre Ideen umzusetzen und ihre Software-Ideen so schnell
‫wie möglich an den Kunden zu liefern.
‫Und das ist Teil des Softwarelebenszyklus.
‫Nun, es stellt sich heraus, dass die Industrie seit den Anfängen der Computertechnik Infrastruktur und Architektur
‫verändert hat.
‫Genau aus diesem Grund habe ich diese nette kleine Grafik gemacht, weil man ganz oben anfangen kann.
‫Vor langer Zeit in den Neunzigern, wo ich anfing, und wir hatten Mainframes, die in einer verteilten Architektur auf PCs
‫umgestellt wurden, bei der es hauptsächlich um die Geschwindigkeit ging, mit der Änderungen bereitgestellt werden können.
‫Sie waren jetzt in der Lage, DOS auf einer einzelnen Maschine zu installieren, ohne warten zu müssen, bis der
‫Mainframe auf die nächste Unix-Version aktualisiert wurde.
‫Wir konnten uns nicht mehr auf einmal bewegen.
‫Wir brauchten verschiedene Teile unserer Organisation, um uns mit unterschiedlichen Geschwindigkeiten in verschiedene Richtungen zu bewegen, daher
‫der Beginn des verteilten Rechnens.
‫Dann sind wir weg von Bare Metal, dem Virtuellen, weil wir es leid waren, auf die Bestellung von Hardware zu warten und darauf zu
‫warten, dass sie in einem Rechenzentrum implementiert wird.
‫Wir wollten die Dinge beschleunigen und unsere Ressourcen besser nutzen.
‫Virtualisierung und virtuelle Maschinen wurden aus diesen Gründen extrem populär.
‫Dann war Data Center to Cloud der nächste Schritt, denn wir mussten Ideen jetzt noch schneller umsetzen, als es unsere
‫eigene Hardware und unsere eigenen Rechenzentren zuließen.
‫Wir wollten Server, die wir derzeit nicht hatten, innerhalb von Minuten, nicht Tagen oder Wochen, ausführen, und
‫die Cloud gab uns Zugriff auf nahezu sofortige Ressourcen, was offensichtlich der Grund ist, warum die Cloud heute so riesig ist.
‫Und schließlich befinden wir uns auf dem nächsten Abschnitt dieser Reise und bewegen uns von der massiven Host-Erweiterung, die wir hatten,
‫wo wir zu viele Hosts und Kernel und Betriebssysteme hatten.
‫Und jetzt werden wir in der Lage sein, die Anzahl dieser zu reduzieren, weil wir jetzt in der Lage sind,
‫die Workloads darin zu isolieren und sie sicher zusammen auf demselben Kernel auszuführen.
‫Ich schließe hier übrigens Serverless ein, denn wenn Sie sich wirklich mit den meisten Serverless-Plattformen befassen, führen
‫sie wirklich nur Container im Hintergrund aus.
‫Es kann ein Container sein, den Sie als Image verschickt haben, oder vielleicht nur ein Container, in dem Ihre Funktion
‫ausgeführt wird, aber sie werden immer noch in einem Container ausgeführt.
‫Und deshalb spreche ich gerne von schneller, schneller, schneller.
‫Container und Docker bieten Ihnen im Wesentlichen die Möglichkeit, schneller zu entwickeln, Ihre Apps schneller zu
‫erstellen, sie schneller zu testen und sie schneller auf Ihren Servern bereitzustellen.
‫Bist du noch bei mir?
‫Ich habe immer noch deine Aufmerksamkeit.
‫Fassen wir das ganz schnell zusammen.
‫Der Grund für die Existenz von Containern sind meiner Meinung nach drei Hauptgründe: Die bessere Isolierung innerhalb eines einzelnen
‫Betriebssystems spart Zeit, Betriebssystem und Abhängigkeitsverwaltung, gibt uns aber auch die Isolierung, die wir zum Schutz
‫unserer Anwendungen benötigen.
‫Dann haben wir die Umweltvarianzen reduziert.
‫Der Unterschied zwischen den einzelnen Umgebungen, die es ausführt, ist also sehr gering.
‫Auch hier sind normalerweise nur Ihre Verbindungseinstellungen für Datenbanken, vielleicht einige URL-Pfade, solche Sachen, Ports, und dann ist
‫der Rest alles genau so, wie Sie es erstellt und getestet haben.
‫Und schließlich die Erhöhung unserer Änderungsgeschwindigkeit, nicht nur für die Software selbst, sondern auch für das Unternehmen,
‫das diese Software implementieren möchte.
‫Wir sind jetzt in der Lage, schneller zu entwickeln, schneller zu bauen, schneller auf Servern bereitzustellen und schneller zu
‫testen, weil diese Container-Images und die Container selbst so einfach zu erstellen, bereitzustellen und erneut bereitzustellen und erneut auszuführen sind
‫und all das.
‫Also ich hoffe das macht Sinn.
‫Wir sehen uns im nächsten Video.