GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

So installieren und verwenden Sie Docker unter Ubuntu (in der realen Welt)

Wenn Sie nach Informationen zur Installation von Docker auf Ubuntu suchen, sind Sie hier genau richtig. Nicht nur das, sondern als Bonus zeigt Ihnen dieses Tutorial auch, wie Sie die grundlegenden Docker-Befehle zum Ausführen und Verwalten von Containern ausführen.

Mit den praktischen Funktionen von Visual Studio (VS) Code lernen Sie auch, wie Sie Ihre SSH-Fähigkeiten verbessern können. Fangen wir an!

Verwandt: Ein Windows-Typ in einer Linux-Welt:VS-Code und Remote-SSH

Voraussetzungen

Wenn Sie diesem Tutorial Schritt für Schritt folgen möchten, stellen Sie sicher, dass Sie über Folgendes verfügen:

  1. Eine Neuinstallation von Ubuntu Server LTS mit aktiviertem SSH (Diese Anleitung verwendet Ubuntu Server LTS 20.04.1)
  2. Ein Windows-Rechner mit VSCode installiert (Diese Anleitung verwendet Visual Studio Code 1.52.1)
  3. Die offizielle VSCode-SSH-Erweiterung ist installiert und mit Ihrer Ubuntu Server LTS-Installation verbunden

Installieren von Docker auf Ubuntu

Beginnen wir damit, zunächst Docker auf Ubuntu zu installieren. An dieser Stelle geht das Tutorial davon aus, dass Sie sich auf Ihrem lokalen Windows-Computer mit geöffnetem VS-Code befinden, der über SSH mit Ihrem Ubuntu-Server verbunden ist. Erfahren Sie im neuesten Artikel zur Verwendung von VS Code und SSH, wie Sie diese praktische Umgebung einrichten .

Im folgenden Beispiel ist VSCode über die Startseite remote mit Ubuntu verbunden Ordner (in diesem Fall /home/homelab ) als Arbeitsbereich geöffnet:

Der eigentliche Prozess, Docker in Ubuntu Server zu installieren, ist zwei Befehle entfernt. Ubuntu stellt Docker als Installationsoption im standardmäßigen Paketmanager zur Verfügung, der mit Ubuntu ausgeliefert wird und als apt .

Führen Sie im SSH-Terminalfenster von VS Code die folgenden zwei Befehle aus, um Docker zu installieren:

sudo apt update -y
sudo apt install docker.io -y

Während der Installation von Ubuntu Server wurde Ihnen möglicherweise die Option angeboten, Docker im Handumdrehen zu installieren. Wenn Sie dies getan haben, entfernen Sie zuerst das Snap-Paket, indem Sie sudo snap remove docker ausführen

Sie können die Installation von Docker in der folgenden Animation verfolgen:

Ubuntu ist so nett, den Dienst automatisch zu aktivieren und so einzustellen, dass er beim Booten für Sie startet, sodass Sie bereit sind, mit der Verwendung von Docker zu beginnen!

Erstellen und Ausführen eines Docker-Containers auf Ubuntu

Was können Sie jetzt tun, nachdem Sie Docker installiert haben? Beginnen wir mit der Erstellung eines Docker-Containers. Dieses Tutorial richtet einen statischen Webserver als gutes Beispiel für einen Docker-Container ein. In diesem Abschnitt werden Sie:

  • Richten Sie über Docker Hub einen neuen Container ein Image Repository zum Ausführen eines HTTP-Dienstes
  • Verwenden Sie die Portzuordnung, um den HTTP-Port innerhalb des Containers Ihrem Ubuntu-Host zuzuordnen
  • Richten Sie Bind Mounts ein, um wichtige Daten aus dem Container Ihrem Ubuntu-Host zuzuordnen
  • Richten Sie Persistenz durch Neustarts für Ihren Container ein

Wenn einer der oben genannten Schritte verwirrend klingt, machen Sie sich keine Sorgen, wir behandeln jeden Schritt einzeln, um Ihnen das Verständnis des Prozesses zu erleichtern.

Herunterladen des Docker-Images

