Docker ist eine Containerisierungstechnologie, mit der Sie Anwendungen schnell als tragbare, autarke Container erstellen, testen und bereitstellen können, die praktisch überall ausgeführt werden können.
In diesem Tutorial gehen wir durch die Installation von Docker CE auf CentOS 7 und untersuchen die grundlegenden Docker-Konzepte und -Befehle.
Voraussetzungen #
Bevor Sie mit diesem Lernprogramm fortfahren, stellen Sie sicher, dass die folgenden Voraussetzungen erfüllt sind:
- CentOS 7-Server
- Sie sind als Nicht-Root-Benutzer mit sudo-Berechtigungen angemeldet. In dieser Anleitung erfahren Sie, wie Sie einen neuen sudo-Benutzer erstellen.
Installieren Sie Docker unter CentOS #
Obwohl das Docker-Paket im offiziellen CentOS 7-Repository verfügbar ist, ist es möglicherweise nicht immer die neueste Version. Der empfohlene Ansatz besteht darin, Docker aus den Docker-Repositories zu installieren.
Führen Sie die folgenden Schritte aus, um Docker auf Ihrem CentOS 7-Server zu installieren:
-
Beginnen Sie mit der Aktualisierung Ihrer Systempakete und installieren Sie die erforderlichen Abhängigkeiten:
sudo yum update
sudo yum install yum-utils device-mapper-persistent-data lvm2
-
Führen Sie als Nächstes den folgenden Befehl aus, der das stabile Docker-Repository zu Ihrem System hinzufügt:
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
-
Nachdem das Docker-Repository aktiviert ist, installieren Sie die neueste Version von Docker CE (Community Edition) mit yum, indem Sie Folgendes eingeben:
sudo yum install docker-ce
-
Sobald das Docker-Paket installiert ist, starten Sie den Docker-Daemon und aktivieren Sie ihn so, dass er beim Booten automatisch gestartet wird:
sudo systemctl start docker
sudo systemctl enable docker
-
Um zu überprüfen, ob der Docker-Dienst ausgeführt wird, geben Sie Folgendes ein:
sudo systemctl status docker
Die Ausgabe sollte in etwa so aussehen:
● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; enabled; vendor preset: disabled) Active: active (running) since Wed 2018-10-31 08:51:20 UTC; 7s ago Docs: https://docs.docker.com Main PID: 2492 (dockerd) CGroup: /system.slice/docker.service ├─2492 /usr/bin/dockerd └─2498 docker-containerd --config /var/run/docker/containerd/containerd.toml
-
Zum Zeitpunkt des Schreibens ist die aktuelle stabile Version von Docker
18.06.1
, um die Docker-Version zu drucken, geben Sie Folgendes ein:docker -v
Docker version 18.06.1-ce, build e68fc7a
Ausführen des Docker-Befehls ohne Sudo #
Standardmäßig erfordert die Verwaltung von Docker Administratorrechte. Wenn Sie Docker-Befehle als Nicht-Root-Benutzer ausführen möchten, ohne sudo
voranzustellen Sie müssen Ihren Benutzer zur Docker-Gruppe hinzufügen, die während der Installation des Docker-CE-Pakets erstellt wird. Geben Sie dazu Folgendes ein:
sudo usermod -aG docker $USER
$USER
ist eine Umgebungsvariable, die Ihren Benutzernamen enthält.
Melden Sie sich ab und wieder an, damit die Gruppenmitgliedschaft aktualisiert wird.
Um zu überprüfen, ob Docker erfolgreich installiert wurde und ob Sie Docker-Befehle ohne sudo ausführen können, führen Sie den folgenden Befehl aus, der ein Test-Image herunterlädt, es in einem Container ausführt, eine „Hello from Docker“-Nachricht ausgibt und beendet:
docker container run hello-world
Die Ausgabe sollte wie folgt aussehen:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
9bb5a5d4561a: Pull complete
Digest: sha256:f5233545e43561214ca4891fd1157e1c3c563316ed8e237750d59bde73361e77
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Docker-Befehlszeilenschnittstelle #
Nachdem wir nun eine funktionierende Docker-Installation haben, gehen wir die grundlegende Syntax der Docker-CLI durch.
Die Docker-Befehlszeile hat folgende Form:
docker [option] [subcommand] [arguments]
Sie können alle verfügbaren Befehle auflisten, indem Sie docker
eingeben ohne Parameter:
docker
Wenn Sie weitere Hilfe zu einem [subcommand]
benötigen , geben Sie einfach ein:
docker [subcommand] --help
Docker-Images #
Ein Docker-Image besteht aus einer Reihe von Ebenen, die Anweisungen in der Docker-Datei des Images darstellen, die eine ausführbare Softwareanwendung bilden. Ein Image ist eine unveränderliche Binärdatei, die die Anwendung und alle anderen Abhängigkeiten wie Binärdateien, Bibliotheken und Anweisungen enthält, die zum Ausführen der Anwendung erforderlich sind. Kurz gesagt, ein Docker-Image ist im Wesentlichen ein Snapshot eines Docker-Containers.
Der Docker-Hub ist ein Cloud-basierter Registrierungsdienst, der unter anderem dazu dient, die Docker-Images entweder in einem öffentlichen oder privaten Repository zu halten.
Um das Docker-Hub-Repository nach einem Image zu durchsuchen, verwenden Sie einfach die search
Unterbefehl. Um beispielsweise nach dem CentOS-Image zu suchen, führen Sie Folgendes aus:
docker search centos
Die Ausgabe sollte wie folgt aussehen:
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 4257 [OK]
ansible/centos7-ansible Ansible on Centos7 109 [OK]
jdeathe/centos-ssh CentOS-6 6.9 x86_64 / CentOS-7 7.4.1708 x86_… 94 [OK]
consol/centos-xfce-vnc Centos container with "headless" VNC session… 52 [OK]
imagine10255/centos6-lnmp-php56 centos6-lnmp-php56 40 [OK]
tutum/centos Simple CentOS docker image with SSH access 39
Wie Sie sehen können, druckt das Suchergebnis eine Tabelle mit fünf Spalten, NAME
, DESCRIPTION
, STARS
, OFFICIAL
und AUTOMATED
. Das offizielle Image ist ein Image, das Docker gemeinsam mit Upstream-Partnern entwickelt.
Wenn wir den offiziellen Build von CentOS 7 herunterladen möchten, können wir dies tun, indem wir den image pull
verwenden Unterbefehl:
docker image pull centos
Using default tag: latest
latest: Pulling from library/centos
469cfcc7a4b3: Pull complete
Digest: sha256:989b936d56b1ace20ddf855a301741e52abca38286382cba7f44443210e96d16
Status: Downloaded newer image for centos:latest
Abhängig von Ihrer Internetgeschwindigkeit kann der Download einige Sekunden oder einige Minuten dauern. Sobald das Bild heruntergeladen ist, können wir die Bilder auflisten mit:
docker image ls
Die Ausgabe sollte in etwa so aussehen:
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest e38bc07ac18e 3 weeks ago 1.85kB
centos latest e934aafc2206 4 weeks ago 199MB
Wenn Sie aus irgendeinem Grund ein Bild löschen möchten, können Sie dies mit image rm [image_name]
tun Unterbefehl:
docker image rm centos
Untagged: centos:latest
Untagged: centos@sha256:989b936d56b1ace20ddf855a301741e52abca38286382cba7f44443210e96d16
Deleted: sha256:e934aafc22064b7322c0250f1e32e5ce93b2d19b356f4537f5864bd102e8531f
Deleted: sha256:43e653f84b79ba52711b0f726ff5a7fd1162ae9df4be76ca1de8370b8bbf9bb0
Docker-Container #
Eine Instanz eines Bildes wird Container genannt. Ein Container stellt eine Laufzeit für eine einzelne Anwendung, einen Prozess oder einen Dienst dar.
Es ist vielleicht nicht der geeignetste Vergleich, aber wenn Sie ein Programmierer sind, können Sie sich ein Docker-Image als Klasse und einen Docker-Container als Instanz einer Klasse vorstellen.
Mit dem docker container
können wir einen Container starten, stoppen, entfernen und verwalten Unterbefehl.
Der folgende Befehl startet einen Docker-Container basierend auf dem CentoOS-Image. Wenn Sie das Bild nicht lokal haben, wird es zuerst heruntergeladen:
docker container run centos
Auf den ersten Blick mag es Ihnen scheinen, als wäre überhaupt nichts passiert. Nun, das stimmt nicht. Der CentOS-Container stoppt sofort nach dem Hochfahren, da er keinen lang andauernden Prozess hat und wir keinen Befehl angegeben haben, also startete der Container, führte einen leeren Befehl aus und wurde dann beendet.
Der Schalter -it
ermöglicht es uns, über die Befehlszeile mit dem Container zu interagieren. Um einen interaktiven Container zu starten, geben Sie Folgendes ein:
docker container run -it centos /bin/bash
Wie Sie der Ausgabe entnehmen können, ändert sich nach dem Start des Containers die Eingabeaufforderung, was bedeutet, dass Sie jetzt aus dem Container heraus arbeiten:
[root@719ef9304412 /]#
Geben Sie Folgendes ein, um laufende Container aufzulisten:
docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79ab8e16d567 centos "/bin/bash" 22 minutes ago Up 22 minutes ecstatic_ardinghelli
Wenn Sie keine laufenden Container haben, ist die Ausgabe leer.
Um sowohl laufende als auch angehaltene Container anzuzeigen, übergeben Sie ihm den -a
Schalter:
docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
79ab8e16d567 centos "/bin/bash" 22 minutes ago Up 22 minutes ecstatic_ardinghelli
c55680af670c centos "/bin/bash" 30 minutes ago Exited (0) 30 minutes ago modest_hawking
c6a147d1bc8a hello-world "/hello" 20 hours ago Exited (0) 20 hours ago sleepy_shannon
Um einen oder mehrere Container zu löschen, kopieren Sie einfach die Container-ID (oder IDs) von oben und fügen Sie sie nach dem container rm
ein Unterbefehl:
docker container rm c55680af670c