Einführung
Docker ist eine Plattform, die das Ausführen und Verwalten von Anwendungsprozessen in Containern erleichtert. Sie bietet eine Möglichkeit, Ihre Anwendungen von Ihrer Infrastruktur zu trennen. Container sind virtuellen Maschinen sehr ähnlich, aber sie sind portabler, effizienter und einfacher zu bedienen. Es gibt verschiedene Möglichkeiten, Docker auf Linux-Distributionen zu installieren. Die beliebteste und einfachste Methode, Docker auf dem bestehenden Betriebssystem zu installieren, ist die Verwendung von yum-Befehlen.
Dieses Tutorial zeigt Ihnen, wie Sie Docker auf CentOS 7 in wenigen einfachen Schritten einrichten und verwenden können.
Voraussetzungen:
- 64-Bit CentOS 7-Instanz.
- Ein Nicht-Root-Benutzer mit sudo-Rechten.
Alle Befehle, die Sie in diesem Tutorial ausführen, werden als Nicht-Root-Benutzer ausgeführt, und falls erforderlich, wird der Root-Zugriff über das Schlüsselwort sudo bereitgestellt.
Schritt 1: Einrichten von Docker auf einer CentOS 7-Instanz
Das offizielle CentOS 7-Repository enthält möglicherweise nicht das neueste Installationspaket für Docker. In diesem Abschnitt installieren Sie die neueste Version von Docker aus dem offiziellen Docker-Repository. Zuerst müssen Sie die Paketdatenbank aktualisieren mit:
|
1 |
sudo yum check-update |
Nachdem der Aktualisierungsschritt abgeschlossen ist, führen Sie den folgenden Befehl aus, um die neueste Version von Docker herunterzuladen und zu installieren:
|
1 |
curl -fsSL https://get.docker.com/ | sh |
Docker ist nun installiert, daher können Sie den Docker-Daemon starten, indem Sie den folgenden Befehl ausführen:
|
1 |
sudo systemctl start docker |
Um zu überprüfen, ob der Docker-Daemon läuft, geben Sie Folgendes ein:
|
1 |
sudo systemctl status docker |
Die Ausgabe des Befehls systemctl status sollte der unten gezeigten Ausgabe ähneln, die zeigt, dass er läuft:
|
1 2 3 4 5 6 |
Ausgabe: ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-02-17 18:22:06 UTC; 10s ago Docs: https://docs.docker.com Main PID: 21884 (dockerd) |
Um schließlich sicherzustellen, dass Docker beim Neustart Ihres Rechners gestartet wird, verwenden Sie den Befehl:
|
1 |
sudo systemctl enable docker |
Die Docker-Installation stellt Ihnen sowohl den Docker-Dienst als auch das Client-Dienstprogramm (Docker-Befehlszeilen-Client) zur Verfügung. In den nächsten Abschnitten des Tutorials werden Sie mehr praktische Erfahrung mit den Docker-Befehlen sammeln können.
Sie können auch einen Blick auf unser ausführliches Tutorial zur Installation & zum Betrieb von Docker auf Ubuntu in der Public Cloud werfen.
Schritt 2: Verwenden von Docker-Befehlen ohne Sudo-Präfix
Docker-Befehle erfordern Root-Rechte zur Ausführung. Wenn Sie die Befehle ausführen möchten, müssen Sie ihnen daher sudo voranstellen. Bei der Installation wird standardmäßig eine Docker-Gruppe erstellt. Wenn Sie einen Benutzer zu dieser Gruppe hinzufügen, können Sie die Docker-Befehle ohne sudo ausführen. Der Versuch, Docker-Befehle ohne sudo auszuführen oder den Benutzer zur Gruppe hinzuzufügen, führt zu einer Ausgabe ähnlich der folgenden:
|
1 2 3 |
Ausgabe: docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'. |
Wenn Sie Ihren Benutzernamen zur Docker-Gruppe hinzufügen, müssen Sie sudo nicht mehr verwenden, um die Docker-Befehle auszuführen:
|
1 |
sudo usermod -aG docker $(whoami) |
Um einen anderen Benutzer zur Docker-Gruppe hinzuzufügen, können Sie einfach den Benutzernamen im Befehl ersetzen:
|
1 |
sudo usermod -aG docker username |
Für den Rest dieser Anleitung gehen wir davon aus, dass alle Befehle von einem Benutzer in der Docker-Benutzergruppe ausgeführt werden. Wenn dies nicht der Fall ist, können Sie den Befehlen das Präfix sudo voranstellen.
Schritt 3: Ausführen der Docker-Befehle
Da Sie Docker nun installiert haben und es ausgeführt wird, werfen wir einen Blick auf einige Befehle, um uns mit dem Docker-Befehlszeilenprogramm vertraut zu machen. Docker-Befehle haben normalerweise folgende Form:
|
1 |
docker [Option] [Befehl] [Argumente] |
Um alle verfügbaren Unterbefehle zu finden, sollten Sie Folgendes verwenden:
|
1 |
docker |
Seit Docker 20.10.3, enthält die vollständige Liste der verfügbaren Unterbefehle:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Ausgabe: attach Anhängen lokaler Standard-Eingabe-, Ausgabe-, und Fehler-Ströme an einen laufenden Container build Erstellen eines Images aus einem Dockerfile commit Erstellen eines neuen Images aus den Änderungen eines Containers cp Kopieren von Dateien/Ordnern zwischen einem Container und dem lokalen Dateisystem create Einen neuen Container erstellen diff Änderungen an Dateien oder Verzeichnissen auf dem Dateisystem eines Containerss untersuchen events Echtzeit-Ereignisse vom Server abrufenthe server exec Ausführen eines Befehls in einem laufenden Container export Exportieren des Dateisystems' eines Containers als ein Tar-Archiv history Anzeigen der Historie eines Imagesimage images Auflisten von Images import Importieren des Inhalts aus einem Tarball, um ein Dateisystem- Image zu erstellen info Anzeigen systemweiter-wide Informationen inspect Zurückgeben von Low--Level-Informationen über Docker-Objekte kill Gewaltsames Beenden eines oder mehrerer laufender Container load Laden eines Images aus einem Tar-Archiv oder STDIN login Anmelden bei einer Docker- Registryregistry logout Abmelden von einer Docker- Registryregistry logs Abrufen der Protokolle eines Containers container pause Anhalten aller Prozesse in einem oder mehrerenContainer port Auflisten der Port-Mappings oder eines spezifischen Mappings für den Container ps Container auflisten pull Herunterladen eines Images oder eines Repositorys aus einer Registry push Hochladen eines Images oder eines Repositorys in eine Registry rename Umbenennen eines Containers restart Neustarten eines oder mehrerer Container rm Entfernen eines oder mehrerer Container rmi Entfernen eines oder mehrerer Images run Ausführen eines Befehls in einem neuen Container save Speichern eines oder mehrerer Images in ein Tar-Archiv, (standardmäßig als Stream an STDOUT gesendetdefault) search Suchen im Docker Hub nach Images start Starten eines oder mehrerer gestoppter Container stats Anzeigen eines Live-Streams der Container-(Ressourcen-) nutzungs-statistikenstatistics stop Stoppen eines oder mehrerer laufender Container tag Erstellen eines Tags TARGET_IMAGE, das auf to SOURCE_IMAGE verweist top Anzeigen der laufenden Prozesse eines a Containers unpause Fortsetzen aller Prozesse in einem oder mehreren Containern update Aktualisieren der Konfiguration von einem oder mehreren Containern version Anzeigen der Docker-Versions-informationen wait Blockieren, bis ein oder mehrere Container stoppen, , dann deren Exit-Codes ausgebencodes |
Sie können das Flag –help mit einem bestimmten Befehl verwenden, um weitere Informationen darüber zu erhalten:
|
1 |
docker subcommand --help |
Um detaillierte Informationen über das System zu erhalten, verwenden Sie:
|
1 |
docker info |
Schritt 4: Arbeiten mit Docker-Images
Docker-Images können als Vorlage für Docker-Container bezeichnet werden. Diese Images werden normalerweise aus dem Docker Hub heruntergeladen, einer vom Docker-Projekt verwalteten Registry. Jeder kann seine Images auf dem Docker Hub erstellen und hochladen. Dadurch können Sie in der Registry ganz einfach eine Vielzahl von Anwendungen und Betriebssystem-Distributionen finden. Probieren wir ein einfaches Programm aus, das den Zugriff auf den Docker Hub bestätigt:
|
1 |
docker run hello-world |
Sie sollten eine Ausgabe wie unten erhalten, die zeigt, dass Docker funktioniert:
|
1 2 3 4 |
Ausgabe: Hello from Docker! Diese Nachricht zeigt, dass Ihre Installation anscheinend korrekt funktioniertworking correctly. ... |
Sie können verschiedene Docker-Images auf dem Docker Hub mithilfe des Suchbefehls finden. Sehen Sie sich beispielsweise den folgenden Befehl an, um nach einem CentOS-Image zu suchen:
|
1 |
docker search centos |
Die Suchanfrage zeigt eine Liste aller Images an, die mit der Teilzeichenfolge übereinstimmen. In Ihrem Fall sollte die Ausgabe wie folgt aussehen:
|
1 2 3 4 5 6 7 8 |
Ausgabe: NAME BESCHREIBUNG STARS OFFIZIELL AUTOMATISIERT centos Das offizielle Build von CentOS. 6410 [OK] ansible/centos7-ansible Ansible on Centos7 132 [OK] consol/centos-xfce-vnc Centos Container mit "headless" VNC-Sitzung… 125 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos… 117 [OK] centos/systemd systemd aktivierter Basis-Container. 96 [OK] ... |
In den Suchergebnissen gibt es verschiedene Spalten, die Informationen über das Image beschreiben. Das OK in der Spalte OFFICIAL bestimmt, dass das Image von dem Unternehmen hinter der Anwendung erstellt und unterstützt wurde. Sobald Sie das Image finalisiert haben, können Sie es mit dem Befehl Docker pull auf Ihren lokalen Computer herunterladen:
|
1 |
docker pull centos |
Nach dem Herunterladen des Images können Sie den Container mit dem Befehl Docker run ausführen. Wenn Sie direkt versuchen, ein Image ohne vorheriges Herunterladen auszuführen, lädt Docker das Image herunter und führt den Container anschließend aus:
|
1 |
docker run centos |
Sie können die auf Ihren lokalen Computer heruntergeladenen Images mit dem folgenden Befehl auflisten:
|
1 |
docker images |
Sie sollten eine ähnliche Ausgabe erhalten:
|
1 2 3 4 |
Ausgabe: REPOSITORY TAG IMAGE ID ERSTELLT GRÖSSE centos latest 300e315adb2f 2 Monate her 209MB hello-world latest bf756fb1ae65 13 Monate her 13.3kB |
Später in diesem Tutorial werden Sie in der Lage sein, die Images zu ändern, um die Container auszuführen. Diese neuen Images können im Docker Hub und anderen Registries, die Docker-Images hosten, hinzugefügt oder gepusht werden.
Schritt 5: Einen Container interaktiv ausführen
Es gibt verschiedene Arten von Containern. Der hello-world-Container, den Sie in Schritt 4 ausgeführt haben, ist ein Containertyp, der nach der Ausgabe einer Nachricht ausgeführt und beendet wird. Ein anderer Containertyp ist der interaktive Container. Sie können interaktive Container in ähnlicher Weise wie eine virtuelle Maschine verwenden.
Lassen uns einen Container aus dem neuesten CentOS-Image erstellen. Die Verwendung der Flags -i und -t im Befehl Docker run ermöglicht den interaktiven Zugriff auf den CentOS-Container:
|
1 |
docker run -it centos |
Die Eingabeaufforderung ändert sich und sollte wie die folgende Ausgabe aussehen:
|
1 2 |
Ausgabe: [root@3ce69d2a35b9 /]# |
|
1 |
Hinweis: Die Container-ID, die in der Eingabeaufforderung angezeigt wird, ist eindeutig und sie wird später nützlich sein, , im Beispiel ist es die 3ce69d2a35b9. |
Jetzt wird jeder Befehl, den Sie ausführen, innerhalb des Containers ausgeführt. Das ist ähnlich wie das Ausführen eines Befehls in einer virtuellen Maschine. Versuchen wir, MySQL-Server im CentOS-Container zu installieren. Sie können dies tun mit:
|
1 |
yum install mysql |
Schritt 6: Änderungen in einem Container in ein Docker-Image übertragen
Nach dem Starten des Containers können Sie alle Operationen durchführen, die auch in einer ähnlichen virtuellen Maschine möglich sind, wie das Erstellen/Ändern von Dateien oder das Einrichten einer App. Bitte beachten Sie, dass diese Änderungen nur für diesen Container erhalten bleiben und nach dem Löschen des Containers die vorgenommenen Änderungen verloren gehen.
In diesem Teil des Tutorials erfahren Sie, wie Sie aus einem Container mit den von Ihnen vorgenommenen Änderungen ein neues Docker-Image erstellen. Nach Schritt 5 haben Sie einen CentOS-Container mit installiertem MySQL-Server am Laufen. Dieser Container unterscheidet sich nun vom reinen CentOS-Image. Sie können diesen Zustand des Containers für die weitere Verwendung speichern. Zuerst müssen Sie den Container verlassen mit:
|
1 |
exit |
Übertragen Sie die im Container vorgenommenen Änderungen mit dem folgenden Befehl in ein neues Docker-Image:
|
1 |
docker commit -m "Änderungen am Image vorgenommen" -a "Name des Autors" container-id repository/neuer_image_name |
In dem Befehl bezieht sich -m auf die Commit-Nachricht und sollte im Wesentlichen die vorgenommenen Änderungen beschreiben, das -a-Tag wird verwendet, um den Autor zu nennen. Die Container-ID ist diejenige aus Schritt 5, die Sie nach dem Ausführen des Containers im interaktiven Modus erhalten haben, und normalerweise ist das Repository Ihr Benutzername für Docker Hub. Zum Beispiel:
|
1 |
docker commit -m "added mysql-server" -a "CloudSigma" 59839a1b7de2 finid/centos-mariadb |
|
1 |
Hinweis: Nachdem das neue Image übertragen wurde, wird es auf Ihrem System gespeichert. In den nächsten Phasen dieses Tutorials werden , Sie lernen, wie man ein Image zu Docker Hub und ähnlichen Registries pusht, die Docker-Images hostenhost docker images. Sobald Ihr Image in die Registry hochgeladen wurde, , kann es auch von anderen abgerufen werden well. |
Nachdem das Image nun übertragen wurde, sollte der Befehl „docker images“ sowohl das neue als auch die alten Images auflisten:
|
1 |
docker images |
Die Ausgabe des Befehls sollte ähnlich wie folgt aussehen:
|
1 2 3 4 5 |
Ausgabe: REPOSITORY TAG IMAGE ID CREATED SIZE cloudsigma23/centos-mysql latest 1b9368efea70 13 Sekunden vor 308MB centos latest 300e315adb2f 2 Monaten vor 209MB hello-world latest bf756fb1ae65 13 Monaten vor 13.3kB |
Wie im Beispiel zu sehen ist, wird ein neues Image centos-mysql unter Verwendung des CentOS-Images aus dem Docker Hub erstellt. Der Größenunterschied zeigt, dass einige Änderungen vorgenommen wurden. In diesem Beispiel war es das Hinzufügen des MySQL-Servers im Container. Wenn Sie das nächste Mal einen Container mit einem MySQL-Server benötigen, können Sie einfach das neue Image ausführen, und voilà! Sie haben einen CentOS-Container mit einem vorinstallierten MySQL-Server am Laufen.
Schritt 7: Verwalten von Docker-Containern
Da Sie nun mit Docker vertraut sind, haben Sie nach einiger Zeit der Nutzung bereits einige laufende und einige inaktive Container. Um die Liste der aktiven Container abzurufen, sollten Sie Folgendes verwenden:
|
1 |
docker ps |
Sie sollten eine ähnliche Ausgabe sehen:
|
1 2 3 |
Ausgabe: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 604c889cf404 centos "/bin/bash" 20 Minuten her Up 20 Minuten intelligent_easley |
Um sowohl die aktiven als auch die inaktiven Container aufzulisten, sollten Sie das Flag -a mit dem Befehl verwenden:
|
1 |
docker ps -a |
Um den letzten von Ihnen erstellten Container zu finden, können Sie das Flag -l angeben:
|
1 |
docker ps -l |
Um einen laufenden/aktiven Container zu stoppen, führen Sie einen einfachen Befehl aus:
|
1 |
docker stop container-id |
Sie finden die Container-ID in der Ausgabe des Befehls „docker ps“.
Schritt 8: Veröffentlichen der Images in einem Repository
Der nächste Schritt nach dem Erstellen des neuen Images besteht darin, es mit Ihren Freunden zu teilen. Sie können es auch über Docker Hub oder eine andere Registry für die ganze Welt verfügbar machen. Sie müssen sich bei der jeweiligen Registry anmelden, bevor Sie das Image pushen.
Im nächsten Teil des Tutorials erfahren Sie, wie Sie die Images auf Docker Hub pushen. Registrieren Sie sich zuerst bei Docker Hub. Sie müssen sich bei Docker Hub anmelden, um Ihr Image mit dem folgenden Befehl zu pushen:
|
1 |
docker login -u docker-registry-username |
Sobald Sie das richtige Passwort eingegeben haben und die Authentifizierung erfolgreich war, können Sie Ihr Image pushen. Verwenden Sie zum Pushen des Images den folgenden Befehl:
|
1 |
docker push docker-registry-username/docker-image-name |
Die Ausgabe für den Befehl sieht ähnlich wie folgt aus:
|
1 2 3 4 5 |
Ausgabe: The push refers to repository [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Pushed 2653d992f4ef: Mounted from library/centos ... |
Sobald Sie das Image gepusht haben, sollte es im Dashboard Ihres Kontos angezeigt werden, wie in der Abbildung unten dargestellt:

Im Falle eines Fehlschlags auf ähnliche Weise besteht die Wahrscheinlichkeit, dass Sie nicht eingeloggt sind:
|
1 2 3 4 5 6 7 |
Ausgabe: The push refers to repository [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Layer already exists 2653d992f4ef: Layer already exists errors: denied: requested access to the resource is denied unauthorized: authentication required |
Sie können sich anmelden und den Push-Versuch wiederholen.
Fazit
Es gibt eine Vielzahl von Möglichkeiten, wie Sie Docker nutzen können. Dieses Tutorial sollte Ihnen genügend Informationen für den Einstieg bieten. Und da Docker ein wirklich trendiges Projekt ist, finden Sie viele Details zur Nutzung sowie verschiedene Anwendungsfälle auf der Blog-Seite des Projekts.
Sie können sich auch unsere anderen Docker-Tutorials ansehen, um mehr darüber zu erfahren, was Sie mit Docker tun können:
- Docker-Ressourcen bereinigen – Images, Container und Volumes
- Bereitstellung von Laravel, Nginx und MySQL mit Docker Compose
- Betreiben Sie Ihren eigenen VPN-Server unter Docker mit OpenVPN Access Server
Viel Spaß beim Computing!
Kommentare
Noch keine Kommentare. Schreiben Sie den ersten.