Die erste Frage, die Sie sich stellen müssen, lautet:Woher wird dieser Container kommen? Werfen wir einen Blick auf den Docker Hub.

Ein großer Teil von Docker versteht Image-Repositories . Anstatt wie Pakete verteilt zu werden, werden Dienste in Docker als Docker-Images verteilt.

Ein Docker-Image ist eine Momentaufnahme der Software, die der Herausgeber verteilen möchte, und des gesamten Ablagesystems! Dies ist analog zum Erstellen eines .wim-Images von Windows.

Diese Dateisystemerfassung macht Docker so beliebt:Die Software wird zusammen mit der gesamten Betriebsumgebung erfasst. Dadurch werden die Probleme beseitigt, die durch Unterschiede zwischen Serverumgebungen entstehen.

Eines der beliebtesten Repositories (und der Standard) für Bilder ist Docker Hub auch als offizielles Docker-Repository bekannt. Im Image-Repository können Sie Tausende von vorgefertigten Docker-Images herunterladen, um sie als Container auszuführen.

Da in diesem Tutorial ein statischer Webserver eingerichtet wird, müssen Sie ein Webserver-Image herunterladen. Die beiden beliebtesten Webserver da draußen sind Apache httpd und Nginx Aber um die Dinge ein wenig zu ändern und Ihnen möglicherweise einen neuen Webserver vorzustellen, verwenden wir einen namens Caddy .

Caddy ist ein Webserver, der für seine Einfachheit bekannt ist. Viele gültige Serverkonfigurationen können mithilfe einer einzelnen Zeile in einer Datei bereitgestellt werden. Einfach ist gut und auch ein gutes Basisbeispiel.

  1. Zuerst müssen Sie das Docker-Image finden. Navigieren Sie auf Ihrem Windows-Computer zu https://hub.docker.com .
  2. Führen Sie eine Suche nach Caddy durch in der oberen linken Ecke der Seite. Sie sollten eine Seite ähnlich der folgenden sehen:

Ein Vorteil (und Nachteil) von Docker Hub ist, dass jeder, auch Sie, Docker-Images erstellen und auf die Site hochladen können.

Sie müssen darauf achten, dass das ausgewählte Bild aus einer vertrauenswürdigen Quelle stammt. Jeder kann Malware in einem Image platzieren, wenn er möchte, und seine Version auf den Docker Hub hochladen.

3. Notieren Sie sich den Namen des Bildes. Im Screenshot oben lautet der Name caddy exakt. Sie benötigen diesen Namen, um den Bildnamen in den nächsten Schritten anzugeben.

Ausführen eines Containers mit Docker auf Ubuntu

Sobald Sie den Namen des Bildes kennen, das Sie herunterladen möchten, ist es an der Zeit, es herunterzuladen und daraus einen Container zu erstellen.

Das Starten eines Containers aus einem Image erfordert einen einzigen Befehl. Führen Sie in Ihrem mit Ihrem Ubuntu-Server verbundenen SSH-Terminal den folgenden docker run aus Befehl.

Der folgende Befehl sucht nach dem caddy Bild auf dem lokalen Rechner. Wenn es nicht existiert, lädt es das Image vom Docker Hub herunter, erstellt einen Container und startet ihn. Der folgende Befehl verwendet den -p wechseln, um den Listening-Port 80 des Ubuntu-Servers dem Port 80 des Containers zuzuordnen. Diese Funktion wird Port-Mapping genannt.

sudo docker run -p 80:80 caddy

Die meisten Docker-Hub-Images folgen einer Namenskonvention von /. Images, die von Docker als „offiziell“ gekennzeichnet sind, haben jedoch kein vor ihnen (wie oben caddy).

Das Ausführen des obigen Befehls gibt wie folgt aus, wobei die Protokollinformationen von caddy direkt im Terminal angezeigt werden:

Sie werden vielleicht bemerken, dass fast allen Docker-Befehlen sudo vorangestellt ist , um die Ausführung der Befehle als Administrator zu erzwingen. Standardmäßig wird der Docker-Dienst als root ausgeführt , und alle Änderungen, die Sie an Containern oder Bildern vornehmen, müssen als Administrator vorgenommen werden.

