docker run in docker-compose.yml umwandeln
docker run in docker-compose umwandeln: Befehl einfügen und eine compose.yaml mit Ports und Volumes, Umgebung, Netzwerken, Healthcheck und Limits erhalten.
Alles läuft in Ihrem Browser. Eingaben verlassen Ihr Gerät nicht.
| docker run | docker-compose.yml |
|---|---|
--name web | container_name: web |
-p 8080:80 | ports: ["8080:80"] |
-v ./daten:/data, -v name:/data | volumes: (benannte Volumes zusätzlich oben auf Projektebene) |
--mount type=bind,src=…,dst=… | lange Volume-Syntax mit type, source, target |
-e KEY=wert, --env-file .env | environment:, env_file: |
--restart unless-stopped | restart: unless-stopped |
--network netz | networks: plus Netzwerk als external |
--network host | network_mode: host |
-w /app, -u 1000:1000 | working_dir:, user: |
--memory 512m, --cpus 1.5 | mem_limit:, cpus: |
--health-cmd … | healthcheck: test: ["CMD-SHELL", …] |
--log-opt max-size=10m | logging: options: |
-it | stdin_open: true, tty: true |
--gpus all | deploy: resources: reservations: devices: |
--rm, -d | entfallen; Compose startet mit up -d und entfernt mit down |
Von docker run zur Compose-Datei
Dieses Werkzeug wandelt einen Befehl docker run in docker-compose um: Fügen Sie den Befehl ein, auch mehrzeilig mit Backslash, und Sie erhalten eine fertige compose.yaml. Übernommen werden Name, Ports und Volumes, Umgebungsvariablen, Netzwerke, Neustart-Regel, Benutzer, Arbeitsverzeichnis, Ressourcenlimits, Healthcheck, Logging, Capabilities, Geräte, GPUs sowie Image und Befehl. So lässt sich eine docker-compose.yml erstellen, ohne jede Option in der Dokumentation nachzuschlagen. Optionen ohne Gegenstück werden aufgelistet.
Warum Compose? Ein langer docker-run-Befehl gerät schnell in Vergessenheit, die Compose-Datei dagegen liegt versioniert im Projekt. Gestartet wird mit docker compose up -d, gestoppt und entfernt mit docker compose down. Der heutige Dateiname ist compose.yaml; docker-compose.yml wird weiter erkannt. Die früher übliche Zeile version: ist veraltet und wird deshalb nicht erzeugt. Ports schreibt der Generator immer in Anführungszeichen, weil YAML Angaben wie 22:22 sonst als Zahl im Sechzigersystem lesen kann.
Grenzen: Der Docker Compose Generator kennt die gängigen Optionen, aber nicht jede. Relative Pfade wie ./html beziehen sich in Compose auf den Ordner der Compose-Datei, bei docker run auf das aktuelle Verzeichnis. Netzwerke, die mit docker run vorhanden sein mussten, werden als external eingetragen; soll Compose sie selbst anlegen, entfernen Sie diese Zeile. Für Shell-Variablen wie $HOME im Befehl gilt: Compose setzt sie beim Start ebenfalls ein, sofern sie in der Umgebung oder einer .env-Datei stehen.
Anleitung: docker run in docker-compose in 4 Schritten
- Den docker-run-Befehl in das Feld „docker run“ einfügen, auch mehrzeilig mit Backslash, oder mit „Beispiel“ ein Muster laden.
- Die erzeugte compose.yaml mit Ports, Volumes, Umgebung, Netzwerken und Healthcheck prüfen.
- Die Liste der Optionen ohne Gegenstück lesen und diese bei Bedarf von Hand ergänzen.
- Die Datei kopieren oder „compose.yaml herunterladen“ und mit
docker compose up -dstarten.
Typische Anwendungsfälle
- Einen Befehl aus einer README, etwa für Nextcloud, Home Assistant oder eine Datenbank, dauerhaft als Compose-Datei ablegen.
- Mehrere Container eines Servers in eine versionierte Konfiguration überführen.
- Einen lang gewachsenen docker-run-Befehl mit vielen -e- und -v-Optionen übersichtlich machen.
Häufige Fragen
Wie starte ich die erzeugte Datei?
Speichern Sie sie als compose.yaml in einem eigenen Ordner und führen Sie dort docker compose up -d aus. Mit docker compose logs -f sehen Sie die Ausgabe, mit docker compose down stoppen und entfernen Sie den Dienst.
Brauche ich noch version: in der Compose-Datei?
Nein. Die Angabe ist seit der Compose Specification veraltet; aktuelle Versionen von Docker Compose ignorieren sie und geben eine Warnung aus.
Was passiert mit -d und --rm?
Beide entfallen. Ob Container im Hintergrund laufen, bestimmen Sie beim Aufruf mit docker compose up -d. Entfernt werden Container mit docker compose down.
Warum stehen die Ports in Anführungszeichen?
YAML kann Werte wie 22:22 als Zahl im Sechzigersystem deuten. In Anführungszeichen bleiben Ports immer Text, so wie Compose sie erwartet.
Was ist mit benannten Volumes?
Ein Volume wie -v daten:/var/lib/mysql wird unter volumes beim Dienst eingetragen und zusätzlich auf oberster Ebene deklariert. Compose legt es beim ersten Start an und behält es bei down; erst down -v löscht es.
Wie wandle ich einen laufenden Container in eine Compose-Datei um?
Docker selbst gibt den ursprünglichen Befehl nicht aus. Die Einstellungen stehen aber in docker inspect containername; daraus lässt sich ein docker-run-Befehl rekonstruieren und hier umwandeln. Prüfen Sie das Ergebnis, weil inspect auch Standardwerte enthält.
Was ist der Unterschied zwischen docker-compose und docker compose?
docker-compose mit Bindestrich ist das ältere, eigenständige Programm in Python. docker compose mit Leerzeichen ist das aktuelle Plugin der Docker-CLI. Beide lesen dieselben Compose-Dateien, neue Installationen nutzen docker compose.
Das könnte auch helfen
Cron-Ausdruck erklären
Crontab-Zeilen mit 5 oder 6 Feldern auf Deutsch erklärt, mit den nächsten 10 Ausführungen.
ÖffnenCron-Generator
Zeitplan im Formular wählen und die fertige Crontab-Zeile kopieren.
ÖffnenUnix-Zeitstempel umrechnen
Timestamp in Datum und zurück, Sekunden und Millisekunden erkannt, UTC und Berlin.
ÖffnenUUID-Generator
UUID v4 und v7 erzeugen, bis zu 1.000 auf einmal, und vorhandene UUIDs prüfen.
ÖffnenULID-Generator
Sortierbare IDs in Crockford Base32 erzeugen, dekodieren und in UUID umwandeln.
ÖffnenTexte vergleichen (Diff)
Unterschiede zwischen zwei Texten zeilen-, wort- oder zeichenweise finden.
Öffnen