labkompass

Command Builder · Docker

Docker Run Command Builder

Ports, Volumes, Umgebungsvariablen, Restart-Policy — bei docker run kommt schnell einiges zusammen. Hier klickst du dir den Befehl zusammen und bekommst ihn sauber formatiert zum Kopieren — wahlweise als docker-run-Befehl oder als fertige compose.yaml, mit einer Erklärung für jede Option.

Vorlage übernehmen:

Optionen

Ports

Leitet einen Port des Hosts an den Container weiter — Schema Host-Port:Container-Port.

Volumes

Bindet einen Ordner des Hosts in den Container ein — Daten überleben so das Neuerstellen des Containers.

Environment-Variablen

Setzt eine Umgebungsvariable im Container — viele Images werden darüber konfiguriert.

Erweiterte Optionen

Labels

Metadaten am Container — z. B. für Traefik-Routing oder Watchtower.

Generierter Befehl

docker run -d \
  --name nginx \
  --restart unless-stopped \
  -p 8080:80 \
  -v /srv/nginx:/usr/share/nginx/html \
  -e TZ=Europe/Berlin \
  nginx:latest

Das bedeuten die Parameter

-d
Startet den Container im Hintergrund — Logs später mit docker logs ansehen.
--name
Fester Name statt eines zufälligen — macht docker logs nginx und docker stop nginx möglich.
--restart
Startet den Container nach Reboot oder Absturz automatisch neu — außer du hast ihn selbst gestoppt.
-p
Leitet einen Port des Hosts an den Container weiter — Schema Host-Port:Container-Port. Mit einer Host-IP wie 127.0.0.1 ist der Dienst nur lokal erreichbar statt im ganzen Netz.
-v
Bindet einen Ordner des Hosts in den Container ein — Daten überleben so das Neuerstellen des Containers.
-e
Setzt eine Umgebungsvariable im Container — viele Images werden darüber konfiguriert.
nginx:latest
Das Image aus Docker Hub oder einer eigenen Registry, mit Tag (Version) dahinter. Statt latest lieber eine feste Version angeben — dann ändert sich beim Neuerstellen nichts unbemerkt.

Die drei Dinge, die fast jeder Container braucht

Ein Dienst im Homelab läuft fast immer mit demselben Grundgerüst: -d für den Hintergrund, --restart unless-stopped, damit er Reboots übersteht, und mindestens ein Volume (-v) — denn ohne Volume sind alle Daten weg, sobald der Container neu erstellt wird. Ports folgen dem Schema Host:Container: -p 8080:80 bedeutet, dass Port 80 des Containers auf deinem Server als 8080 erreichbar ist.

Wann docker run — und wann Compose?

docker run ist perfekt zum Ausprobieren und für Einmal-Aufgaben (mit --rm räumt sich der Container selbst weg). Sobald ein Dienst dauerhaft laufen soll oder mehrere Container zusammenspielen, lohnt der Umstieg auf Docker Compose — die Optionen heißen dort praktisch gleich, nur als YAML statt als Flags. Genau dafür hat der Builder den Reiter compose.yaml: dieselben Eingaben, fertig als Compose-Datei zum Kopieren.

Alle Optionen im Überblick

OptionBedeutungErklärung
ImageImageDas Image aus Docker Hub oder einer eigenen Registry, mit Tag (Version) dahinter. Statt latest lieber eine feste Version angeben — dann ändert sich beim Neuerstellen nichts unbemerkt.
Befehl im Container (optional)Befehl im Container (optional)Überschreibt den Standard-Befehl (CMD) des Images.
-dDetached (im Hintergrund)Startet den Container im Hintergrund — Logs später mit docker logs ansehen.
-iInteractiveHält die Eingabe offen — zusammen mit TTY für eine Shell im Container.
-tTTYWeist ein Terminal zu — zusammen mit Interactive (-it) für interaktive Nutzung.
--rmNach Beenden löschenRäumt den Container nach dem Beenden automatisch weg — gut für Einmal-Tests, nicht für Dienste.
--nameContainernameFester Name statt eines zufälligen — macht docker logs nginx und docker stop nginx möglich.
--restartRestart PolicyBestimmt, ob Docker den Container automatisch neu startet. Nicht mit „Nach Beenden löschen“ (--rm) kombinierbar — deshalb ist die Auswahl dann ausgegraut.
--restart unless-stoppedunless-stopped (empfohlen)Startet den Container nach Reboot oder Absturz automatisch neu — außer du hast ihn selbst gestoppt.
--restart alwaysalwaysStartet immer neu — auch wenn du den Container manuell gestoppt hattest.
--restart on-failureon-failureStartet nur nach einem Absturz (Exit-Code ≠ 0) neu.
--networkNetzwerkBestimmt, wie der Container ans Netzwerk angebunden wird.
--network hosthostDer Container nutzt direkt den Netzwerk-Stack des Hosts — Port-Weiterleitungen entfallen. ⚠ --network host hebt die Netzwerk-Isolation auf: Der Container lauscht direkt auf den Ports des Hosts, -p-Weiterleitungen wirken nicht mehr.
--network nonenoneKein Netzwerk — der Container ist komplett offline.
--privilegedPrivilegedVoller Zugriff auf Geräte und Kernel-Funktionen des Hosts — nur für Sonderfälle. ⚠ --privileged gibt dem Container praktisch Root-Rechte auf dem Host — die Isolation ist damit weitgehend aufgehoben.
-pPortsLeitet einen Port des Hosts an den Container weiter — Schema Host-Port:Container-Port. Mit einer Host-IP wie 127.0.0.1 ist der Dienst nur lokal erreichbar statt im ganzen Netz.
-vVolumesBindet einen Ordner des Hosts in den Container ein — Daten überleben so das Neuerstellen des Containers.
-eEnvironment-VariablenSetzt eine Umgebungsvariable im Container — viele Images werden darüber konfiguriert.
--labelLabelsMetadaten am Container — z. B. für Traefik-Routing oder Watchtower.
--hostnameHostnameHostname innerhalb des Containers.
-wWorking DirectoryArbeitsverzeichnis, in dem Befehle im Container starten.
--userUser (UID:GID)Startet Prozesse im Container als dieser Benutzer statt als Root.
--memoryMemory-LimitRAM-Obergrenze für den Container, z. B. 512m oder 2g.
--cpusCPU-LimitCPU-Obergrenze in Kernen, z. B. 1.5.

Häufige Fragen

Kann ich einen bestehenden docker-run-Befehl in Compose umwandeln?

Der Builder übersetzt die Eingaben aus dem Formular in beide Formate — er parst keine fertigen Befehle. Trag die Optionen deines Befehls einfach oben ein und wechsle dann auf den Reiter compose.yaml.

Warum taucht -d in der compose.yaml nicht auf?

Weil Compose das selbst regelt: docker compose up -d startet alle Dienste im Hintergrund. Auch --rm hat kein Compose-Gegenstück — Container werden dort mit docker compose down aufgeräumt.

Was ist der Unterschied zwischen unless-stopped und always?

Beide starten den Container nach einem Reboot oder Absturz neu. Der Unterschied zeigt sich nach einem manuellen docker stop: unless-stopped respektiert das und lässt den Container liegen, always startet ihn beim nächsten Docker-Start trotzdem wieder.

Passende Tools

Passende Guides