Und… Sie sind einsatzbereit! Das ist alles dazu. Bist du nicht froh, dass du Docker auf Ubuntu installiert hast?

Navigieren Sie nun auf Ihrem Windows-Computer zu http:// und Sie sollten eine Zielseite für Caddy sehen. Sie können das unten sehen (die IP dieser Anleitung wird durch http://homelab-docker ersetzt ):

Der Caddy Container wird jetzt ausgeführt, aber Sie haben möglicherweise ein Problem bemerkt. Führen Sie diesen docker aus command übernimmt Ihre Kommandozeile. Sie können keine weiteren Befehle ausführen, und wenn die Sitzung beendet wird, wird der laufende Container angehalten. Lassen Sie uns dieses Problem lösen, indem wir den Container im Hintergrund ausführen (auch bekannt als Trennen Behälter).

Docker-Container im Hintergrund ausführen

Sie haben jetzt einen laufenden Container, aber Ihre Befehlszeile hängt sich auf. Du kannst nichts anderes tun. Sie brauchen eine bessere Möglichkeit, einen Container zu starten, indem Sie ihn wie einen Dienst im Hintergrund ausführen. Dazu:

  1. Stoppen Sie den aktuellen Container, indem Sie Strg+C drücken in der Kommandozeile. Dies sollte Ihnen Ihre Befehlszeile zurückgeben.
  2. Führen Sie nun denselben Befehl wie zuvor erneut aus, nur mit -d Parameter dieses Mal wie unten gezeigt. Sie werden sehen, dass Docker eine Container-ID zurückgibt und die Befehlszeile an Sie zurückgibt.
sudo docker run -d -p 80:80 caddy

Verwalten von Hintergrundcontainern mit Docker-Befehlen

Sobald Sie einen oder mehrere Docker im Hintergrund ausgeführt haben, müssen Sie sie irgendwie verwalten. Docker bietet Ihnen einige verschiedene Befehle, um dies mit docker container zu tun Befehle.

  • sudo docker container list -a :Listet alle Container (laufende und gestoppte) und deren Status auf
  • sudo docker container stop <name> :Stoppen Sie einen Docker-Container anhand seines Namens (oder anhand seiner ID)
  • sudo docker container start <name> :Starten Sie einen Docker-Container mit ihrem Namen (oder mit ihrer ID)
  • sudo docker container prune :Zerstöre und entferne alle angehaltenen Container

Sie können alle oben genannten Befehle im Kontext im folgenden Screenshot sehen:

Es gibt viele andere Docker-Containerbefehle, um Container auf Ihrem Server anzuzeigen, zu ändern, zu inspizieren oder sogar in Container zu übertragen. Sie können sie alle anzeigen, indem Sie sudo docker container --help ausführen .

Auch wenn Sie jetzt einen Webserver in einem Container bereitgestellt haben, der im Hintergrund läuft, haben Sie immer noch keine Möglichkeit, Ihre benutzerdefinierten Inhalte zu hosten. So wie es ist, stellt Caddy nur die Standard-Webseite bereit.

Sehen wir uns nun an, wie Sie Docker-Images mit einem Konzept namens bind mounts verwenden können um Container mit aussagekräftigen Daten bereitzustellen.

Speichern von Containerdaten mit Bind-Mounts

Docker arbeitet an dem Konzept, dass Bilder (und die Container, die sie generieren) wegwerfbar oder vorübergehend sind . Wenn es ein Update für die Caddy-Software gibt, aktualisieren Sie den Dienst nicht, Sie werfen das ganze Baby mit der Badewanne weg und verwenden ein völlig neues Image von Grund auf neu.

Die Vorteile der Entsorgung und Wiederherstellung solcher Behälter sind erheblich. Instabilitäten in der Software werden im Laufe der Zeit eingeführt, indem eine (möglicherweise) Jahre alte Software kontinuierlich aktualisiert wird. Indem jedes Mal ein frisches Image verwendet wird, bietet Ihnen Docker bei jedem Update eine stabile, zuverlässige und (vermutlich) getestete Basis.

