Installation und Konfiguration von Docker unter Ubuntu
07:45, 10.02.2023
Moderne Infrastrukturen sind ohne Microservices und Container nicht denkbar. Diese Technologien eignen sich hervorragend für die Ausführung einer Anwendung in von Ressourcen isolierten Prozessen. Der Docker-Dienst ist zu einem festen Begriff geworden, wenn es um die Verwaltung von Containern geht. Es handelt sich um eine Anwendung, die die Verwaltung von Anwendungsprozessen in Containern vereinfacht.
Was ist ein Container? Es ist eine Struktur, die innerhalb von Anwendungen alle erforderlichen Bibliotheken und Abhängigkeiten enthält. Dadurch ist es möglich, die benötigten Pakete auf andere Distributionen zu portieren, ohne eine ähnliche Umgebung erstellen zu müssen. Im Gegensatz zur Hardware-Virtualisierung sind Container einfach zu portieren und benötigen weniger Ressourcen. Am wichtigsten ist, dass Container völlig unabhängig von externen Distributionen sind.
In diesem Artikel erklären wir die Funktionsweise der Docker Community Edition am Beispiel von Ubuntu 20.04. Wir beschreiben die Interaktion mit Containern und Images anhand konkreter Beispiele und erläutern, was Docker Compose ist.
Empfohlene Spezifikationen für Hardware
Was die Hardware-Empfehlungen betrifft, so gibt es für Docker keine Hardware-Anforderungen. Da es sich um ein Virtualisierungstool handelt, hängt alles von der Größe der Anwendungen ab, die in den Containern bereitgestellt werden sollen. Es gibt eine Anforderung an die "Maschine" – die Unterstützung von Virtualisierung.
Bevor Sie mit der Installation fortfahren, sollten Sie überprüfen, ob Ihre Umgebung die Mindestsystemanforderungen erfüllt:
- 64-Bit-Architektur;
- Kernel-Version 3.10.
Einrichten von Docker in Ubuntu
Es wurde bereits erwähnt, dass wir einen Ubuntu-Server für die Einrichtung von Docker verwenden würden.
Installation von Docker
Wir benötigen die neueste Version des Dienstprogramms. Sie müssen nicht im Ubuntu-Repository nachsehen, da dort nicht immer die neueste Softwareversion veröffentlicht wird.
Wir schlagen vor, dass Sie direkt zur offiziellen Docker-Registrierung gehen. Dazu muss eine neue Batch-Quelle hinzugefügt werden. Es muss ein GPG-Schlüssel heruntergeladen werden, um sicherzustellen, dass die Arbeitsdateien heruntergeladen werden können. Sobald dies geschehen ist, kann das Paket installiert werden.
Aktualisieren Sie zunächst die Liste der Pakete auf dem Gerät:
$ sudo apt update
Als Nächstes müssen Sie eine Software installieren, die dafür ausgelegt ist, dass apt korrekt über HTTPS funktioniert:
$ sudo apt install apt-transport-https ca-certificates curl software-properties-common
Optional kann zusätzliche Kernel-Software erforderlich sein. Dies ist notwendig, damit das aufs-Dateisystem mit den Dienstprogramm-Containern arbeiten kann. So können Sie Änderungen schnell erkennen und Snapshots erstellen. Dies sind die Abbilder, die schreibgeschützt sind.
$ sudo apt install linux-image-extra-$(uname -r) linux-image-extra-virtual
Hinzufügen eines GPG-Schlüssels für das Docker-Repository:
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
Die folgenden drei Befehle sind erforderlich, um ein Software-Repository direkt zu Ubuntu hinzuzufügen und anschließend Docker in die Distribution zu installieren.
$ sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" $ sudo apt update && apt-cache policy docker-ce $ sudo apt install -y docker-ce
In einigen Fällen kann es vorkommen, dass Sie beim Starten von Docker keine Verbindung zu einem Socket herstellen können. Um dies zu vermeiden, fügen Sie den Benutzer zur Docker-Gruppe hinzu. Verwenden Sie den folgenden Befehl:
$ sudo usermod -aG docker $(whoami)
Nach diesen Schritten wird die Software installiert, gestartet und zum Autostart hinzugefügt. Sie können die Funktionalität zusätzlich mit dem folgenden Befehl überprüfen:
$ sudo systemctl status docker
Wenn der Daemon korrekt arbeitet, wird eine ähnliche Meldung in der Zeile erscheinen:
$Output● docker.service - Docker Application Container Engine
Geladen: geladen (/lib/systemd/system/docker.service; aktiviert; Vendor Preset: aktiviert)
Aktiv: aktiv (läuft) seit Tue 2020-05-19 17:00:41 UTC; vor 17s
AusgelöstDurch: ● docker.socket
Docs: https://docs.docker.com
Main PID: 24321 (dockerd)
Tasks: 8
Memory: 46.4M
CGroup: /system.slice/docker.service
└─24321 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
Damit ist die Installation abgeschlossen und das Dienstprogramm ist einsatzbereit. Um Docker vollständig nutzen zu können, benötigen Sie ein Hilfsprogramm namens Docker Compose.
Installieren des Dienstprogramms Docker Compose
Was ist diese Software? Compose ist ein Werkzeug, mit dem Sie mehrere verschiedene Container betreiben können. Das Dienstprogramm verwendet Dienstdefinitionen, um vollständig anpassbare Umgebungen mit mehreren Containern zu erstellen. Sie können Netzwerk- und externen Speicherplatz gemeinsam nutzen. Führen Sie die folgende Befehlssequenz aus:
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Mit diesem Befehl werden die richtigen Berechtigungen für die Ausführung von docker-compose-Befehlen festgelegt:
$ sudo chmod +x /usr/local/bin/docker-compose
Prüfen Sie, ob die Software auf dem neuesten Stand ist und bestätigen Sie die erfolgreiche Installation:
$ docker-compose --version
Wenn wir eine solche Schlussfolgerung sehen:
Ausgabe
docker-compose Version 1.29.2, Build 5becea4c
Der Prozess war also erfolgreich.
Merkmale von Docker
Der Befehl docker wird mit Optionen und Unterbefehlen mit zusätzlichen Argumenten verwendet. Schauen wir uns die schematische Syntax an:
docker [Optionen] [Befehl] [Argumente]
Mit diesem Befehl können Sie die Tabelle aller Teams anzeigen:
$ Docker
Die Tabelle wird geöffnet:
- attach Lokale Standardeingabe-, Ausgabe- und Fehlerströme an den laufenden Container anhängen
- build Ein Image aus einer Docker-Datei erstellen
- commit Erstellen eines neuen Abbilds aus Containeränderungen
- cp Kopieren von Dateien/Ordnern zwischen dem Container und dem lokalen Dateisystem
- create Einen neuen Container erstellen
- diff Überprüfung von Änderungen an Dateien oder Verzeichnissen im Container-Dateisystem
- events Empfang von Echtzeit-Ereignissen vom Server
- exec Führen Sie den Befehl im laufenden Container aus
- export Exportieren des Container-Dateisystems als tar-Archiv
- history Den Verlauf des Bildes anzeigen
- images Liste der Bilder
- import Importieren Sie den Inhalt des tar-Archivs, um ein Dateisystemabbild zu erstellen
- info Anzeige von systemweiten Informationen
- inspect Rückgabe von Low-Level-Objektinformationen
- docker kill Einen oder mehrere laufende Container beenden
- load Laden Sie das Bild aus dem tar-Archiv oder von STDIN herunter
- login Einloggen in das Register
- docker logout Streichung aus dem Register
- docker logs Abrufen der Containerprotokolle
- pause Anhalten aller Prozesse in einem oder mehreren Containern
- port Liste der Port-Zuordnungen oder eine bestimmte Zuordnung für einen Container
- ps Ausgabe einer Liste von Containern
Arbeiten mit Docker-Images
Es ist nicht möglich, den Container ohne ein heruntergeladenes Docker-Abbild zu verwenden. Wenn keine Änderungen vorgenommen wurden, übernimmt das Dienstprogramm das Abbil vom offiziellen Hub. Sie wird Docker Hub genannt. Sie enthält alle Abbilder, die von den Entwicklern des Dienstprogramms unterstützt werden. Jeder kann Abbilder in das Hub-Register einstellen. Daher gibt es für beliebte Anwendungen, Linux-Distributionen und Applets bereits vorbereitete Abbilder im Repository.
Führen wir einen Befehl ein, um zu prüfen, ob das Docker-Image in den internen Speicher des Rechners geladen werden kann:
$ docker run hello-world
Das Dienstprogramm prüft zunächst, ob sich das angegebene Abbild im Speicher befindet. Da Docker nichts erkennt, lädt es das erforderliche Image herunter und führt es dann im Container aus:
$Output
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:3e1764d0f546ceac4565547df2ac4907fe46f007ea229fd7ef2718514bcec35d
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
...
Diese Meldung zeigt an, dass der Prozess des Herunterladens und Startens des gewünschten Abbilds ohne Fehler verläuft.
Um das gewünschte Docker-Abbild im Hub zu finden, verwenden Sie den Unterbefehl search und den Namen des gewünschten Images. Das Skript beginnt, den Inhalt des Docker-Hubs zu durchsuchen und zeigt alle Ergebnisse an, die mit den angegebenen Parametern übereinstimmen. Hinweis in der Spalte OFFICIAL. Wenn neben dem Abbild in dieser Spalte eine OK-Zeile steht, bedeutet dies, dass es sich um ein offizielles Abbild des Gründerteams handelt und nicht um einen Fork.
Um sie herunterzuladen, müssen Sie nur den Unterbefehl pull eingeben. Nehmen wir an, es handelt sich um ein Ubuntu-Image. In diesem Fall geben wir ein:
$ docker pull ubuntu
Dieses Ergebnis zeigt, dass der Prozess erfolgreich war:
$ Ausgabe
Standard-Tag verwenden: latest
latest: Pulling from library/ubuntu
6b98dfc16071: Pull complete
4001a1209541: Pull complete
6319fc68c576: Pull complete
b24603670dc3:Pull complete
97f170c87c6f: Pull complete
Digest: sha256:5f4bdc3467537cbbe563e80db2c3ec95d548a9145d64453b06939c4592d67b6d
Status: Neueres Image für ubuntu:latest heruntergeladen
Die Tabelle der installierten Abbilder kann mit dem Befehl angezeigt werden:
$ Docker-Images
Ausführen einer Container-Befehlsshell
Der RUN-Befehl wird zum Starten des Containers verwendet. Erwägen Sie die Optionen, die in Verbindung mit RUN angewendet werden können:
- -d - startet den Container im Hintergrund;
- -t - Verbindung von tty mit dem Container für Ein- und Ausgabe;
- -e - setzt Umgebungsvariablen, um die Lizenzvereinbarung zu akzeptieren und die Anfangskonfiguration zu ändern;
- -name - Zuweisung eines Namens für den Container;
- -p - veröffentlicht Container-Ports auf dem Host, um den Fernzugriff auf DSE, OpsCenter und Studio zu ermöglichen;
- -i - interaktiver Zugriff auf den Container-Befehlsprozessor
- -v - bindet ein Verzeichnis auf dem lokalen Host an diese DSE zur Konfigurationsverwaltung oder Datenspeicherung;
- --link - verbindet den DSE-Container mit OpsCenter, Studio mit DSE.
Verwenden Sie den Befehl:
$ docker run -it ubuntu
Wir führen das Ubuntu-Image mit Zugriff auf den Befehlsprozessor im interaktiven Modus aus. Sobald dies geschehen ist, navigieren wir zur Containerumgebung und ihre ID wird in der Konsole angezeigt. Wir werden diese Informationen später benötigen, wenn wir den Container für den Abtransport angeben müssen.
Alle üblichen Befehle sind innerhalb des Containers verfügbar. Da das Bild die meisten der von Ihnen benötigten Dateien nicht enthält. Daher wird eine Aktualisierung des Repository erforderlich sein:
$ apt-get update
Beachten Sie, dass der Befehl sudo nicht verwendet wird. Da die Arbeit als Superuser ausgeführt wird, ist die Eingabe des Befehls sudo nicht erforderlich. Installieren wir ein einfaches Dialogprogramm:
$ apt-get install -y dialog
Speichern von Parametern
Innerhalb des Containers ist jede Aktion möglich, Sie können Dateien erstellen, Anwendungen installieren oder Daten löschen – alle Aktionen beziehen sich auf den laufenden Container. Wenn der Container gelöscht wird, verschwinden auch alle Änderungen. Wenn Sie die Einstellungen beibehalten wollen, verwenden Sie den Befehl commit. Dadurch wird ein geänderter Container erstellt. Zunächst benötigen wir eine Liste der laufenden Container:
$ docker ps
Hier brauchen wir einen Bezeichner, führen Sie diesen Befehl aus:
$ docker commit -m "welche Änderungen wurden hinzugefügt" -a "Autorenname" container_id repository/new image name
Sobald der Vorgang abgeschlossen ist, wird der geänderte Container im Speicher abgelegt. Um es zu finden, führen Sie die Bilderliste aus:
$ docker commit -m "welche Änderungen wurden hinzugefügt" -a "Autorenname" container_id repository/new image name
Befehle zur Ausführung von Containern
Betrachten Sie die Liste der zu kontrollierenden Befehle:
- start – startet den Container, der angehalten wurde;
- stop ist der gegenteilige Wert, der das Starten des Containers stoppt;
- rm – Löschen des Containers.
Es ist nicht notwendig, einen Bezeichner anzugeben, damit der Befehl korrekt funktioniert. Sie können den Containernamen verwenden, der in einer separaten Spalte verfügbar ist
Beispiel:
$ docker start d9b100f2f636 $ docker start sharp_volhard
Docker-Container-Verwaltung
Mit dem Befehl Containerliste können Sie Optionen ausführen:
- -a. Zeigt eine Liste aller lokal verfügbaren Container an.
- -l. Gibt den zuletzt erstellten Container aus.
Resümee
Docker ist das wichtigste Dienstprogramm für die Ausführung und Verwaltung von Containern. Es ist leicht zu erlernen und auch ein Anfänger kann alle Funktionen leicht verstehen. Docker beschleunigt die Entwicklung erheblich, erleichtert die Verlagerung eines Systems von einem Server auf einen anderen und ermöglicht die Arbeit in einer sicheren Umgebung.