Ein Dockerfile beschreibt die Erstellung eines Docker-Image, während Docker Compose ein Befehl zum Ausführen eines Docker-Containers ist.
Was ist ein Dockerfile?
Ein Dockerfile ist ein Textdokument, das alle Befehle enthält, die ein Benutzer zur Erstellung eines Docker-Image benötigt. Dies wiederum ist eine Datei, die zur Ausführung von Code in einem Docker-Container verwendet wird. Wenn ein Benutzer den Docker-Befehl „run“ ausführt und WordPress angibt, verwendet Docker diese Datei (das Dockerfile) für die Erstellung des Image.
Was ist Docker Compose?
Docker Compose ist ein Tool zum Definieren und Ausführen von Docker-Containern, das Konfigurationsdaten aus einer YAML-Datei ausliest. YAML ist eine menschenlesbare Sprache zur Datenserialisierung, die häufig für Konfigurationsdateien und in Anwendungen verwendet wird, in denen Daten gespeichert oder übertragen werden.
Dockerfile versus Docker Compose: Wichtige Unterschiede
Dockerfile versus Docker Compose: Übersicht
Zwar wurden beide von Docker erfunden und sind Teil des Docker-Universums, aber Dockerfile und Docker Compose sind zwei verschiedene Dinge mit unterschiedlichen Funktionen. Ein Dockerfile ist ein Textdokument mit einer Reihe von Befehlen für die Erstellung eines Docker-Image. Docker Compose ist ein Tool zur Definition und Ausführung von Multi-Container-Anwendungen.
Verwendung und Ausführung eines Dockerfile: Beispiel
Ein Dockerfile kann von allen verwendet werden, die ein Docker-Image erstellen möchten. Wenn Sie ein Dockerfile verwenden möchten, um ein Docker-Image zu erstellen, müssen Sie die Befehle „docker build“ ausführen. Diese nutzen einen „Kontext“ oder eine Reihe von Dateien, die sich im angegebenen PATH oder unter der URL befinden. Der Build-Prozess kann auf jede beliebige Datei im Kontext verweisen, während der URL-Parameter auf Git-Repositorys, vorkonfigurierte Tarball-Kontexte oder einfache Textdateien verweisen kann.
Zitat von Docker:
„Ein Docker-Image besteht aus schreibgeschützten Schichten, von denen jede eine Dockerfile-Anweisung darstellt. Die Schichten sind gestapelt und jede einzelne ist ein Delta der Änderungen der vorherigen Schicht.“
Beispiel für ein Dockerfile:
In diesem Dockerfile erstellt jede Anweisung eine Schicht:
FROM erstellt eine Schicht aus dem Docker-Image ubuntu:18.04.
COPY fügt Dateien aus dem aktuellen Verzeichnis Ihres Docker-Clients hinzu.
RUN erstellt Ihre Anwendung mittels make.
CMD gibt an, welcher Befehl innerhalb des Containers ausgeführt werden soll.
Wenn Sie ein Image ausführen und einen Container generieren, wird eine neue beschreibbare Schicht, die „Container-Schicht“, über die darunterliegenden Schichten gelegt. Alle Änderungen, die am aktuellen Container vorgenommen werden, wie das Schreiben neuer Dateien, das Ändern vorhandener Dateien und das Löschen von Dateien, werden in diese beschreibbare Container-Schicht geschrieben.
Weitere Informationen zu Dockerfiles und deren Verwendung finden Sie in der Dokumentation von Docker.
Verwendung und Ausführung von Docker Compose: Beispiel
Mit Docker Compose können Sie Multi-Container-Anwendungen ausführen.
Für die Verwendung von Docker Compose wird eine YAML-Datei benötigt, in der die Services Ihrer Anwendung konfiguriert werden. Sie können dann mit nur einem Befehl sämtliche Services über Ihre Konfiguration erstellen und starten.
So verwenden Sie Docker Compose:
- Definieren Sie die Umgebung Ihrer Anwendung in einem Dockerfile, damit sie überall reproduziert werden kann.
- Definieren Sie die Services, aus denen Ihre Anwendung besteht, in der Datei „docker-compose.yml“, damit Sie sie gemeinsam in einer isolierten Umgebung ausführen können.
- Mit docker compose upund Docker compose command können Sie Ihre gesamte Anwendung starten und ausführen.
Nachfolgend finden Sie ein Beispiel für die Datei „docker-compose.yml“:
Weitere Informationen zu Docker Compose finden Sie in der Dokumentation von Docker.
Dockerfile versus Docker Compose: Häufig gestellte Fragen
Wird Dockerfile durch Docker Compose ersetzt?
Nein. Dockerfile wird nicht durch Docker Compose ersetzt. Dockerfile ist Teil eines Prozesses zur Erstellung von Docker-Images, die wiederum Teil von Containern sind, während Docker Compose für die Orchestrierung verwendet wird.
Ist Docker-Compose identisch mit Docker Compose?
Docker Compose ist der Name des Tools, während docker-compose der Name des eigentlichen Befehls – also des Codes – ist, der in Docker Compose verwendet wird.
Sollte Docker Compose in der Produktion verwendet werden?
Ja. Docker Compose funktioniert in allen Umgebungen: Produktion, Bereitstellung, Entwicklung, Test sowie CI-Workflows.
Das macht Pure zur idealen Wahl für Ihre Containerisierung
Pure bietet verschiedene Lösungen, die die Nutzung und Orchestrierung von Containern für Ihr Unternehmen zum Kinderspiel machen.
Zu diesen Lösungen gehören beispielsweise Container-Storage-as-a-Service für Hybrid Cloud, bei dem die Flexibilität der Public Cloud mit der Zuverlässigkeit und Sicherheit der lokalen Infrastruktur kombiniert wird, sowie Portworx®, die umfassendste Plattform für Kubernetes-Datenservices.
Legen Sie noch heute mit Pure los. Kontaktieren Sie uns, um mehr zu erfahren.
Written By: