Docker-Images und -Container sorgen jeweils dafür, dass An­wen­dun­gen in iso­lier­ten Um­ge­bun­gen aus­ge­führt werden können und dass diese Um­ge­bun­gen überhaupt gestartet werden können. Somit sind sie zwei der wich­tigs­ten Be­stand­tei­le der Docker-Vir­tua­li­sie­rungs­platt­form und des Docker-Öko­sys­tems. Wir erklären die beiden Begriffe und gehen an­schlie­ßend auf ihre Ge­mein­sam­kei­ten und Un­ter­schie­de ein.

Compute Engine
Die ideale IaaS für Ihre Workloads
  • Kos­ten­güns­ti­ge vCPUs und leis­tungs­star­ke de­di­zier­te Cores
  • Höchste Fle­xi­bi­li­tät ohne Min­dest­ver­trags­lauf­zeit
  • Inklusive 24/7 Experten-Support

Docker-Container

Docker-Container sind isolierte Aus­füh­rungs­ein­hei­ten für An­wen­dun­gen und ihre Ab­hän­gig­kei­ten. In diesem Punkt sind sie sehr ähnlich zu vir­tu­el­len Maschinen, al­ler­dings gibt es einige wichtige Un­ter­schie­de. Der Haupt­un­ter­schied ist, dass der Iso­la­ti­ons­grad bei Con­tai­nern etwas geringer ist als bei VMs, da kein zu­sätz­li­ches Be­triebs­sys­tem vir­tua­li­siert werden muss. Statt­des­sen teilen sich die Container das Be­triebs­sys­tem und den Kern des Host-Systems. Dies bietet einige Vorteile, die die Ent­wick­lung von An­wen­dun­gen er­leich­tern und be­schleu­ni­gen, aber auch ein paar Nachteile.

Der Res­sour­cen­ver­brauch ist bei Con­tai­nern viel geringer als bei VMs. Somit weisen sie eine bessere Per­for­mance auf als VMs und können schneller gestartet werden. Außerdem sind sie viel portabler als VMs, da nur die aus­zu­füh­ren­de Anwendung und ihre Ab­hän­gig­kei­ten trans­por­tiert werden müssen. Der geringe Overhead von Docker-Con­tai­nern bietet den weiteren Vorteil, dass mehrere Container gleich­zei­tig auf demselben System aus­ge­führt werden können.

Ein Nachteil dieses ge­rin­ge­ren Iso­la­ti­ons­gra­des ist, dass Container eine schlech­te­re Si­cher­heit aufweisen als VMs. Da alle Container Zugang zum Be­triebs­sys­tem­kern haben, könnte ein „in­fi­zier­ter“ Container ernst­zu­neh­men­den Schaden ver­ur­sa­chen. Bei An­wen­dun­gen, die einen höheren Si­cher­heits­grad benötigen, sollte daher auf eine VM zu­rück­ge­grif­fen werden.

Tipp

Da Docker-Container alle be­nö­tig­ten Ab­hän­gig­kei­ten be­inhal­ten, können Sie den Betrieb von Web­an­wen­dun­gen für Sie und die End­nut­ze­rin­nen und Endnutzer massiv er­leich­tern. Der Cloud Server von IONOS kann sogar so kon­fi­gu­riert werden, dass Docker schon vor­in­stal­liert ist.

Docker-Images

Ein Docker-Image ist eine schreib­ge­schütz­te Vorlage, die von der Docker-Engine benutzt wird, um einen Container zu erzeugen. Somit können Docker-Container als laufende Instanzen von Docker-Images ver­stan­den werden. Diese Vorlage enthält die Ab­hän­gig­kei­ten der aus­zu­füh­ren­den Anwendung, die benötigte Lauf­zeit­um­ge­bung sowie den An­wen­dungs­code selbst. Als Vorlage für Container dienen Images dazu, kon­sis­ten­te, re­pro­du­zier­ba­re Aus­füh­rungs­um­ge­bun­gen für An­wen­dun­gen zu erzeugen.

Docker-Images selbst werden als Bi­när­da­tei­en ge­spei­chert, aber können auch in men­schen­les­ba­rer Form ge­spei­chert werden. Diese text­ba­sier­ten Dateien heißen Do­cker­files und be­inhal­ten alle An­wei­sun­gen, die benötigt werden, um das Image wie­der­her­zu­stel­len. Sowohl Docker-Images als auch Do­cker­files sind portabel und können somit sehr leicht von System zu System trans­por­tiert werden. Somit können Docker-Images in Docker-Registry-Re­po­si­to­rys wie Docker Hub ge­spei­chert und von dort her­un­ter­ge­la­den werden. Laufende Container-Instanzen können auch mittels des Befehls docker commit als Image-Dateien ge­spei­chert werden.

Tipp

Bei der Ent­wick­lung von An­wen­dun­gen ist es wichtig, seinen Ar­beits­platz in Ordnung zu halten. Wenn Sie schon länger mit vielen un­ter­schied­li­chen Con­tai­nern und Images arbeiten, haben Sie mit Si­cher­heit einige davon auf Ihrem Rechner, die Sie nicht mehr benötigen. Unsere Artikel zeigen Ihnen, wie Sie über­flüs­si­ge Docker-Container löschen und Docker-Images entfernen können.

Docker-Image vs. -Container: Was ist der Un­ter­schied?

Docker-Images und -Container sind im Grunde genommen das Gleiche, nur in anderen Formen. Ein Image ist eine schreib­ge­schütz­te Vorlage für einen Container, die alle not­wen­di­gen Dateien, Ab­hän­gig­kei­ten und Lauf­zeit­um­ge­bun­gen für das Ausführen einer Anwendung sowie die Anwendung selbst enthält. Hingegen ist ein Container eine laufende, nicht schreib­ge­schütz­te Instanz dieser Image-Datei, so wie ein laufendes Programm eine Instanz der auf der Fest­plat­te in­stal­lier­ten Pro­gramm­da­tei­en ist.

Somit ist ein Image eine binäre Datei, die im Da­tei­sys­tem des Host-Rechners ge­spei­chert ist und ein Container ein laufender Prozess, der sich im Ar­beits­spei­cher des Systems befindet. So wie ein Docker-Image benutzt wird, um einen Docker-Container zu erzeugen, kann ein laufender Container auch als Image ge­spei­chert werden. Dieses wiederum kann benutzt werden, um denselben Container exakt zu re­pli­zie­ren.

Tipp

Der Begriff „Docker“ umfasst mehr als nur Images, Container und die Docker-Engine – im Laufe der Zeit hat sich ein wahres Docker-Tools-Ökosystem ent­wi­ckelt! In­be­grif­fen sind etliche hilf­rei­che Tools und Platt­for­men wie Docker-Hub, -Swarm und -Machine. Unser Artikel zum Thema in­for­miert Sie weiter.

Zum Hauptmenü