Der Unterschied zwischen Docker-Container und Docker-Image

David Mbochi Njonge 15 Februar 2024
  1. Ebenen in Docker verstehen
  2. Unterschied zwischen Docker-Container und Image
  3. Abschluss
Der Unterschied zwischen Docker-Container und Docker-Image

In diesem Tutorial lernen wir den Unterschied zwischen einem Container und einem Image kennen, indem wir die Komponenten zeigen, aus denen sie bestehen, und die Funktionen, die sie voneinander unterscheiden.

Ebenen in Docker verstehen

Um ein benutzerdefiniertes Image zu erstellen, verwenden wir normalerweise ein Dockerfile, das die Anweisungen zum Erstellen eines benutzerdefinierten Images mithilfe eines Basisimages definiert. Die Anweisungen, die verwendet werden können, um ein Image in einem Dockerfile zu erstellen, lauten wie folgt.

FROM node:16.17.0-alpine
WORKDIR /app
ADD package*.json ./
RUN npm install
ADD . .
CMD node index.js

Ein Docker-Image wird mithilfe von Ebenen erstellt, die übereinander gestapelt werden. Eine neue Ebene wird dem Stack hinzugefügt, wenn die Operation einer Anweisung in der Dockerfile Dateien hinzufügen oder entfernen kann.

Beachten Sie, dass nicht alle in der Dockerfile definierten Anweisungen eine neue Ebene erstellen. Beispielsweise fügt die Anweisung CMD dem Bild Metadaten bezüglich des Befehls hinzu, der innerhalb des Containers ausgeführt werden soll.

Beachten Sie außerdem, dass die mit Dockerfile erstellten Ebenen mit Ausnahme der letzten schreibgeschützt sind.

Wenn wir einen Behälter erstellen, wird eine neue dünne Schicht erstellt. Der Unterschied zwischen dieser Schicht und der vorherigen Schicht besteht darin, dass wir Dateien von dieser Schicht lesen und schreiben können.

Nach dem Ausführen eines Containers werden Vorgänge wie das Schreiben neuer Dateien, das Ändern vorhandener Dateien und das Löschen von Dateien in der dünnen Lese-Schreib-Schicht ausgeführt. Das folgende Bild zeigt einen Stapel, der schreibgeschützte Schichten des Bildes und eine Lese-Schreib-Schicht eines Containers enthält.

Bild- und Container-Ebenen

Unterschied zwischen Docker-Container und Image

Im vorherigen Abschnitt haben wir gesehen, dass die oberste Schicht auf dem Stapel die dünne Lese-Schreib-Schicht ist, die vom Container verwendet wird, und die anderen Schichten die schreibgeschützten Schichten sind, die zum Erstellen des benutzerdefinierten Images verwendet werden.

Dies ist der Hauptunterschied zwischen einem Docker-Container und einem Image. Alle Änderungen, die Dateien zu einem Container hinzufügen oder daraus entfernen, werden an der dünnen Lese-/Schreibschicht des jeweiligen Containers vorgenommen.

Beachten Sie, dass beim Löschen eines Containers auch die zugehörige Ebene gelöscht wird. Das Basisimage wird jedoch nicht gelöscht.

Jeder der erstellten Container hat seine Lese-/Schreibebene, die es ihnen ermöglicht, das Basisimage gemeinsam zu nutzen, aber ihren Datenstatus beizubehalten. Das folgende Bild zeigt, wie mehrere Container ein Basisimage gemeinsam nutzen.

Container mit gemeinsamer Basis-Image

Abschluss

Wir haben in diesem Tutorial gelernt, wie man einen Docker-Container mithilfe von Ebenen von einem Docker-Image unterscheidet. Wir haben gelernt, dass ein Image mithilfe der Datei namens Dockerfile erstellt wird und jede Anweisung in der Datei eine schreibgeschützte Ebene bildet, die auf einer anderen Ebene gestapelt ist.

Schließlich haben wir gelernt, dass die oberste Ebene eine Lese-Schreib-Ebene ist, die vom Container zum Hinzufügen oder Ändern von Dateiänderungen verwendet wird.

David Mbochi Njonge avatar David Mbochi Njonge avatar

David is a back end developer with a major in computer science. He loves to solve problems using technology, learning new things, and making new friends. David is currently a technical writer who enjoys making hard concepts easier for other developers to understand and his work has been published on multiple sites.

LinkedIn GitHub

Verwandter Artikel - Docker Container