Dieses Konzept entspricht der Verwendung einer Neuinstallation von Windows jedes Mal, wenn Sie Ihre Windows-Anwendungssoftware aktualisieren. Keine lustige Idee unter Windows, aber äußerst anwendbar in Docker.

Die Wegwerfmethode hat jedoch ein klares Problem. Sie möchten nicht, dass wichtige Daten weggeworfen werden, wenn Ihr aktueller Dienst weggeblasen wird. Docker löst dieses Problem mit einem Konzept namens bind mounts .

Sehen wir uns nun an, wie man ein Bind-Mount für einen Container erstellt.

Erstellen der Ordnerstruktur und Aufräumen

Bevor Sie Bind-Mounts verwenden können, müssen Sie einen Speicherort für diese zu speichernden Daten erstellen. Dieses Tutorial erstellt einen Ordner in Ihrem Home-Verzeichnis. So tun Sie dies in VS Code, während Sie noch mit Ihrem Ubuntu-Server verbunden sind:

  1. Klicken Sie mit der rechten Maustaste in einen leeren Bereich des VS Code Explorer und wählen Sie Neuer Ordner.

2. Benennen Sie den neuen Ordner container/caddy/files.

Die Ordnernamen sind Ihnen überlassen, solange sie im nächsten Docker-Befehl korrekt definiert sind. Durch die Verwendung eines Schrägstrichs interpretiert VS Code dies als das Erstellen von drei Ordnern. Die Dateien Ordner ist ein Unterverzeichnis von caddy und Caddy ist ein Unterverzeichnis von Containern. Sie müssen diese Ordnerstruktur nicht verwenden, aber die Struktur ist sinnvoller, wenn Sie mehrere Container auf demselben Server haben.

Wenn Sie dies noch nicht getan haben, stoppen und entfernen Sie alle zuvor erstellten Container mit dem folgenden Befehl:

# stop and remove ALL currently running containers.
# The $(sudo docker ps -q) dynamically grabs all running container IDs
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

Sie können diesen Befehl im folgenden Screenshot sehen:

Bereitstellen eines Caddy-Containers mit Bind-Mounts

Sie haben jetzt die auf dem Ubuntu-Server erstellte Ordnerstruktur. Es ist an der Zeit, einen Caddy-Container mit Bindungshalterungen zu erstellen.

  1. Bevor Sie zu weit gehen, finden Sie zuerst heraus, wo der Container, mit dem Sie arbeiten, persistente Daten speichert. Dieser Speicherort ist unterschiedlich, je nachdem, wer das Docker-Image erstellt hat und welchem ​​Zweck es dient.

Um herauszufinden, wo persistente Daten gespeichert sind, überprüfen Sie am besten die Dokumentation im Docker-Hub für das betreffende Image. Für Caddy finden Sie die Dokumentation hier :

2. Starten Sie den Container mit dem folgenden Befehl. der -v ~/containers/caddy/files:/usr/share/caddy -Parameter bildet den Pfad vor dem Doppelpunkt ab (~/containers/caddy/files ) in den Ordner innerhalb des Containers (/usr/share/caddy ). Dies funktioniert sehr ähnlich wie der Port-Mapping-Befehl:Nur dass Sie einen Ordner anstelle eines Ports mappen. Diese Art von Befehl wird als Bind Mount bezeichnet .

# bind a folder on the host (the path before the colon) to
# /usr/share/caddy inside the container
sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy caddy

die Tilde (~ ) im obigen Code bezieht sich auf den Home-Ordner. Für diesen Artikel entspricht das /home/homelab .

3. Öffnen Sie einen Browser und navigieren Sie zurück zur http-Adresse Ihres Servers. Sie werden feststellen, dass der Server jetzt einen 404 bedient Seite. Dies ist zu erwarten, da Sie derzeit keine index.html haben Datei in ~/containers/caddy/files .

4. Erstellen Sie eine index.html Datei in ~/containers/caddy/files auf dem Ubuntu-Server im VS Code Explorer-Fenster, das wie folgt aussieht:

