Software

Was ist Docker? Einsteigerleitfaden zu Docker und Containern für Entwickler

Talha AslanTalha Aslan 16 Min. Lesezeit 1 Aufrufe

Was ist Docker und was bringt es Entwicklern?

Docker ist eine Open Source Plattform, die eine Anwendung samt Code, Laufzeit, Bibliotheken und Einstellungen in eine isolierte Einheit namens Container packt. Dieser Container verhält sich auf dem Laptop, auf dem Testserver und in der Produktion gleich. Das bekannte Problem „bei mir läuft es aber“ verschwindet somit weitgehend.

Ich arbeite schon seit 2012 an Webprojekten, deshalb kenne ich das Problem gut. Die Frage „was ist Docker“ stellen mir vor allem Teams, die bei jedem neuen Entwickler zwei Tage mit der Einrichtung verlieren. In dieser Anleitung erkläre ich deshalb Container, Dockerfiles, den Unterschied zwischen Image und Container, Docker Compose und die Abgrenzung zur virtuellen Maschine. Die Beispiele stammen aus Mustern, die ich selbst nutze.

Die offizielle Definition finden Sie in der Docker Übersicht der Dokumentation. Allerdings ist die Dokumentation sehr umfangreich. Daher baue ich hier zunächst das gedankliche Modell auf und gehe erst dann zu den Befehlen über.

Was bedeutet der Begriff Container genau?

Ein Container ist ein abgeschotteter Arbeitsbereich, der den Kernel des Hosts teilt, aber ein eigenes Dateisystem, eine eigene Netzwerkschnittstelle und einen eigenen Prozessbaum besitzt. Unter Linux ermöglichen das zwei Kernelfunktionen: Namespaces und cgroups. Namespaces begrenzen, was ein Prozess sieht. Cgroups begrenzen dagegen, wie viel CPU und Speicher er nutzt.

Ein Container ist also keine magische Kiste, sondern ein gewöhnlicher Linux Prozess mit Zäunen drumherum. Das ist wichtig, denn die Anwendung darin startet kein eigenes Betriebssystem. Deshalb startet sie in Sekunden und braucht wenig Ressourcen.

Die Idee ist übrigens älter als Docker, denn chroot, FreeBSD Jails und LXC gab es schon lange. Docker hat die Technik allerdings leicht verpackbar, teilbar und mit einem Befehl startbar gemacht. Zudem legt heute die Open Container Initiative (OCI) das Imageformat fest. Ein mit Docker gebautes Image läuft somit auch mit anderen Werkzeugen wie Podman.

Was ist der Unterschied zwischen Docker und einer virtuellen Maschine?

Eine virtuelle Maschine betreibt auf einem Hypervisor ein vollständiges Betriebssystem mit eigenem Kernel. Ein Container teilt dagegen den Kernel des Hosts und enthält nur die Dateien, die die Anwendung braucht. Diesen Unterschied spüren Sie bei Größe, Startzeit und Isolation.

KriteriumContainer (Docker)Virtuelle Maschine (VM)
KernelNutzt den Kernel des HostsJede VM hat ihren eigenen Kernel
StartzeitMeist SekundenMeist Minuten
ImagegrößeZehn bis mehrere hundert MBOft mehrere GB
IsolationAuf Prozessebene, dünnerAuf Hardwareebene, stärker
Typischer EinsatzMicroservices, CI, EntwicklungsumgebungAnderes Betriebssystem, starke Isolation

Die Werte in der Tabelle sind allgemeine Tendenzen, keine Messungen; sie hängen vom Inhalt des Images ab. Andererseits sind beide Technologien keine Konkurrenten. In der Praxis laufen Docker Container bei Cloud Anbietern oft innerhalb einer virtuellen Maschine. Kurz gesagt: Die VM teilt Infrastruktur auf, der Container verpackt Anwendungen.

Wie funktioniert Docker technisch?

Docker arbeitet nach dem Client und Server Prinzip. Der Befehl docker, den Sie eintippen, ist der Client. Die eigentliche Arbeit erledigt im Hintergrund der Docker Daemon (dockerd), und der Client spricht mit ihm über eine REST API.

  • Docker Client: nimmt Befehle wie docker run und docker build entgegen und leitet sie weiter.
  • Docker Daemon: baut Images, startet Container und verwaltet Netzwerke und Volumes.
  • containerd und runc: die Schichten unter dem Daemon, die den Lebenszyklus steuern und den Prozess starten.
  • Registry: der Speicher für Images; am bekanntesten ist Docker Hub, eine eigene private Registry ist ebenso möglich.

