‫Also, Hallo?
‫Oder soll ich die Zukunft des Softwaremanagements mit Docker und Container-Tools willkommen heißen?
‫Dieses Video handelt speziell von Docker.
‫Es hatte im Laufe der Jahre viele Tools, aber dieses Video handelt von den drei wichtigsten Innovationen,
‫mit denen die gesamte Docker-Evolution der Software im Jahr 2013 begann.
‫Das sind hauptsächlich drei Dinge: das Docker-Image, die Docker-Registrierung und dann der Docker-Container.
‫Wenn wir an Docker denken, denken die meisten von uns an Container.
‫Aber diese drei Innovationen passen zusammen wie Brot und Butter, und sie nennen es Add, Docker, Build,
‫Ship Run.
‫Dies sind die drei Schritte, um zuvor Nicht-Container-ID-Software zu verwenden, sie in ein Docker-Image umzuwandeln, es in eine Registrierung aufzunehmen, es dorthin zu
‫bringen, wo Sie es ausführen müssen, und dann schließlich einen Container daraus zu erstellen.
‫Tatsächlich gehen die Ciencia für die Cloud Native Computing Foundation, über die viele der Tools
‫in all meinen Videos sprechen werden, diese Produkte und Tools und Workflows in den meisten
‫Fällen davon aus, dass Sie einen Container-Workflow verwenden, einen Build-Ship-Lauf .
‫Also lassen Sie uns diese aufschlüsseln und genau, was die drei sind.
‫Zunächst das Container-Image, und ich stelle es mir gerne als universellen App-Packager vor, und wir hatten im Laufe
‫der Jahre viele Paketmanager.
‫Tatsächlich habe ich die Zählung verloren und bin schon eine Weile mit allen Paketmanagern unterwegs, aber
‫ich kann mich an nichts erinnern, das plattformübergreifend und anwendungssprachenunabhängig war, was bedeutet, dass es überall und überall ausgeführt wird
‫läuft auf allem, solange es unter Linux oder Windows läuft.
‫Werfen wir nun einen kurzen Blick auf eine Docker-Datei, die das Rezept oder die Anweisung zum Erstellen
‫eines Container-Images darstellt. Docker-Image und Container-Image sind derselbe Begriff für dasselbe.
‫Tatsächlich war die Docker-Image-Spezifikation so beliebt, dass sie jetzt ein Standard ist, der als OCI-Image-Standard bekannt
‫ist.
‫Sie sehen also eine Reihe von Anweisungen und jede Docker-Datei benötigt zu Beginn ein from.
‫Wir können mit dem Bild eines anderen beginnen.
‫Wir können viele Bilder haben von, viele von.
‫Wir werden uns also später mit all dieser Komplexität befassen.
‫Aber wir fangen hier mit einer Python an und arbeiten uns nach unten vor.
‫Tatsächlich beginnen wir mit diesen als Schichten.
‫Jeder dieser Befehle in der Docker-Datei wird manchmal als Strophe mit Großbuchstaben bezeichnet, einschließlich from und
‫dann run, und wenn Sie sich nach unten arbeiten, da sie von oben nach unten verarbeitet
‫werden, werden Ebenen erstellt, die als Tarballs auf Servern verschoben werden.
‫Und innerhalb dieser Ebenen befinden sich Dateien, Verzeichnisse und Dateiberechtigungen und manchmal Metadaten, auf die wir später noch eingehen
‫werden.
‫Wenn ich anfange, dieses Image zu erstellen, beginnt es mit dieser ersten Zeile und sucht das Python-Image von Docker Hub oder von wo auch immer ich
‫ihm gesagt habe, dass es das Image bekommen soll.
‫Und das beinhaltet nur Python, seine Binärdateien und seine Bibliotheken.
‫Es enthält keine Host-Treiber oder den Linux-Kernel oder irgendetwas außerhalb dessen, was Python zum Ausführen benötigt.
‫Wenn Python offenes SSL benötigt, ist dies in dieser Ebene des Bildes enthalten.
‫Dann können wir mit der nächsten Zeile der Docker-Datei fortfahren.
‫Das ist ein PIP-Befehl für ein Python-Abhängigkeits-Installationsprogramm und es installiert Flask.
‫Damit wird eine neue Ebene gestartet, die eine Flasche hinzufügt, genau wie Sie es mit einem normalen Pip-Installationsbefehl tun würden.
‫Tatsächlich werden im Hintergrund schnelle kleine Container für jede dieser Schichten ausgeführt, die Befehle ausgeführt oder
‫alles getan, was Sie innerhalb dieser Schichten tun müssen, und sie dann als
‫ihren eigenen eindeutigen Speicherort auf dem Linux-Host gespeichert, der dies erstellt.
‫Also stapeln wir hier Schichten und gehen dann zur nächsten Zeile, dem Kopierbefehl, der Arbeit.
‫Es gibt nur eine Änderung der Metadaten.
‫Es ändert nur die Speicherorte im Dateisystem, keine große Sache.
‫Der Kopierbefehl kopiert unseren Quellcode von dem Host, auf dem wir bauen, in eine eigene Ebene, die über den anderen
‫gestapelt ist.
‫Diese bilden zusammen mit dem Befehl docker build ein Image.
‫Dies ist eines der Dinge an Docker, die so einfach zu verwenden sind, weil wir nur
‫diesen einfachen Docker-Build-Befehl brauchten, um eine Reihe komplexer Dinge, die in der Docker-Datei vor sich gehen, in ein einziges
‫Image umzuwandeln.
‫Das ist nur unsere Anwendung und nur die Abhängigkeiten, die sie benötigt, und sonst nichts.
‫Das ist der erste Teil des Bauschifflaufs, der von Docker gebaut wird.
‫Lassen Sie uns als Nächstes über die Registrierung sprechen.
‫Die Docker-Registrierung dient der Anwendungsverteilung.
‫Jedes Anwendungspaketierungssystem hat eine Möglichkeit, diese Pakete herumzubekommen, und die Docker-Registrierung ist jetzt nicht
‫anders.
‫Es ist nur als OCI-Distributionsspezifikation oder OCI-Registrierungsspezifikation bekannt.
‫Es ist also wieder ein Standard in der gesamten Branche für das Verschieben von Container-Images.
‫Und es ist überall.
‫Jede Wolke hat eine.
‫Docker-Hub ist der Standard und wahrscheinlich der beliebteste.
‫GitHub hat ein Bitbucket GitLab.
‫Sie alle haben ihre eigenen Bildregistrierungen und Sie können Ihre eigenen betreiben.
‫Es gibt wahrscheinlich mindestens ein Dutzend Projekte mit kostenloser, Open-Source- und kostenpflichtiger Software, mit denen Sie
‫Ihre Docker-Images darin speichern können.
‫Lassen Sie uns also aufschlüsseln, wie das funktioniert.
‫Erstens haben wir unser Image, das wir gerade erstellt haben, und dieses Image hat einen eindeutigen sha-Hash, der alle diese
‫Schichten zusammen so identifiziert, dass wir garantieren können, dass wir sicher sein können, wenn wir uns den Hash
‫auf zwei verschiedenen Systemen ansehen genau dieselben Dateien, dieselben Metadaten, die wir gerade erstellt haben.
‫Diese Bildschichten gehen zusammen und verteilen sich.
‫Wir können so etwas wie Docker Push verwenden, um diese Image-Layer zu nehmen und sie in eine Registrierung hochzuschieben.
‫Sie können eine von vielen Registrierungen verwenden, wie ich bereits erwähnt habe, aber sobald sie dort ist,
‫können Sie zu einer anderen Maschine gehen und einen Docker-Pull durchführen, der eine identische Kopie dieses Images auf dieser Maschine herunterzieht, so wie wir
‫es aufgebaut hatten die erste Maschine.
‫Und das ist eines der Kernprinzipien von Docker, dass wir in der Lage sind, die
‫Software, die wir auf einem Computer mit all ihren Abhängigkeiten erstellt haben, genau so auf einem anderen System auszuführen,
‫bei dem es sich möglicherweise um völlig andere Linux-Distributionen handelt oder Windows.
‫Wenn Sie unter Linux arbeiten und ein Linux-Image erstellen, das unter Linux ausgeführt werden muss, da es Linux-Binärdateien ausführt.
‫Wenn Sie es auf CentOS erstellt und auf einem Bonita ausgeführt haben, wären es unabhängig von dieser Distribution genau die gleiche Anwendung
‫und die gleichen Abhängigkeiten.
‫Schließlich kommen wir zum Docker-Container selbst.
‫Sobald wir all diese Schritte zum Erstellen des Bildes durchgeführt und es an einem Ort abgelegt haben, können wir von
‫unseren Servern darauf zugreifen und es dann auf unsere Server herunterladen.
‫Wir können es ausführen.
‫Stellen wir uns vor, wir haben einen Server, auf dem Linux läuft.
‫Es könnte Windows laufen, aber in diesem Fall konzentrieren wir uns nur auf Linux.
‫Es wird Docker im Hintergrund laufen lassen, das als Docker-Engine bekannt ist.
‫Und die Engine auf dieser einzelnen Maschine orchestriert oder verwaltet all die verschiedenen Dinge,
‫die passieren müssen, um Bilder herunterzuladen, zu überprüfen, ob es genau das ist, was heruntergeladen werden soll,
‫und sie schließlich auszuführen.
‫Dann erhalten wir das gerade heruntergeladene Image mit einer Docker-Abfrage und führen dann einen Befehl aus.
‫Es ist nicht wirklich wichtig, dass Sie die Befehle noch lernen, aber es ist ein Docker-Ausführungsbefehl.
‫Dies ist der Run-Teil von build ship run.
‫Und in diesem Fall führen wir diese Python-App in einem eigenen Container aus.
‫Dieser Container wird als Namespace bezeichnet.
‫Das ist diese Linux-Funktion, die verhindert, dass die in diesem Container ausgeführte Anwendung den Rest
‫des Betriebssystems sieht.
‫Es erhält sein eigenes leeres Dateisystem und enthält nur die Dateien, die in dem gerade erstellten Image enthalten
‫sind.
‫Es erhält seine eigene IP-Adresse und seine eigene virtuelle Netzwerkkarte und seine eigene Prozessliste und sieht dort im Grunde
‫wie sein eigenes System aus.
‫Wenn wir dann diesen Docker-Run-Befehl erneut mit unserem Image-Namen oder Image-Hash ausführen, erhalten wir einen identischen
‫Container, der nebeneinander ausgeführt wird.
‫Jetzt sind diese beiden Prozesse voneinander isoliert.
‫Die Python-App, ein Container, kann also die Python-App und Container zwei nicht sehen.
‫Und wenn Sie eine Datei in Container in Container 1 ändern, wird diese Datei standardmäßig nicht angezeigt.
‫Wenn wir einen zweiten Server mit einer zweiten ausgeführten Instanz der Docker-Engine hinzufügen und dasselbe tun würden, könnten wir eine
‫hochverfügbare Einrichtung mit unserer Anwendung haben, die viele Male für Redundanz oder bessere Leistung ausgeführt wird oder was auch
‫immer unser Grund dafür sein mag, mehr auszuführen als einer von ihnen.
‫Sie sind hinsichtlich des Dateisystems, der Berechtigungen und der Metadaten identisch.
‫Jetzt gibt es eine Menge mehr, was wir über dieses Zeug lernen können, weshalb der Kurs, den ich habe, jetzt
‫so lang ist.
‫Aber das sind immer noch die drei Dinge, die sich nach Docker nicht geändert haben.
‫Zuerst konzipiert sie.
‫Die Build-Ship-Run-Idee ist eines der Kernprinzipien von Container- und Kubernetes-Run.
‫Sie nennen das Projekt Cloud-natives Ökosystem und es geht wahrscheinlich davon aus, dass Sie diese
‫typische Art von Workflow haben, um Ihre Apps aus den Händen Ihrer Entwickler in die Testsysteme und schließlich auf
‫Produktionsserver zu bringen.
‫Es sind dieselben drei Schritte, also fängt es hoffentlich an, ein wenig einzusinken, damit Sie verstehen, warum
‫dies die drei Schlüsselkomponenten sind.
‫Lassen Sie uns auch heute, viele, viele Jahre nachdem all dies erfunden wurde, herausfinden, was als nächstes kommt.