Unterschied zwischen dockerfile und docker-compose Lassen Sie uns kurz den Nutzungsprozess von Docker verstehen, der in Imagebuilding und Container-Startup unterteilt ist.
Image-Konstruktion: Das heißt, ein Image zu erstellen, das die Umgebung, den Programmcode usw. enthält, die für Installation und Betrieb erforderlich sind. Dieser Erstellungsprozess erfolgt mit einer dockerfile.
Container-Start: Der Container wird schließlich ausgeführt, indem das erstellte Image gezogen und der Dienst über eine Reihe von ausführenden Anweisungen (wie Port-Mapping, externe Datenmontage, Umweltvariablen usw.) gestartet wird. Für einen einzelnen Container kann dies über Docker ausgeführt werden.
Wenn es darum geht, mehrere Container auszuführen (wie Service-Orchestrierung), kann es über docker-compose implementiert werden, das problemlos mehrere Container als Service ausführen kann (natürlich nur einen) und die Funktion der Skalierung (Service Scaling) bereitstellt.
Kurze Zusammenfassung:
1.dockerfile: Erstellen Sie das Image;
2. Docker-Lauf: Start des Containers;
3. docker-compose: Start des Dienstes;
Fang ganz von vorne an. Wenn du Docker nicht nutzt, wie baust du dann WordPress? Finde zuerst einen Server, gehe davon aus, dass sein Betriebssystem Ubuntu ist, und folge dann Schritt für Schritt der Dokumentation, um den Befehl zu tippen und die Konfiguration zu schreiben, richtig? Wie sieht es mit der Verwendung von Docker aus? Such dir einfach einen Server, egal welches Betriebssystem, solange er Docker unterstützt, Docker läuft mit Ubuntu, Docker zieht das neueste Ubuntu-Image aus der offiziellen Quelle, du kannst es dir vorstellen, wenn du eine Ubuntu-virtuelle Maschine geöffnet hast und sie dann Schritt für Schritt installierst, genau wie oben.
Diese Installation hat jedoch einen erheblichen Nachteil: Sobald der Container gelöscht ist, wird keine Arbeit mehr erledigt. Natürlich kannst du Docker Commit verwenden, um es als Image zu speichern, damit es wiederverwendet werden kann.
Aber das Bild ist in der Regel groß, und wenn du nur das Bild teilst, wissen andere nicht, was dein Bild enthält, was das Teilen und Wiederverwenden nicht fördert. Eine intuitive Lösung ist es, ein Skript zu schreiben, das den gesamten Installationsprozess dokumentiert, sodass man das Skript beim erneuten Installieren ausführen kann. Eine Dockerfile ist ein solches Skript, das den Prozess der Erstellung eines Bildes dokumentiert. Mit einer Dockerfile kann man einfach den Docker-Build ausführen. Man kann ein Bild erstellen, und die Dockerfile ist eine Textdatei, die sehr einfach zu verändern ist.
Jetzt, wo du ein WordPress-Image hast, musst du nur noch Docker ausführen, um WordPress zum Laufen zu bringen.
Wenn es nur WordPress ist, reicht das. Aber oft werden mehrere Images benötigt, um einen Dienst zu starten, wie zum Beispiel nginx, mysql, Mailservice usw. Häufiger sind nginx, mysql und smtp alle Images, und diese Bilder arbeiten dann zusammen, um ein Projekt zu unterstützen. docker-compose ist die Lösung dieses Problems. Informationen darüber, welche Bilder Ihr Projekt benötigt, wie jedes Bild konfiguriert wird, welche Volumina gemountet werden sollen usw. sind in docker-compose.yml enthalten. Um einen Dienst zu starten, musst du nur docker-compose up, und du musst nur stopper-compse stop/down, um ihn zu stoppen
Kurz gesagt: Eine Dockerfile dokumentiert den Bauprozess eines einzelnen Images docker-compse.yml den Bauprozess eines Projekts (meist mehrere Images).
Du hast gesagt, dass einige Tutorials dockerfile+docker-compose verwenden, weil docker-compose.yml selbst keine Informationen über den Image-Build enthält, und wenn das Image aus der docker-Registry gezogen wird, wird dockerfile nicht benötigt; Wenn das Image erstellt werden muss, muss eine Dockerfile bereitgestellt werden.
docker-composeEs ist ein Orchestrierungscontainer. Zum Beispiel hast du ein PHP-Image, ein MySQL-Image und ein nginx-Image. Wenn es keinen docker-compose gibt, musst du bei jedem Start die Startparameter jedes Containers, die Umgebungsvariablen, den Containernamen, die Linkparameter verschiedener Container angeben und eine Reihe von Operationen angeben, was ziemlich umständlich ist. Nachdem du docker-composer verwendet hast, kannst du diese Befehle gleichzeitig in docker-composer.yml Datei schreiben, und jedes Mal, wenn du die gesamte Umgebung (einschließlich 3 Container) startest, musst du nur einen docker-composer-up-Befehl eingeben.
dockerfileDie Aufgabe ist es, ein Spiegelbild von Grund auf neu zu erschaffen. Es enthält die Umgebung, den Programmcode usw., die für Installation und Betrieb erforderlich sind. Dieser Erstellungsprozess erfolgt mit einer dockerfile. Dockerfile – Für den docker-Build-Befehl vorbereitet, um ein eigenständiges Image zu erstellen, das auch in docker-compose für Live-Builds verwendet werden kann docker-compose.yml – Ein Skript für docker-compose, das mehrere Container gleichzeitig verwalten kann, einschließlich Beziehungen zwischen ihnen, ob man mit einem offiziellen Image oder mit sich selbst gebaut wird, verschiedene Netzwerkport-Definitionen, Speicherplatz-Definitionen usw |