Auf Mac und Windows sieht es etwas anders aus. Da deren Kernel kein Linux ist, startet Docker Desktop eine schlanke Linux VM und betreibt die Container darin. Deshalb fühlen sich eingebundene Ordner auf dem Mac langsamer an als unter Linux. Das beobachte ich auch auf meinem eigenen Laptop mit Apple Chip.

Was unterscheidet ein Image von einem Container?

Ein Image ist eine schreibgeschützte Vorlage. Ein Container ist dagegen eine laufende Instanz dieser Vorlage. Denken Sie also an Klasse und Objekt in der Programmierung. Aus einem einzigen Image starten Sie beliebig viele Container gleichzeitig.

Ein Image besteht aus Schichten. Jede Anweisung im Dockerfile erzeugt eine neue Schicht, und Docker legt diese Schichten im Cache ab. Zum Beispiel kommt zuerst das Basissystem, dann die Abhängigkeiten und zuletzt Ihr Code. Ändern Sie nur den Code, baut Docker nur die letzte Schicht neu. Somit laufen Ihre Builds schneller.

Beim Start legt Docker eine dünne beschreibbare Schicht über das Image. Löschen Sie den Container, verschwindet auch diese Schicht. Daher gehören Daten, die bleiben sollen, etwa eine Datenbankdatei, auf ein Volume. Genau das ist die häufigste Überraschung für Einsteiger: Container gelöscht, Daten weg.

Images versionieren Sie über Tags, etwa nginx:1.27 oder meineapp:v3. Ohne Tag nimmt Docker latest an. Allerdings garantiert latest nicht „neueste Version“, es ist nur der Name des Standardtags. In der Produktion empfehle ich deshalb feste Versionstags.

Wie installieren Sie Docker und starten den ersten Container?

Auf Mac und Windows ist Docker Desktop der einfachste Weg. Unter Linux installieren Sie Docker Engine aus dem Paketarchiv Ihrer Distribution. Da sich die Schritte oft ändern, folgen Sie am besten der offiziellen Installationsseite.

Nach der Installation gehen Sie so vor:

  1. Prüfen Sie mit docker version, ob Client und Daemon antworten.
  2. Starten Sie mit docker run -d -p 8080:80 nginx einen Nginx Server.
  3. Öffnen Sie danach localhost:8080 im Browser.
  4. Listen Sie laufende Container mit docker ps auf.
  5. Stoppen und entfernen Sie den Container dann mit docker stop und docker rm.

Der Parameter -p 8080:80 verbindet Port 8080 des Hosts mit Port 80 im Container. Außerdem startet der Parameter -d den Container im Hintergrund. Sobald Sie diese beiden verstanden haben, beherrschen Sie also schon die Hälfte des Docker Alltags.

Was ist ein Dockerfile und wie schreiben Sie es?

Ein Dockerfile ist eine Textdatei, die Schritt für Schritt beschreibt, wie ein Image entsteht. Für eine kleine Node.js Anwendung sieht ein typisches Dockerfile so aus:

  • FROM node:20
  • WORKDIR /app
  • COPY package.json ./
  • RUN npm ci
  • COPY . .
  • EXPOSE 3000
  • CMD ["node", "server.js"]

FROM wählt das Basisimage; viele Teams nehmen schlanke Varianten wie alpine oder slim. WORKDIR legt das Arbeitsverzeichnis fest. Zuerst kopieren wir nur die Paketdatei, und zwar wegen des Caches. Hat sich die Liste der Abhängigkeiten nicht geändert, installiert Docker sie nicht neu, selbst wenn sich der Code ändert.

Anschließend bauen Sie das Image mit docker build -t meineapp:1.0 . und der Punkt am Ende bezeichnet den aktuellen Ordner als Build Kontext. Legen Sie außerdem eine .dockerignore Datei an, die node_modules, .git und .env ausschließt. Ihr Image wird dadurch kleiner, und Geheimnisse bleiben draußen.

Welche Fehler im Dockerfile sollten Sie vermeiden?

Die Fehler, die ich in eigenen Projekten und in übernommenem Code sehe, ähneln sich stark. Diese Liste macht Images kleiner und sicherer:

  • Geheimnisse im Image: Ein API Schlüssel in einer ENV Zeile bleibt für immer in der Imagehistorie. Übergeben Sie ihn stattdessen zur Laufzeit.
  • Betrieb als root: Wechseln Sie mit USER zu einem Benutzer ohne Sonderrechte.
  • Zu große Basisimages: Probieren Sie slim oder alpine statt eines vollen Ubuntu.
  • Falsche Reihenfolge: Kopieren Sie häufig geänderten Code zuletzt.
  • Ungebundene Versionen: Nutzen Sie in FROM einen festen Tag statt latest.

Dazu kommt der mehrstufige Build (Multistage Build). In der ersten Stufe kompilieren Sie die Anwendung mit allen Werkzeugen. In der zweiten Stufe kopieren Sie nur das Ergebnis in ein kleines Basisimage. Bei Go, Java und Frontend Projekten schrumpft das Image dadurch deutlich. Ich nutze das inzwischen standardmäßig, sobald ein Projekt einen Buildschritt hat.

Wofür brauchen Sie Volumes und Bind Mounts?

Die beschreibbare Schicht eines Containers ist vergänglich. Folglich müssen dauerhafte Daten außerhalb liegen. Docker bietet dafür zwei Hauptwege: Volumes und Bind Mounts.

  • Volume: Speicher, den Docker verwaltet. Sie erstellen ihn mit docker volume create daten und binden ihn mit -v daten:/var/lib/mysql ein. Für Datenbanken ist das die erste Wahl.
  • Bind Mount: bindet einen bestimmten Ordner des Hosts ein. In der Entwicklung ist das praktisch, weil Codeänderungen sofort sichtbar sind.
  • tmpfs: hält Daten nur im Arbeitsspeicher; beim Stoppen sind sie weg.

Meine Faustregel ist einfach: Volumes in der Produktion, Bind Mounts in der lokalen Entwicklung. Volumes lassen sich zudem leicht sichern, denn Sie starten einfach einen kurzlebigen Container und archivieren den Inhalt. Betreiben Sie eine Datenbank im Container, richten Sie Backups am ersten Tag ein, nicht später.

Wie funktionieren Netzwerke in Docker?

Jeder Container hängt standardmäßig an einem virtuellen Netz namens bridge. Container im selben benutzerdefinierten Netz erreichen sich über ihren Namen. Ihre Anwendung spricht die Datenbank also als db an, nicht über eine IP Adresse. Diese Namensauflösung übernimmt Docker mit einem internen DNS.

Ein Netz erstellen Sie mit docker network create appnetz und hängen Container mit dem Parameter --network an. Dienste, die nach außen sichtbar sein sollen, müssen Sie allerdings mit -p veröffentlichen. Ein nicht veröffentlichter Port bleibt nur im Netz erreichbar. Genau das wollen Sie für eine Datenbank.

Dazu ein wichtiger Sicherheitshinweis. Unter Linux ändert Docker beim Veröffentlichen von Ports selbst die iptables Regeln. Das kann einfache Firewallregeln wie ufw umgehen. Deshalb kann -p 3306:3306 auf einem Server Ihre Datenbank ins Internet stellen. Brauchen Sie nur lokalen Zugriff, schreiben Sie stattdessen -p 127.0.0.1:3306:3306.

Was ist Docker Compose und wann setzen Sie es ein?

Docker Compose ist ein Werkzeug, mit dem Sie eine Anwendung aus mehreren Containern in einer YAML Datei beschreiben und mit einem Befehl starten. Zum Beispiel eine Webanwendung, eine Datenbank und einen Cache. Statt dreier einzelner docker run Befehle beschreiben Sie alles in compose.yaml.

Eine typische Datei enthält unter services zwei Einträge: web und db. Der Dienst web baut mit build: . aus seinem eigenen Dockerfile und veröffentlicht Port 3000. Der Dienst db nutzt das Image postgres:16, hängt ein Volume ein und liest sein Passwort aus einer Umgebungsvariablen. Schließlich sorgt depends_on dafür, dass web nach db startet.

Danach starten Sie alles mit docker compose up -d, verfolgen Logs mit docker compose logs -f und fahren mit docker compose down herunter. Früher gab es ein separates Programm dafür. Heute steckt Compose als Unterbefehl docker compose direkt in Docker. Die Compose Dokumentation ist eine gute Referenz.

Welche Docker Befehle brauchen Sie im Alltag?

In den ersten Wochen decken die folgenden Befehle den Großteil der Arbeit ab. Legen Sie sich die Liste am besten griffbereit ab:

BefehlWas er tut
docker ps -aListet laufende und gestoppte Container
docker imagesZeigt lokale Images
docker logs -f nameVerfolgt Logs live
docker exec -it name shÖffnet eine Shell im laufenden Container
docker build -t name:tag .Baut ein Image aus dem Dockerfile
docker pull / pushLädt Images aus der Registry oder hoch
docker system dfFasst die Speichernutzung zusammen
docker system pruneRäumt ungenutzte Daten auf

Vor allem docker exec und docker logs sind die Basis jeder Fehlersuche. Trotzdem sollten Sie docker system prune vorsichtig einsetzen, denn je nach Parametern entfernt es gestoppte Container und ungenutzte Images. Läuft die Platte voll, schaue ich zuerst auf docker system df.

Wo lohnt sich Docker wirklich?

Docker löst nicht jedes Problem. In manchen Szenarien ist der Unterschied allerdings deutlich. Das sind die Einsatzfelder, die in meiner Erfahrung herausstechen:

  • Schnelles Onboarding: Neue Entwickler klonen das Repository, tippen docker compose up und haben in Minuten eine lauffähige Umgebung.
  • Versionen nebeneinander: Ein Projekt braucht PHP 7.4, ein anderes PHP 8.3; beide laufen konfliktfrei auf einem Server.
  • Continuous Integration: Tests laufen jedes Mal in einer sauberen, identischen Umgebung.
  • Altsysteme am Leben halten: Eine alte Anwendung läuft im eigenen Container, während der Host modern bleibt.
  • Microservices: Jeder Dienst bringt seine eigenen Abhängigkeiten mit.

Den Fall mit dem Altsystem habe ich selbst erlebt. Wir haben eine Anwendung, die eine alte PHP Version brauchte, in einen eigenen Container verlegt. Somit blieb der Rest des Servers aktuell. Bei Webprojekten vereinfacht das zudem den Livegang im Rahmen von Webdesign Projekten.

Mit welchen Sprachen und Frameworks funktioniert Docker?

Fragen Sie „was ist Docker“ aus Sicht der Programmiersprache, lautet die Antwort kurz: sprachunabhängig. Node.js, Python, PHP, Java, Go, .NET oder Ruby, das spielt keine Rolle. Läuft Ihre Anwendung unter Linux, passt sie in einen Container. Auf Docker Hub gibt es für die meisten dieser Sprachen offizielle Basisimages.

Trotzdem hat jede Sprache ihre Eigenheiten. Bei Python schützt zum Beispiel das separate Kopieren der Abhängigkeitsdatei den Cache. Für PHP ist es zudem üblich, Webserver und PHP FPM auf getrennte Container zu verteilen. Bei kompilierten Sprachen wie Java und Go verkleinert ein mehrstufiger Build das Image erheblich.

Frontend Projekte funktionieren etwas anders. Sie bauen Ihre React oder Vue Anwendung in einer Stufe und kopieren die statischen Dateien dann in ein kleines Nginx Image. Somit braucht die Produktion nicht einmal Node.js. Außerdem landet so auch die Serverkonfiguration in der Versionsverwaltung.

Für ein Team, das wissen will, was ist Docker in der Praxis, ist der erste Schritt also einfach. Nehmen Sie das offizielle Image Ihrer Hauptsprache und machen Sie ein kleines Experiment. Daraus entsteht dann die Vorlage für spätere Projekte.

Was ist eine Registry und wie teilen Sie Images?

Konkret speichert und verteilt eine Registry Images anhand ihrer Tags. Docker Hub ist die bekannteste. Daneben bieten GitHub Container Registry, GitLab und die Cloud Anbieter eigene Dienste. Das heißt: Ihr Code liegt in Git, Ihr Image in einer Registry.

Zum Teilen versehen Sie das Image zunächst mit einem Namen, der die Registryadresse enthält. Danach melden Sie sich mit docker login an und laden mit docker push hoch. Auf dem Server holt docker pull dasselbe Image. So bauen Sie einmal und liefern dasselbe Paket in jede Umgebung.