<body><h2>hello world!</h2></body>

5. Navigieren Sie zur HTTP-Adresse Ihres Servers und bestätigen Sie, dass der Container jetzt Ihre neue index.html bereitstellt Seite.

All dies können Sie in der folgenden Animation sehen:

Im Gegensatz zu den Docker-Verwaltungsbefehlen werden die von Ihnen erstellten Dateien (wie index.html ) benötigen keine Administratorrechte. Das liegt daran, dass Ihnen die Inhalte gehören, die der Caddy-Server bereitstellt, da sie sich in Ihrem Home-Ordner befinden.

Validieren des Bind-Mounts

Exzellent! Sie verwenden nicht nur einen völlig neuen Docker-Container, sondern dieser Container stellt auch Inhalte bereit, die lokal in Ihrem Home-Ordner gespeichert sind! Sie können dies beweisen, indem Sie Folgendes ausführen:

  1. Halten Sie den laufenden Container an und entfernen Sie ihn. Dieser Schritt entfernt alles vollständig, einschließlich dieser index.html-Datei, wenn Sie keine Bind-Mounts verwendet haben.
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

2. Erstellen Sie einen brandneuen Container.

sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy caddy

3. Stellen Sie sicher, dass der neue Container immer noch die Datei index.html auf http://<your server> bereitstellt Adresse.

Persistente Docker-Container erstellen

Ein Container ist nicht so nützlich, wenn er beim Neustart des Servers stoppt. Standardmäßig wird das passieren, wenn Sie es nicht geschehen lassen. Um dies zu verhindern, generieren wir erneut einen neuen Caddy-Container, diesmal jedoch einmal, der neu gestartet wird, wenn der Docker-Host, in diesem Fall Ubuntu, neu gestartet wird.

  1. Beenden und entfernen Sie alle laufenden Container.
# stop and remove ALL currently running containers
sudo docker container stop $(sudo docker ps -q)
sudo docker container prune

2. Starten Sie den Caddy-Container mit --restart always neu Parameter, um diesen neuen Container so einzustellen, dass er beim Neustart mit dem Host startet. Mit dem --restart always gesetzt, verhält sich Ihr Container jetzt wie ein richtiger Dienst:er startet automatisch beim Booten.

sudo docker run -d -p 80:80 -v ~/containers/caddy/files:/usr/share/caddy --restart always caddy

3. Starten Sie den Server neu.

4. Überprüfen Sie nun, ob der neue Container auftaucht und weiterhin die Datei index.html auf http://<your server> bereitstellt Adresse.

Sie können die folgenden Befehle sehen, die unten angewendet werden:

Weitermachen

Zu diesem Zeitpunkt sollten Sie über eine funktionierende Docker-Umgebung und ein grundlegendes Verständnis von Bildern und Containern verfügen. Sie können Ihre Container pullen, starten, stoppen und grundlegende Verwaltungsaufgaben durchführen. Außerdem haben Sie mithilfe von Bind-Mounts und Port-Mapping erfolgreich einen laufenden Webdienst-Container erstellt.

In Bezug auf Docker gibt es noch viel zu berichten:Bleiben Sie in diesem Bereich auf dem Laufenden, da der nächste Artikel sich mit der erweiterten Docker-Verwaltung mit Docker Compose befassen wird.


Docker
  1. So installieren und verwenden Sie Docker unter Ubuntu 20.04

  2. So installieren und verwenden Sie Wine unter Ubuntu 20.04

  3. So installieren und verwenden Sie Docker in Ubuntu 20.04

  4. So installieren und verwenden Sie Docker Compose unter CentOS

  5. So installieren Sie Docker und führen Docker-Container in Ubuntu aus

So installieren und verwenden Sie R unter Ubuntu

So installieren und verwenden Sie den Exa-Befehl unter Ubuntu 20.04

So installieren und verwenden Sie Docker Compose unter Ubuntu 20.04

So installieren und verwenden Sie Docker Compose unter Ubuntu 22.04

So installieren und verwenden Sie Docker unter Ubuntu 22.04

So installieren und verwenden Sie Docker unter Ubuntu 20.04