‫Hallo.
‫Dieses Video ist aus zwei Gründen wichtig.
‫Erstens für den Fall, dass Sie Docker nicht lokal ausführen möchten.
‫Sie möchten Docker auf einem Server aus der Ferne ausführen, sei es für die Produktion, eine andere Serververwendung
‫oder einfach, weil Sie Docker aus Gründen der Lizenzierung von Leistungsressourcen nicht lokal ausführen können.
‫Dafür kann es alle möglichen Gründe geben.
‫Hier geht es also um die Docker-Engine für Linux-Server.
‫Der Grund, warum ich sage, dass der Motor und die Server Schlüsselkomponenten sind, werden wir im Laufe dieses Videos noch näher erläutern.
‫In diesem Video geht es darum, das aktuellste Docker vom richtigen Ort aus zu installieren, was sich von
‫den Standard-Linux-Paketmanagern unterscheidet.
‫Wir stellen dann sicher, dass das Gerät dort installiert ist, wo Sie es betreiben werden, so dass Sie nicht die ganze
‫Zeit mit ssh in den Server eindringen müssen.
‫Wir werden es so einrichten, dass wir es aus der Ferne steuern können. Was ist der beste Weg, um eine Docker-Engine
‫auf einem Linux-Server zu betreiben?
‫Wenn Sie das vorherige Video über Docker-Desktops für Linux-Desktops noch nicht
‫gesehen haben, ist dies ein kleiner Disclaimer.
‫Das war, bevor wir den Docker-Desktop hatten, wir hatten nur die Docker-Engine.
‫Jeder Docker-Desktop ist mit einer Docker-Engine ausgestattet.
‫Es verwaltet es für Sie, aber die Docker-Engine ist ein einziges Binärprogramm namens Docker D oder Docker Daemon,
‫das auf jedem Linux-Server laufen kann.
‫Solange Sie einen Linux-Kernel haben, können Sie das Gleiche tun.
‫Sie können es auf einem Windows-Server ausführen, der Docker RD ESXi, der tatsächlich als Dienst auf einem Windows-Server ausgeführt werden kann, um Windows-Container
‫auszuführen.
‫Aber darüber werden wir in diesem Video nicht sprechen.
‫Der Docker-Desktop, der auf Ihrem lokalen System ausgeführt wird, ist also wirklich nur für die lokale Nutzung von Docker
‫gedacht.
‫Aber das ist die Docker-Engine, die auf jedem Linux-System laufen kann, egal ob es sich um ein lokales oder ein entferntes System
‫handelt, ob es eine VM oder ein physischer Server ist, ein Raspberry Pi oder was auch immer.
‫Wenn ein Linux-Kernel darauf läuft, ist er in der Liste enthalten, und Docker hat eine kompatible Liste mit getesteten und unterstützten Builds, von denen sie
‫wissen, dass sie funktionieren.
‫Es ist nicht jede Linux-Distribution, die es gibt.
‫Es beinhaltet nicht BSD, was technisch gesehen kein Linux ist, und es konzentriert sich wirklich
‫nur auf die Großen, Sie wissen schon, Central West, Red Hat, Ubuntu, Debian und so weiter.
‫Und es gibt verschiedene Architekturen, die es unterstützen wird.
‫Als Referenz in diesem Video sehen Sie den Link zu dieser Seite, die Ihnen die Liste der derzeit unterstützten
‫Linux-Distributionen für die Engine anzeigt.
‫Ich werde natürlich Docker auf Ubuntu, meiner bevorzugten Server-Linux-Distribution, verwenden und Sie dabei
‫begleiten.
‫Ich werde die Details nicht näher erläutern, denn eigentlich wollen Sie nur das hier lesen oder das Skript ausführen, worüber
‫wir als Nächstes sprechen werden.
‫Nun, ja, ich gebe Ihnen Links als Ressourcen zu diesem Video für die gesamte Dokumentation rund um alle Möglichkeiten,
‫es auf Linux-Varianten zu installieren, Distributionen wie Ubuntu, Fedora und all die anderen.
‫Am einfachsten ist es jedoch, einfach ein Skript laufen zu lassen.
‫Wenn Sie in Ihrem Browser eingeben, erhalten Sie Docker.
‫Damit erhalten Sie ein Shell-Skript, das Sie sich ansehen, herunterladen und automatisch ausführen können.
‫Bei Curl geht es im Grunde darum, die richtigen Einstellungen zu finden, die alten Dinge zu deinstallieren, die neuen Dinge zu installieren, sicherzustellen,
‫dass man die richtigen Quellen bekommt und all diese Dinge in einem Rutsch zu erledigen.
‫Auf diese Weise habe ich Docker immer installiert, seit ich zu Beginn des Projekts davon erfahren
‫habe.
‫Wenn Sie also zum ersten Mal Docker auf einem Linux-Server installieren, folgen Sie der Dokumentation,
‫die Sie Schritt für Schritt mit Ihrem Paketmanager durchgehen.
‫Vielleicht ist es apt, vielleicht ist es yum, vielleicht ist es APK, je nachdem, was Sie mit Ihrer Linux-Distribution machen.
‫Aber ich werde dieses Skript verwenden, das einfacher ist.
‫Im Grunde wird das Skript in eine Datei umgewandelt und diese Datei dann mit einer Shell ausgeführt.
‫Und das ist genau das, was das Skript auf der letzten Folie sagt: Kopieren Sie es und fügen Sie es ein, kopieren
‫Sie es und führen Sie es dann aus.
‫Wir machen das also und es wird herausfinden, welche Distribution ich benutze, welche Version dieser Distribution,
‫ob sie unterstützt wird, es wird in diesem Fall apt mit dem Paketmanager mit dem Schlüssel verbinden, um sicherzustellen, dass Sie das
‫Richtige bekommen.
‫Repository für Ihre Installation, und dann läuft dieser Befehl ein paar Minuten lang, je nachdem, wie schnell Ihr Server
‫ist.
‫Und dann landen Sie hier wieder an Ihrer Shell-Eingabeaufforderung mit der Docker-Befehlszeile, der Docker-Engine oder
‫dem Daemon und einigen anderen Dienstprogrammen.
‫Normalerweise werden einige Plug-ins mitgeliefert, z. B. Build Kit für die Erstellung von Bildern und Compose für die Ausführung.
‫All das werden wir im Laufe des Kurses behandeln.
‫Machen Sie sich also klar, dass sich vielleicht vier oder fünf Binärdateien in Ihrem System befinden.
‫Wie bei allen anderen Möglichkeiten, Docker zu installieren, führen Sie den Befehl "Docker space version" aus, geben
‫Sie diesen Befehl in Ihre Shell ein, und Sie sollten zumindest den Kommandozeilen-Client und die Serverversion zurückerhalten.
‫Wenn Sie diese Serverversion zurückerhalten, bedeutet dies, dass Sie mit der Server-API auf diesem Server kommunizieren können.
‫Wenn Sie sich auf der Shell des Servers befinden, kommuniziert er technisch gesehen über einen Socket mit lokalen Hosts.
‫Ich möchte Sie nur daran erinnern, dass alles, was Sie gerade getan haben, Open Source ist, die Docker-Engine,
‫die Docker-Befehlszeile, alle Plug-ins.
‫Diese sind alle vollständig quelloffen.
‫Der von Apache lizenzierte Docker-Desktop aus den vorangegangenen Videos enthält jedoch all diese Dinge
‫sowie Closed-Source- oder lizenzierte Software von Docker.
‫Der Docker-Desktop ist viel mehr eine Obermenge von verschiedenen Dingen.
‫Die Docker-Engine, die wir hier installieren, ist nur das absolute Minimum.
‫Es ist der Daemon, den Sie benötigen, um einen Container in Docker zu betreiben.
‫Und zur Erinnerung, wie ich es schon in früheren Videos getan habe: Wenn Sie den Docker-Login-Befehl verwenden, weil
‫Sie hier nur Kommandozeilenzugriff haben, können Sie sich mit Ihrer Docker-ID anmelden, wenn Sie
‫"Docker space, log in" eintippen, wodurch Sie mehr Pools erhalten.
‫Wenn Sie sich erinnern, sind die Pools die Dinge aus den ersten paar Videos in diesem Kurs, die die Software enthalten.
‫Sie ziehen das Image und führen es dann als Container aus, und zwar eine bestimmte Anzahl von Malen.
‫Und Docker könnte sich irgendwann beschweren und sagen: "Hey, sieh mal, du hast die aktuelle Zahl von
‫106 Stunden überschritten.
‫Es heißt, Sie hätten die Anzahl der Pools überschritten.
‫Nun, wenn Sie sich hinter einer Unternehmens-Firewall befinden und alle in Ihrem Unternehmen Docker verwenden und sich
‫alle hinter einer einzigen IP-Adresse befinden, kann diese Grenze ziemlich schnell erreicht werden.
‫Aber wenn man sich einfach nur anmeldet, gibt einem Docker mindestens die doppelte Menge an Pulls umsonst mit dem kostenlosen Konto, wenn
‫man für Docker bezahlt, was man bei diesem Kurs nicht muss, aber wenn man für Docker für ein
‫Docker-Abonnement bezahlen wollte, würde man, glaube ich, unbegrenzte Pools bekommen, solange man sich mit
‫diesem Konto anmeldet.
‫Nun aber zur lokalen Steuerung dieses Daemons.
‫Nun, was hier passieren wird, ist das System, das Sie verwenden werden, sagen wir, dies ist ein Server-Setup,
‫oder es könnte einfach sein, dass Sie Docker nicht auf Ihrem lokalen Rechner ausführen möchten.
‫Vielleicht dürfen Sie es nicht, vielleicht können Sie es nicht.
‫Vielleicht haben Sie nicht genug Ressourcen.
‫Vielleicht sind Sie nicht root auf Ihrem lokalen Rechner.
‫Sie haben jedoch die Möglichkeit, Docker auf diesem entfernten Rechner auszuführen.
‫Nun, Sie müssen sich nicht in die Shell auf dem entfernten Rechner setzen und dort alle Befehle eingeben und die gesamte
‫Quellcode-Arbeit dort erledigen oder das Repo für diesen Kurs klonen.
‫Sie können dort nichts tun.
‫Das können Sie ignorieren.
‫Sie können Docker dort installieren und wir werden aus der Ferne mit ihm kommunizieren.
‫Lassen Sie uns einen Moment zurückgehen.
‫Vor Jahren, als es diese SSH-Tunnelfunktion noch nicht gab, so um das Jahr 2018 herum, musste man sich entweder per SSH in den Server
‫einloggen und alles auf dem Server machen, und das ist manchmal ziemlich ätzend, weil man dann seine Sachen rüberkopieren
‫muss, und das ist einfach nicht so toll.
‫Sie haben alles andere lokal, Sie haben Ihren Code-Editor, vielleicht verwenden Sie Visual Studio
‫Code und Sie haben Ihren Quellcode für diese Klasse und Sie haben Sachen hier, richtig?
‫Idealerweise sollten Sie also all diese Arbeit auf Ihrem lokalen Rechner erledigen.
‫Docker löste dieses Problem, als es 2013 erstmals auf den Markt kam.
‫Die einzige Möglichkeit, dies zu tun, war über einen TCP-Port, der nicht über eine integrierte Authentifizierung verfügt
‫und standardmäßig keine Verschlüsselung für die Verbindung bietet.
‫Daher wurde es allgemein als schlechter Weg angesehen, eine Verbindung zu Docker herzustellen.
‫Das war etwas, das man nur in sicheren Netzen machen wollte, und vor allem, weil es nicht authentifiziert war.
‫Technisch gesehen könnte es Ihnen einen Remote-Root-Zugang zu einem Server ermöglichen, wenn Sie sich einfach von einem beliebigen
‫Ort aus, der Zugang zu diesem Port hat, verbinden.
‫Docker fügte dann diese neue Funktion hinzu, mit der wir einfach eine transparente SSH-Verbindung herstellen können, solange Sie per SSH auf den Server
‫zugreifen können und über eine Authentifizierung oder ein Zertifikat verfügen, vorzugsweise für den SSH-Zugang zu diesem Server.
‫Sie können es tun und müssen nicht durch Reifen springen oder zusätzliche Ports freigeben.
‫Genau das werden wir also tun.
‫Dieser Schritt besteht also darin, den Docker-Befehlszeilen-Client auf dem System zu installieren, von dem aus
‫Sie arbeiten werden, und das kann Windows, Mac, Linux, Raspberry, PIs oder was auch immer sein.
‫Holen Sie sich einfach den Kommandozeilen-Client, wenn Sie einen Mac haben.
‫Überraschenderweise installiert das Brew-Installationsprogramm - wenn Sie Brew nicht kennen, fehlt Ihnen
‫das beste Installationsprogramm für Mac und Brew install Docker - nicht wirklich die komplette Docker-Engine oder den Docker-Desktop.
‫Er installiert den Client nur, weil sie es sind.
‫Es gibt keine Docker-Engine für Mac.
‫Mac-Kernel unterstützen keine Container, so dass die Installation überraschenderweise nur eine Befehlszeile installiert, was in diesem Fall
‫das ist, was wir wollen.
‫Wenn Ihr lokaler Rechner ein Linux-Rechner wäre, könnten Sie das Linux-Installationspaket aus der Docker-Dokumentation
‫verwenden. Sobald Sie dieses Paket als Repository eingerichtet haben, können Sie das Docker CCI-Paket mit apt aus diesem Repository
‫installieren.
‫Und wenn Sie mit Windows arbeiten, haben Sie vielleicht schon von Chocolaty gehört.
‫Das ist heutzutage einer der Paketmanager für Windows.
‫Sie können auch eine Schokoladeninstallation durchführen, um nur den Kommandozeilen-Client zu installieren.
‫Aber Docker hat auch all dies in ihrer Dokumentation erklärt, wo sie Ihnen sagen, wie Sie die Client-Bibliotheken
‫für Ihr Betriebssystem und nur die Client-Bibliothek erhalten können.
‫Ja.
‫Der Moment der Wahrheit.
‫Sie haben die Docker-Engine auf einem Linux-Server installiert.
‫Unabhängig davon, wofür Sie es verwenden werden, ob nur zum Üben oder für die Produktion,
‫Sie haben Docker auf dem Server, Sie haben jetzt den Client auf Southern, Ihrem lokalen Rechner.
‫Ich sollte Sie daran erinnern, dass all die Dinge, die ich Ihnen gerade über die Installation des Clients gesagt habe, wenn Sie
‫bereits Docker Desktop installiert haben, müssen Sie das nicht tun.
‫Der Docker-Desktop wird mit dem Client geliefert, aber wir können dem Client sagen, wo er mit der Server-Engine kommunizieren
‫soll, und genau das werden wir jetzt tun.
‫Stellen Sie sich also vor, dass ich einen Server mit so etwas wie diesem Befehl hier oben, ssh route an einer IP-Adresse oder einem Hostnamen
‫aufrufen kann.
‫Und nehmen wir an, ich habe ein SSH-Zertifikat.
‫All dies setzt voraus, dass Sie die Grundlagen von SSH verstehen und wissen, wie Sie ein Zertifikat auf einem Server erhalten,
‫damit Sie sich aus der Ferne anmelden können.
‫Es gibt tonnenweise Tutorials dazu, und dieses Wissen wird vorausgesetzt.
‫Auch hier werden grundlegende Linux-Kenntnisse vorausgesetzt, bevor Sie sich mit Docker beschäftigen.
‫Wenn wir also davon ausgehen, dass wir das tun können, wenn ich diesen Zugang habe, dann müsste ich nur eine Umgebungsvariable
‫erstellen.
‫Die Umgebungsvariable Docker underscore host teilt der Docker-Befehlszeile mit, mit welchem Server sie standardmäßig kommunizieren
‫soll.
‫Wenn Sie Docker einfach auf einem System installieren und die Befehlszeile verwenden, wird der lokale Socket oder der
‫lokale Host angenommen.
‫Es gibt also nicht einmal diese Umgebungsvariable.
‫Und standardmäßig, wenn sie leer ist, diese Umgebungsvariable, auch wenn Docker versucht, sie nachzuschlagen
‫und sie nicht findet, wird es sagen, okay, du musst davon ausgehen, dass ich mit dem lokalen Host sprechen muss und
‫es wird das einfach tun.
‫Aber wenn wir dies ändern, indem wir einen Export docker host equals ssh colon slash slash hinzufügen, so wie Sie es in einer https-URL
‫verwenden würden.
‫Wenn wir das also mit ssh colon's slash username at hostname ersetzen, dann kann ich mit Docker einsteigen, indem ich einfach normale
‫Docker-Befehle eingebe.
‫Beachten Sie, dass ich hier eine Docker-Version eingebe, aber auf meinem lokalen Rechner kein Docker läuft.
‫Ich habe gerade diesen Docker-Client und es ist bereits SSH direkt über das Internet zu diesem Remote-Cloud-Instanz, die ich
‫gerade vor Momenten eingerichtet und es gibt die Server-Version als auch die Client-Version.
‫Wenn Sie sich umschauen würden, würden Sie sehen, dass ich Darwin verwende, also Mac OS für
‫meinen Client, und wenn wir nach unten scrollen, würde der Server Linux anzeigen, weil dort
‫die Engine läuft, und das war's.
‫Das ist alles, was Sie tun müssen.
‫Wenn Sie die Docker-Underscore-Host-Umgebungsvariable deaktivieren möchten, kehrt Ihre Docker-Befehlszeile zu Ihrem lokalen Rechner
‫zurück, vorausgesetzt, die Engine läuft lokal und Sie können zwischen den beiden Varianten hin- und
‫herwechseln.
‫Sie könnten sogar eine Reihe von verschiedenen Servern haben und einfach die Umgebungsvariable in jeder Shell, die Sie
‫verwenden, ändern, um ihr mitzuteilen, mit welchem Server sie sprechen soll.
‫Es gibt einen Docker-Kontextbefehl, der dies ebenfalls ermöglicht.
‫Darüber wollen wir noch nicht sprechen.
‫Aber es gibt einen eingebauten Befehl namens Docker-Kontext, der es Ihnen ermöglicht, diese
‫Einstellungen zu speichern und eine Liste von verschiedenen Engines zu verwalten, mit denen Sie kommunizieren
‫möchten.
‫Der letzte Schritt besteht darin, das Repository für diesen Kurs lokal zu klonen. Das Repository, das in den schriftlichen
‫Vorlesungen ein paar Lektionen weiter hinten erwähnt wird, wo das Kurs-Repository heruntergeladen wird,
‫sollte zusammen mit dem Code-Editor und allem anderen sowie dem Docker-Client auf dem
‫lokalen Rechner abgelegt werden.
‫Das Einzige, was sich auf dem Server befinden wird, ist die von uns installierte Engine, und wir
‫müssen uns nicht ständig per SSH mit ihr verbinden, da alle Docker-Befehle, die wir lokal ausführen, nur auf dem Remote-Server
‫ausgeführt werden.
‫Dieser entfernte Server.
‫Übrigens, denken Sie daran, wenn ich in meinem Browser den lokalen Host eingebe, um Dinge in Docker zu testen, wie z. B. eine Website
‫oder etwas, das wir in Docker ausführen, geben Sie nicht den lokalen Host ein, sondern den Hostnamen
‫oder die IP-Adresse des Servers, auf dem Sie Docker installiert haben.
‫Das ist der Rechner, auf dem die Maschine läuft, auf dem Ihre Container laufen, und den Sie in Ihren Browser
‫eingeben müssen.
‫Wenn Sie andere lokale Befehle wie curl oder ping ausführen, müssen Sie diese mit der Server-IP-Adresse
‫verknüpfen, und das war's.
‫Sie haben jetzt eine Engine, die auf einem Linux-Server irgendwo auf der Welt läuft.
‫Sie laufen auf Ihrem lokalen System mit Ihrem Code und Ihrem Repo und allem anderen, und Sie sind bereit,
‫loszulegen.