Hier habe ich zwei Empfehlungen. Erstens: Schieben Sie interne Images nie in ein öffentliches Repository, sondern nutzen Sie ein privates. Zweitens: Bevorzugen Sie auf Docker Hub offizielle Images oder solche verifizierter Herausgeber. Ein Image unbekannter Herkunft bedeutet unbekannten Code auf Ihrem Server.

Gute Tags erleichtern außerdem den Rückweg. Macht ein Release Probleme, sind Sie mit dem vorherigen Tag in Minuten zurück.

Wie halten Sie Docker Images sicher?

Sicherheit entsteht hier aus kleinen Gewohnheiten, nicht aus einer einzigen Einstellung. Diese Checkliste nutze ich in meinen Projekten:

  • Aktualisieren Sie das Basisimage regelmäßig und bauen Sie Images planmäßig neu.
  • Prüfen Sie bekannte Schwachstellen mit einem Scanner wie Docker Scout oder Trivy.
  • Betreiben Sie Container mit einem Benutzer ohne root Rechte.
  • Veröffentlichen Sie nur Ports, die Sie wirklich brauchen.
  • Übergeben Sie Passwörter und Schlüssel zur Laufzeit, nie im Image.

Beachten Sie außerdem: Wer den Docker Socket (/var/run/docker.sock) in einen Container einbindet, gibt diesem praktisch root Zugriff auf den Host. Manche Monitoringtools verlangen das; prüfen Sie dann die Herkunft genau. Die Sicherheitsseite von Docker Engine ist ein guter Einstieg.

Ebenso wichtig ist das Umfeld Ihrer Website. In meinem Beitrag zur E-Mail mit eigener Domain geht es zum Beispiel um Einstellungen auf Domainebene.

Wo beginnen Sie bei der Fehlersuche in Docker?

Läuft ein Container nicht wie erwartet, löst ein ruhiges, geordnetes Vorgehen die meisten Probleme schnell. Ich gehe in dieser Reihenfolge vor:

  1. Status und Exitcode mit docker ps -a prüfen.
  2. Die letzten Ausgaben der Anwendung mit docker logs lesen.
  3. Umgebungsvariablen, Netze und Volumes mit docker inspect kontrollieren.
  4. Mit docker exec -it hineinschauen und Dateien sowie Ports prüfen.

Die drei häufigsten Fehler sind vorhersehbar. Erstens lauscht die Anwendung auf 127.0.0.1 statt auf 0.0.0.0. Zweitens stimmt die Portzuordnung nicht. Drittens fehlt eine Umgebungsvariable. Der erste Fehler verwirrt Einsteiger am meisten, denn die Anwendung läuft im Container, ist aber von außen nicht erreichbar. Der Grund: 127.0.0.1 meint nur den Container selbst.

In der Praxis reichen Logs, die Ausgabe von inspect und ein Blick ins Innere meist aus. Besteht das Problem weiter, starten Sie dasselbe Image lokal und vergleichen Schritt für Schritt.

Was verstehen viele falsch, wenn sie fragen, was ist Docker?

Auf die Frage „was ist Docker“ höre ich am häufigsten die falsche Antwort „eine leichte virtuelle Maschine“. Der Vergleich hilft anfangs, führt aber zu schlechten Entscheidungen. Ein SSH Server im Container, mehrere Dienste in einem Container oder Container, die man von Hand flickt, stammen alle aus diesem falschen Bild.

Betrachten Sie einen Container stattdessen als Prozess mit genau einer Aufgabe, den Sie jederzeit löschen und neu erzeugen können. Muss sich etwas ändern, loggen Sie sich nicht ein und reparieren es. Sie ändern das Dockerfile und bauen ein neues Image. Diese Disziplin ist zugleich die Grundlage von Infrastructure as Code.

Außerdem ist Docker keine Firewall. Die Isolation ist dünner als bei einer VM, weil sich Container den Kernel teilen. Verlassen Sie sich deshalb bei fremdem Code nicht allein auf Container. Kombinieren Sie mehrere Schutzschichten, etwa Benutzer ohne root Rechte und aktuelle Images.

Ist Docker Desktop kostenlos und was gilt bei der Lizenz?

