Einführung
Wenn Sie einen Docker-Container erstellen, wird ihm eine universell eindeutige Kennung (UUID) zugewiesen. Diese sind wichtig, um Namenskonflikte zu vermeiden und die Automatisierung ohne menschliches Eingreifen zu fördern. Sie identifizieren Container effektiv für den Host und das Netzwerk. Der Mensch muss sich jedoch mehr Mühe geben, um zu unterscheiden, ob in der von Menschen lesbaren Langanzeige mit 64 Zeichen oder in der häufiger angezeigten Kurzform mit 12 Zeichen, die etwa285c9f0f9d3d
aussehen könnte.
Um den Menschen zu helfen, liefert Docker auch Container mit einem zufällig generierten Namen aus zwei Wörtern, die durch einen Unterstrich, z. evil_ptolemy
. Dies kann es einfacher machen, einen Container von einem anderen zu unterscheiden, aber die zufälligen Namen geben keinen besseren Einblick in die Containerfunktion als die UUID.
Im Folgenden finden Sie drei Tipps, mit denen Sie sich beim Umgang mit Containern leichter zurechtfinden können.
1 - Benennen Sie den Container, wenn Sie ihn ausführen
Durch Hinzufügen von--name=meaningful_name
zum Befehldocker run
wird einevil_ptolomy
in interaktiven Sitzungen sowie in der Ausgabe von Befehlen wiedocker ps
besser erkennbar. Es gibt jedoch Einschränkungen. Da Containernamen eindeutig sein müssen, können Sie keine absichtliche Benennung verwenden und einen Dienst über einen Container hinaus skalieren.
In der Befehlszeile oder in einer Docker-Datei:
docker run --name=meaningful_name
Wenn wir beispielsweise einen Container basierend auf dem Basis-Image vonnginx
ausgeführt und wie folgt gestartet haben:
docker run --name nginx -d nginx
Der Name wird in der Liste der ausgeführten Container angezeigt:
docker ps
OutputCONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
08f333ef7216 nginx "nginx -g 'daemon off" 15 seconds ago Up 14 seconds 80/tcp, 443/tcp nginx
Während der Name in der Ausgabe vondocker ps
angezeigt wird und zum Verwalten des Containers verwendet werden kann, wird er nicht in der Eingabeaufforderung des Containers angezeigt, wenn Sie ihn anhängen oder in Protokolldateien. Dazu müssen Sie auch einen Hostnamen zuweisen.
2 - Weisen Sie dem Container einen Hostnamen zu
Der für den Befehl--hostname
angegebene Wert wird innerhalb von/etc/hostname
und/etc/hosts
im Container festgelegt. Folglich wird es in der Eingabeaufforderung angezeigt. Es spielt eine Rolle bei der Konfiguration voncontainer DNS und kann in den Lernphasen eines Multi-Container-Setups hilfreich sein. Der Zugriff von außerhalb des Containers ist nicht einfach, wird jedoch in den Protokolldateien des Containers angezeigt. Wenn diese Dateien auf ein vom Host unabhängiges Volume geschrieben werden, kann dies die Identifizierung des Containers erleichtern.
CLI and Dockerfile:docker run --hostname=value
ORdocker run -h value
Während--name
und--hostname
beide zur Identifizierung von Containern nützlich sind, geht es manchmal überhaupt nicht darum, den Container zu benennen. Es geht vielmehr darum, dass ein Container nach dem anderen aufgeräumt wird, ohne dass Sie sich daran erinnern müssen, es selbst zu tun.
3 - Container beim Verlassen automatisch löschen
Beim Debuggen ist es hilfreich, dass ein angehaltener Container nach dem Beenden bestehen bleibt. Sie können Daten wie Protokolldateien aufbewahren und den Endzustand des Containers untersuchen. Manchmal wissen Sie jedoch, wenn Sie den Container ausführen, dass Sie ihn nicht mehr benötigen, wenn Sie fertig sind. In diesem Fall können Sie das Flag--rm
verwenden, um es beim Beenden automatisch zu löschen. Dies kann es einfacher machen, die Dinge sauber zu halten.
Sei aber vorsichtig! Wenn Sie Docker-Volumes verwenden, entfernt--rm
allevolumes NOT specified by name.
CLI und Dockerfile:
docker run --rm
Dies ist sehr nützlich, wenn Sie ein Image erstellen und eine Verbindung zu einem laufenden Container herstellen müssen. Sie möchten sich umsehen und Ihre Festplatte nicht mit Containern füllen, die Sie nicht mehr verwenden möchten.
Fazit
Diese drei Flags fürdocker run
,--name
,--hostname
und--rm
können es auf ihre Weise einfacher machen, zu wissen, was was ist, wenn Sie Docker lernen. Weitere Informationen zu Containern und zum Arbeiten mit dem Befehldocker run
finden Sie im HandbuchWorking with Docker Containers.