Docker CE auf Alma Linux 9: Eine schnelle und einfache Installationsanleitung
Docker ist eine OpenSource-Software, die Virtualisierung auf Betriebssystemebene für die Entwicklung, den Versand und die Ausführung von Anwendungen bietet. In Docker werden Anwendungen als standardisierte Pakete, sogenannte Container, bereitgestellt. Jeder Container ist von den anderen isoliert, einschließlich der Bibliotheken und Konfigurationsdateien, aber jeder von ihnen kann über genau definierte Netzwerkkanäle kommunizieren.
Inzwischen ist Docker zu einem Standard für Softwareentwicklung und DevOps geworden. Millionen von Entwicklerinnen und Entwicklern nutzen Docker, um Anwendungen zu erstellen, zu teilen und auszuführen – jeden Tag bei der Arbeit. Es wird im gesamten Lebenszyklus der Anwendungsentwicklung eingesetzt, von der Entwicklung selbst über das Testen bis hin zur Produktion. Mit Docker wird die Anwendung flexibler und portabel. Anwendungen können auf einfache Weise auf verschiedenen Betriebssystemen ausgeführt werden, aber die Anwendung selbst bleibt gleich, von den Bibliotheken bis zu den Konfigurationsdateien.
In diesem Leitfaden erfährst du, wie du Docker CE (Community Edition) auf Alma Linux 9 installierst. Dieser Leitfaden behandelt auch die grundlegende Nutzung von Docker für die Verwaltung von Images, Containern und Volumes, die Arbeit mit Container-Logs und den Zugriff auf Container über Docker Host.
Voraussetzungen
Für diesen Leitfaden werden folgende Voraussetzungen benötigt:
- Einen Linux-Server mit Alma Linux 9 – In diesem Beispiel wird ein Alma Linux-Server mit dem Hostnamen„alma-linux“ und der IP-Adresse„192.168.5“ verwendet.
- Einen Nicht-Root-Benutzer mit sudo/root-Administrator-Rechten.
Hinzufügen des Docker CE Repository
Docker ist ein Orchestrierungswerkzeug für die Entwicklung, den Versand und den Betrieb von Anwendungen in Containern. Es beschleunigt den Entwicklungsprozess, denn mit Docker kannst du Anwendungsimages erstellen, ohne auf den Host-Rechner angewiesen zu sein. Das macht die Verteilung von Anwendungen an Entwickler/innen schneller und einfacher.
Docker ist eine plattformübergreifende Container-Orchestrierung, die auf Desktop und Server installiert werden kann. Wenn du einen Desktop verwendest, kannst du Docker Desktop installieren, aber wenn du einen Server verwendest, kannst du Docker Engine über das offizielle Docker-Repository installieren.
Im ersten Abschnitt wirst du das Docker CE Repository auf deinem Alma Linux Server einrichten.
Führe den folgenden Befehl aus, um das Paket„dnf-utils“ zu installieren.
sudo dnf install dnf-utils
Gib y ein, wenn du dazu aufgefordert wirst, und drücke dann ENTER, um fortzufahren.
Füge nun das Docker CE Repository mit dem folgenden dnf-Befehl hinzu.
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
Sobald das Docker CE Repository hinzugefügt wurde, überprüfe es mit dem folgenden Befehl. Dieser zeigt dir die Liste der verfügbaren Repositories auf deinem Alma Linux an.
sudo dnf repolist
Wenn du erfolgreich warst, solltest du eine Ausgabe wie diese erhalten:
Mach weiter mit dem nächsten Abschnitt zur Installation von Docker CE.
Installation von Docker CE
In diesem Abschnitt wirst du Docker CE auf dem Alma Linux Server installieren. Am Ende dieses Abschnitts wirst du Docker auf deinem System zum Laufen gebracht haben.
Installiere Docker CE mit dem folgenden dnf-Befehl. Damit installierst du Docker mit den Zusatzpaketen „docker-buildx-plugin„, dem Docker Build Plugin, das die Erstellung von Images beschleunigt, und„docker-compose-plugin„, dem Docker Compose Plugin, das die Entwicklung von Anwendungen erleichtert.
sudo dnf install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Wenn du dazu aufgefordert wirst, gibst du zur Bestätigung y ein und drückst dann ENTER, um fortzufahren.
Außerdem wirst du aufgefordert, den GPG-Schlüssel für das Docker-Repository zu bestätigen. Gib ihn zur Bestätigung ein und drücke dann ENTER.
Sobald Docker installiert ist, führe den folgenden systemctl-Befehl aus, um den Dienst „Docker“ zu starten und zu aktivieren.
sudo systemctl start docker sudo systemctl enable docker
Nach der Ausführung des Befehls läuft Docker und ist auch aktiviert, d.h. Docker wird beim Systemstart automatisch gestartet.
Führe den folgenden Befehl aus, um den Status des Docker-Dienstes zu überprüfen und sicherzustellen, dass Docker läuft.
sudo systemctl status docker
Wenn Docker läuft, solltest du eine Ausgabe wie die folgende erwarten:
Erlauben, dass Nicht-Root-Benutzer den Docker-Container ausführen können
Standardmäßig ist es nur dem Root-Benutzer erlaubt, den Container über Docker auszuführen. In diesem Abschnitt erfährst du, wie du Nicht-Root-Benutzern das Ausführen von Docker-Containern erlaubst, indem du den Benutzer zur bestehenden Gruppe„Docker“ hinzufügst.
Führe den folgenden Befehl aus, um deinen Benutzer zur Gruppe„docker“ hinzuzufügen. In diesem Beispiel wird ein Benutzer namens„testuser“ verwendet.
sudo usermod -aG docker testuser
Melde dich nun mit dem folgenden Befehl als dein Benutzer an. Führe dann den unten stehenden Befehl„docker run“ aus, um den Container„hello-world“ zu starten.
su - testuser docker run hello-world
Wenn du erfolgreich bist, solltest du eine Ausgabe wie die folgende erhalten:
Als nächstes führst du den folgenden Docker-Befehl aus, um den laufenden Container auf deinem System zu überprüfen.
docker ps docker ps -a
Der erste„docker ps„-Befehl wird keine Ausgabe haben, weil er dir nur einen laufenden Container anzeigt und der Container„hello-world“ nach der„Hello from Docker„-Meldung beendet wird. Der zweite Befehl„docker ps -a“ hingegen zeigt dir sowohl die laufenden als auch die beendeten Container an.
Grundlegende Verwendung von Docker
Du hast nun erfolgreich das Stadium erreicht, in dem Docker läuft und auch deinem Nicht-Root-Benutzer erlaubt, den Docker-Container auszuführen. Nein, jetzt geht es um die grundlegende Nutzung von Docker.
Die folgenden Schritte zeigen dir einige Szenarien zur Nutzung von Docker. Du lernst, wie du Docker-Images verwaltest, mit dem Container und dem Volume arbeitest und wie du vom Host-Rechner aus auf den Container zugreifen kannst.
Wenn alles vorbereitet ist, können wir loslegen.
Mit Images arbeiten
Im ersten Schritt wirst du mit dem Docker-Image arbeiten. Du lädst das Image herunter und überprüfst die Liste der verfügbaren Images auf deinem lokalen Rechner.
Um ein Image herunterzuladen, besuche den DockerHub und gib den Namen des Docker-Images ein, das du herunterladen möchtest. In diesem Beispiel lädst du das Image„nginx“ mit den Tags„alpine“ herunter. Wenn du auf den Reiter TAGS klickst, solltest du eine Liste der verfügbaren Versionen des Nginx-Images sehen.
Führe nun den Befehl„docker pull“ aus, um die Docker-Images herunterzuladen. In diesem Beispiel lädst du das Image„nginx:alpine“ herunter, das sich auf die neueste Version des Nginx Alpine-Images bezieht.
docker pull nginx:alpine
Nach dem Download führst du den folgenden Befehl aus, um die verfügbaren Images auf deinem Host aufzulisten. Wenn du diese Schritte von Anfang an befolgst, solltest du zwei Docker-Images sehen:„hello-world“ mit dem Tag„latest“ und„nginx“ mit dem Tag„alpine„.
docker images
Mit dem Container arbeiten
Nachdem du das Docker-Image heruntergeladen hast, kannst du nun den Container starten. In diesem Abschnitt erfährst du, wie du einen Container über Docker erstellst und ausführst.
Um einen Container zu starten, führst du den folgenden Befehl„docker run“ aus.
docker run -it -d -p 8080:80 --name web nginx:alpine
Mit diesem Befehl wird ein neuer Container namens„web“ erstellt, der auf dem Docker-Image„nginx:alpine“ basiert. Der neue Container„web“ wird auf dem Docker-Host den Port„8080“ freigeben, der dem Port 80 des Containers entspricht. Der zusätzliche Parameter„-it“ wird verwendet, um den Container im interaktiven Modus auszuführen, und der Parameter„-d“ lässt den Container im Hintergrund laufen.
Nachdem der Befehl ausgeführt wurde, solltest du eine Zufallszahl und eine Zeichenkette sehen, die die„CONTAINER ID“ ist.
Führe nun den folgenden Befehl aus, um die Liste der laufenden Container zu überprüfen.
docker ps
Du solltest eine Ausgabe wie diese erwarten – Der Container„web“ hat den Status„Up“ und den Port 8080 auf dem Docker-Host offen.
Als Nächstes führst du den unten stehenden curl-Befehl aus, um auf den Container „web“ zuzugreifen, der auf Port 8080 zu finden ist. Wenn du erfolgreich bist, solltest du den HTML-Quellcode des Containers„web“ sehen.
curl http://192.168.5.43:8080/
Wenn du von außerhalb des Netzwerks auf deinen Container zugreifen willst, musst du den Port 8080 auf deinem Alma-Linux-Server mit dem unten stehenden Befehl„firewall-cmd“ öffnen.
sudo firewall-cmd --add-port=8080/tcp --permanent sudo firewall-cmd --reload
Öffne nun den Webbrowser auf deinem lokalen Rechner und rufe die IP-Adresse des Servers gefolgt von Port 8080 auf (d.h.: http://192.168.5.43:8080/). Du solltest eine Ausgabe der index.html Seite für den Container„web“ erwarten.
Container Logging
Logging ist in Docker wichtig, besonders wenn du Images für deine Anwendungen entwickelst. Logging hilft dir, deine Anwendungsentwicklung zu debuggen.
Führe den folgenden Befehl aus, um vollständige Logs des Containers„web“ zu erhalten.
docker logs web
Unten siehst du die ähnliche Ausgabe, die du vom Container„web“ erhältst.
Du kannst die Ausgabe der Logs auch mit dem Parameter„tail“ einschränken, siehe unten. Dieser Befehl zeigt dir die letzten 5 Zeilen der Logs des Containers„web“ an.
docker logs --tail 5 web
Container verwalten
In diesem Abschnitt lernst du, wie du einen Container verwalten kannst. Du erfährst, wie du den Container starten, stoppen und entfernen kannst.
Um den Container„web“ zu stoppen, führst du den unten stehenden Befehl„docker stop“ aus.
docker stop web
Überprüfe nun den Container mit dem folgenden Befehl. Du solltest eine Ausgabe des Containers„web“ mit dem Status„Exited“ erhalten.
docker ps docker ps -a
Um den Container„web“ wieder zu starten, führe den Befehl„docker start“ aus. Überprüfe dann die Liste der laufenden Container mit dem Befehl„docker ps„.
docker start web docker ps
Du solltest eine Ausgabe erhalten, dass der Container„web“ mit dem Status„Up“ läuft.
Zum Schluss führst du den folgenden Befehl aus, um den Container„web“ zu entfernen. Bevor du den Container löschst, musst du ihn zunächst stoppen.
docker stop web docker rm web
Wenn du die Containerliste mit dem Befehl„docker ps“ überprüfst, solltest du eine Ausgabe erwarten, dass der Container„web“ gelöscht wurde.
docker ps -a
Arbeiten mit Volume
Volume ist der Ort, an dem du dein lokales Volume/Verzeichnis an den Container angehängt hast. Du kannst davon ausgehen, dass ein Volume wie ein„gemeinsamer Ordner“ in der virtuellen Maschine ist. In diesem Abschnitt wirst du einen neuen Container mit einem benutzerdefinierten Volume erstellen, das es dir ermöglicht, das lokale Verzeichnis an den Container anzuhängen.
Erstelle zunächst ein neues Projektverzeichnis„~/project/data“ und verschiebe dein Arbeitsverzeichnis dorthin.
mkdir -p ~/project/data; cd ~/project
Führe nun den folgenden Befehl aus, um eine neue Datei„data/index.html“ zu erstellen. Diese Datei wird die standardmäßige index.html-Seite des neuen Containers„web“ ersetzen.
cat > data/index.html << EOF <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <title>Welcome to Docker Nginx</title> </head> <body> <h2>Hello from Nginx container</h2> </body> </html> EOF
Führe nun den folgenden Befehl aus, um einen neuen Container„web“ mit dem benutzerdefinierten Volume über den Parameter„-v“ zu erstellen und zu starten. In diesem Beispiel wirst du das lokale Verzeichnis„~/project/data“ in den Container „web“ mit dem Zielverzeichnis„/usr/share/nginx/html“ mounten. Die zusätzliche Option ‚:ro‚ macht das Verzeichnis‚/usr/share/nginx/html‚ im Container schreibgeschützt, während auf dem Host-Rechner Lesen und Schreiben weiterhin erlaubt sind.
docker run -it -d -p 8080:80 --name web -v ~/project/data:/usr/share/nginx/html:ro nginx:alpine
Als Nächstes führst du den folgenden Befehl aus, um sicherzustellen, dass der neue Container„web“ läuft.
docker ps
Wenn er erfolgreich ist, solltest du eine Ausgabe wie die folgende erwarten – Der Container„web“ läuft und hat den Port 8080 auf dem Host-Rechner freigegeben.
Führe nun den folgenden curl-Befehl aus, um auf den Container„web“ zuzugreifen. Wenn alles glatt läuft, solltest du den Quellcode der benutzerdefinierten index.html Seite sehen, die du erstellt hast.
curl http://192.168.5.43:8080/
Unten siehst du die Seite index.html, wenn du sie mit dem Webbrowser aufrufst (z. B. http://192.168.5.43:8080/).
Zugriff auf den Container vom Host aus
Um auf den Container zuzugreifen und dich dort anzumelden, kannst du den Befehl „docker exec“ verwenden, mit dem du die Befehle ausführen kannst, die im Container verfügbar sind.
Führe den folgenden Befehl aus, um dich am Container„web“ anzumelden. Dadurch wird der Befehl„/bin/sh“ im Container„web“ ausgeführt und der Parameter„-it“ führt dich direkt zum Container.
docker exec -it web /bin/sh
Sobald du im Container eingeloggt bist, führe den folgenden Befehl aus, um den genauen Hostnamen deines Containers zu überprüfen. Der Hostname des Containers sollte mit der„CONTAINER ID“ übereinstimmen.
id hostname
Als Nächstes führst du den folgenden Befehl aus, um die IP-Adresse und das Standard-Gateway des Containers zu überprüfen.
ip a route -n
Du solltest eine Ausgabe wie die folgende erwarten:
Da der Container „web“ den Nginx-Prozess ausführt, kannst du mit dem folgenden curl-Befehl über die lokale IP-Adresse auf deinen Container zugreifen. In diesem Beispiel lautet die IP-Adresse des Containers„172.17.0.2„. Du solltest die gleiche index.html Seite erhalten.
curl 172.17.0.2
Fazit
Nach diesem Leitfaden solltest du wissen, wie du Docker unter Alma Linux 9 installierst. Außerdem hast du das Szenario für die grundlegende Nutzung von Docker zur Verwaltung von Images und Containern, die Protokollierung von Containern zu Debug-Zwecken, die Arbeit mit Docker-Volumen und die grundlegende Nutzung von „docker exec“ zur Anmeldung am Container abgeschlossen.