Docker Engine ist Open Source und auf Linux Servern kostenlos. Docker Desktop ist dagegen ein eigenes Produkt, und größere Unternehmen brauchen für die kommerzielle Nutzung ein kostenpflichtiges Abo. Laut der Preisseite von Docker gilt das für Organisationen mit mehr als 250 Beschäftigten oder mehr als 10 Millionen US-Dollar Jahresumsatz.

Für einzelne Entwickler, Bildung und kleine Unternehmen bleibt der Personal Plan kostenlos. Allerdings können sich die Bedingungen ändern; prüfen Sie daher vor einer firmenweiten Einführung die aktuelle Seite. Alternativ nutzen manche Teams Colima oder OrbStack auf dem Mac oder direkt Docker Engine und Podman unter Linux.

Wie betreiben Sie Docker produktiv, und brauchen Sie Kubernetes?

Für kleine und mittlere Projekte ist der Produktivbetrieb auf einem einzelnen Server mit Docker Compose absolut machbar. Viele meiner eigenen Projekte laufen genau so: eine Compose Datei, davor Nginx oder Caddy als Reverse Proxy, regelmäßige Backups und Monitoring. Kubernetes lohnt sich dagegen für Systeme, die sich über viele Server verteilen und automatisch skalieren müssen.

„Alle nutzen es“ ist also kein guter Grund für Kubernetes, denn es bringt echten Betriebsaufwand mit. Beantworten Sie zunächst ehrlich diese Fragen:

  1. Trägt ein Server Ihren Traffic und Ihre Toleranz für Ausfälle?
  2. Hat das Team Wissen und Zeit, einen Cluster zu betreiben?
  3. Brauchen Sie wirklich automatische Skalierung, oder reicht ein stärkerer Server?

Deuten Ihre Antworten überwiegend auf „ein Server reicht“, starten Sie mit Compose. Wächst die Last dann tatsächlich, sind Ihre Images bereits fertig, und der Umstieg fällt leichter.

Beeinflusst Docker Ladezeit und SEO?

Zunächst: Docker ist kein Rankingfaktor. Google weiß nicht und interessiert sich nicht dafür, ob Ihre Website im Container läuft. Allerdings gibt es indirekte Effekte. Eine einheitliche Umgebung verringert Fehler und Ausfälle beim Deployment, und Ausfälle schaden sowohl dem Crawling als auch der Nutzererfahrung.

Andererseits kann ein schlecht konfigurierter Container die Antwortzeit des Servers verlängern. Ein Container mit zu wenig Speicher bremst zum Beispiel die Seitenerzeugung. Zum Messen empfehle ich meine Anleitung zum Google Lighthouse Test. Wie die Ladezeit das Ranking beeinflusst, erkläre ich im Beitrag Ladezeit und SEO.

Wechseln Sie im Zuge eines Umzugs zu Docker, prüfen Sie Weiterleitungen mit dem Redirect Checker und DNS Einträge mit der DNS Abfrage. Die Checkliste zur Website Migration deckt dann die SEO Seite ab.

Welchen Lernpfad sollten Sie für Docker wählen?

Um von „was ist Docker“ zur echten Nutzung zu kommen, empfehle ich diese Reihenfolge. Üben Sie jeden Schritt an einem kleinen Projekt, denn Lesen allein reicht nicht.

  1. Frischen Sie grundlegende Linux Befehle sowie Prozesse, Ports und Dateirechte auf.
  2. Probieren Sie docker run, ps, logs und exec mit fertigen Images.
  3. Schreiben Sie ein Dockerfile für eine eigene kleine Anwendung und ergänzen Sie .dockerignore.
  4. Testen Sie Volumes und Netze zusammen mit einer Datenbank.
  5. Fassen Sie Anwendung und Datenbank in einer Compose Datei zusammen.
  6. Verkleinern und härten Sie das Image mit mehrstufigem Build und einem Benutzer ohne root Rechte.
  7. Bauen Sie das Image automatisch in einer CI Pipeline und laden Sie es in eine Registry.

Mit regelmäßiger Übung schaffen Sie diese sieben Schritte in einigen Wochen. Die Dauer hängt allerdings von der Person ab; das ist Erfahrungswert aus der Praxis, keine Garantie. Sobald Sie in Themen wie Micro Frontends einsteigen, gehört Containerwissen zur Grundausstattung.

