Container, Image, File, Repository, … Docker Begriffe, die du kennen und verstehen solltest

Es ist jetzt schon einen Monat her, dass unser Docker Kurs veröffentlicht wurde und ich bin echt von dem Feedback und dem Ansturm begeistert. Ich freue mich riesig, dass es so viele Docker Begeisterte gibt, welchen ich helfen kann, Fuß in der Technik zu fassen. Anfangs ist es recht schwer sich zurecht zu finden, doch das ist bei neuen Dingen immer so, oder? 😉

Am schwersten war es für mich, sämtliche Fachbegriffe zu lernen. Die kleinen, aber feinen Unterschiede von Containern und Images oder das Verständnis, dass Docker Hub ein Repository ist und wozu es verwendet wird.
Heute möchte ich dich ein bisschen in diesem Begriffswirrwarr unterstützen und gebe dir ein Glossar an die Hand. Um dieses zu verstehen, ist es wichtig, dass du schon Grundkenntnisse von Docker hast. Falls nicht, dann schau dir meinen Docker Blogeintrag an. Dort findest du weitere Infos.

Da ich deine Zeit nicht verschwenden möchte, fang ich direkt an und halte mich kurz und verständlich:

Image

Das Image ist, wie der Name schon sagt, ein Abbild eines Containers. Es beschreibt, wie ein Container aufgebaut ist, welche Tools zum Beispiel installiert sind. Das Image selbst besteht aus mehreren Layern, welche schreibgeschützt sind und somit nicht verändert werden können. Aus einem Image können immer mehrere Container gestartet werden, sodass auf dem Host Speicherplatz gespart wird.

Container

Als Container wird die aktive Instanz eines Images bezeichnet. Der Container wird also aktuell ausgeführt und ist mit etwas beschäftigt. Sobald der Container kein Programm ausführt oder mit seinem Job fertig ist, wird der Container automatisch beendet.
Damit ein Container auch Daten schreiben kann, wird auf das Image ein sogenannter Writeable Layer gesetzt. Somit wird das Image selbst nicht überschrieben.

Repository

Ein Repository, wie zum Beispiel Docker Hub oder Artifactory, dient als Ablage von Images. Du kannst dir dies wie eine große Bibliothek vorstellen. Ein Repository ist sowohl für das Speichern als auch das Teilen von Images da. Images können auch in verschiedenen Versionen abgelegt und zur Verfügung gestellt werden.
Auf Dockerhub gibt es Images, welche von Nutzern für bestimmte Aufgabe gebaut wurden und es gibt sogenannte Basis Images. Die Basis Images dienen zum bauen von eigenen Images, dazu aber mehr im Dockerfile.

Dockerfile

Um ein eigenes Image zu bauen, wird das Dockerfile verwendet. In dieser Textdatei findest du alles, was in dem Image enthalten ist. Es gibt verschiedene Befehle wie

  • FROM
  • RUN
  • COPY
  • ENTRYPOINT
  • CMD

mit denen du dein Dockerimage beschreiben kannst. Mehr dazu findest du in meinem Kurs. Wichtig zu Wissen ist, dass du zum Bauen eines Dockerimages ein Basis Image, wie zum Beispiel Ubuntu, verwenden und erweitern kannst. In diesem Basis Image findest du dann Programme, wie apt-get, mit denen du zusätzliche Software einfacher hinzufügen kannst. Natürlich kannst du auch komplett eigene Images bauen. Dafür gibst du im Dockerfile einfach FROM Scratch an.
Beachte, dass jeder Befehl in dem Dockerfile einen eigenen Layer erzeugt. Viele verfolgen den Ansatz, so wenig Layer wie möglich zu erzeugen. Das kannst du erreichen, indem du mehrere Befehle in einem RUN Befehl zusammenfasst.

Layer

Ein Image besteht, wie schon erwähnt, aus mehreren Layern (Schichten). Eine einzelne Schicht kannst du dir vorstellen wie ein Puzzlestück. Gemeinsam mit anderen Puzzlestücken ergeben die Layer ein Image, das mit jeder Schicht erweitert wird. Wenn du zum Beispiel einem Image eine Datei hinzufügen möchtest, speicherst du diese in einem Layer, der das Image erweitert. In einem anderen Layer wird diese Datei verschoben oder die Rechte werden angepasst.
Anhand der Layer kannst du also die Historie des Images nachvollziehen.

 

Das sind die wichtigsten Begriffe, die du kennen solltest, wenn du mit Docker arbeitest oder darüber sprichst. Natürlich ist das noch lange keine vollständige Liste und ich würde mich freuen, wenn du Begriffe, die dir wichtig sind, in die Kommentare postest. Diese werde ich dann gerne in den Artikel aufnehmen und erläutern.

Wenn du tiefer in das Thema Docker einsteigen willst, dann schau bei meinem Udemy Kurs vorbei.

 

Leave a Reply

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.