Wie lässt sich die Frage, was ist Docker, kurz beantworten?

Kurz gesagt macht Docker aus Ihrer Anwendung samt Abhängigkeiten ein portables Paket und führt es überall gleich aus. Das Image ist die Vorlage, der Container die laufende Instanz. Das Dockerfile ist das Rezept, und Compose dirigiert mehrere Dienste gemeinsam.

Mein Rat: Verlegen Sie nicht am ersten Tag alles in Docker. Beginnen Sie mit der lokalen Entwicklungsumgebung, erleben Sie den Nutzen und erweitern Sie dann auf CI und Produktion. So lernt das Team das Werkzeug, während die Arbeit weiterläuft.

Wenn Sie für Ihr Webprojekt einen Fahrplan zu Infrastruktur, Ladezeit oder Umzug möchten, schreiben Sie mir über die Kontaktseite. Weitere Beiträge finden Sie in der Kategorie Software.

Häufig gestellte Fragen

Ist Docker kostenlos?
Docker Engine ist Open Source und kostenlos, auf Linux Servern zahlen Sie also keine Lizenz. Docker Desktop ist für Einzelpersonen, Bildung und kleine Unternehmen kostenlos. Organisationen mit mehr als 250 Beschäftigten oder mehr als 10 Millionen US-Dollar Jahresumsatz brauchen für die kommerzielle Nutzung jedoch ein Abo. Prüfen Sie die aktuellen Bedingungen auf der Preisseite.
Muss ich Linux können, um Docker zu lernen?
Tiefes Linux Wissen brauchen Sie nicht, die Grundlagen helfen aber sehr. Dateipfade, Rechte, Prozesse und Ports begegnen Ihnen im Container ständig. Deshalb empfehle ich vor dem Einstieg ein paar Tage Linux Praxis. Diese Basis spart Ihnen spürbar Zeit, wenn ein Container einmal nicht startet und Sie die Ursache suchen.
Ist ein Container dasselbe wie eine virtuelle Maschine?
Nein. Eine virtuelle Maschine betreibt ein vollständiges Betriebssystem mit eigenem Kernel, ein Container ist dagegen ein isolierter Prozess, der den Kernel des Hosts teilt. Container starten daher schneller und brauchen weniger Platz. Eine VM bietet allerdings stärkere Isolation. In der Praxis laufen Container oft innerhalb von virtuellen Maschinen.
Sollte die Datenbank im Docker Container laufen?
Für Entwicklung und Tests ja, das ist praktisch und verbreitet. Auch in der Produktion ist es möglich, dann aber mit Daten auf einem Volume, regelmäßigen Backups und ohne offenen Port ins Internet. Bei kritischen Systemen mit viel Traffic bedeutet ein verwalteter Datenbankdienst oft weniger Risiko und weniger Wartung.
Was unterscheidet Docker Compose von Kubernetes?
Docker Compose ist ein einfaches Werkzeug, um eine Anwendung aus mehreren Containern meist auf einem Server zu beschreiben und zu starten. Kubernetes ist dagegen eine Orchestrierungsplattform, die Container über einen Cluster verteilt, skaliert und automatisch repariert. Für kleine und mittlere Projekte reicht Compose in vielen Fällen völlig aus.
Warum ist mein Docker Image so groß?
Meist liegt es an einem großen Basisimage und an Buildwerkzeugen, die im finalen Image bleiben. Nutzen Sie slim oder alpine Varianten, kopieren Sie mit einem mehrstufigen Build nur das Ergebnis und schließen Sie unnötige Ordner per .dockerignore aus. Jede Schicht und ihre Größe zeigt Ihnen der Befehl docker history.
#Docker#Container#Dockerfile#Docker Compose#DevOps#Software
Teilen:
Talha Aslan
Talha Aslan

Google Partner und Experte für digitales Marketing. Seit 2012 praktisch in SEO, Google Ads, Webdesign und E-Commerce Projekten; jeder Beitrag hier stammt aus dieser Erfahrung.

Nächstes Projekt

Sprechen wir über Ihr Projekt.

Keine Zwischenhändler, keine Ebenen: Sie sprechen direkt mit dem Experten, der die Arbeit macht. Das Erstgespräch ist kostenlos, ich höre zu und melde mich mit einer klaren Roadmap.

WhatsApp Jetzt anrufen