Italiano

Strumenti per sviluppatori · Docker viene eseguito sul convertitore di composizione Docker

Come i flag di esecuzione della finestra mobile vengono mappati sulle chiavi Compose: -p, -v, -e, --name e altro ancora

· Come funziona

finestra mobile comporre flusso di lavoro dello sviluppatore

Docker esegue la mappatura delle opzioni dei comandi su porte, volumi e chiavi di ambiente in Compose
Illustrazione vettoriale originale ToolAcre

La maggior parte dei flag di esecuzione della finestra mobile hanno un equivalente Compose uno a uno e alcuni non ne hanno nessuno. Questo post illustra la mappatura in modo che una definizione di servizio convertita venga letta come previsto.

Un'esecuzione della finestra mobile che racchiude tre righe in README: funziona, nessuno può esaminarla e il team vuole un compose.yaml

Un'esecuzione docker multilinea può avviare un servizio oggi nascondendo il proprio contratto operativo in un alias di shell o README. Un file Compose sposta le stesse scelte in una definizione di servizio rivedibile, ma la conversione deve tenere conto di ogni flag anziché eliminare silenziosamente le impostazioni di sicurezza. ToolAcre analizza il comando come testo: non esegue mai l'immagine, non apre un socket Docker o distribuisce un contenitore. Tratta l'output come una bozza di configurazione che necessita ancora di un operatore per verificare i percorsi dell'host, le credenziali e i presupposti della rete.

La forma di un servizio: immagine, quindi un set di chiavi che rispecchiano i flag, sotto services: e un nome di servizio

Componi YAML inizia sotto services:, seguito dal nome del servizio e dall'immagine:. A differenza di una riga di comando, le sue chiavi raggruppano valori ripetuti come porte e voci di ambiente in sequenze. ToolAcre deriva un nome di servizio da --name o dall'immagine e crea un modello prima di serializzare YAML. I file Compose correnti non necessitano di una versione di livello superiore: key; aggiungendone uno perché un vecchio post sul blog mostrava che avrebbe creato un avviso obsoleto anziché migliorare la compatibilità.

I flag comuni: -p alle porte, -v ai volumi, -e all'ambiente, --name al nome_contenitore, --restart al riavvio, --network alle reti

Le mappature comuni rendono riconoscibile il file: -p 8080:80 diventa porte: con una mappatura tra virgolette, -v host:container diventa una voce di volumi, -e KEY=il valore entra nell'ambiente, --name diventa container_name, --restart diventa riavvio e --network necessita del contesto di rete. Citare la mappatura della porta è importante perché YAML dovrebbe trattarla come una stringa, non interpretare la punteggiatura come un altro tipo. Un volume denominato può richiedere la propria dichiarazione di volumi di livello superiore; è necessario verificare il montaggio di un collegamento host rispetto al computer su cui verrà eseguito Compose.

I flag meno comuni: --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label, --add-host e le relative chiavi

Flag come --hostname, --user, --workdir, --entrypoint, --cap-add, --device, --label e --add-host hanno concetti di servizio corrispondenti, ma la loro semantica può dipendere dal runtime e dall'host. Una --security-opt non supportata non deve essere inventata come chiave dall'aspetto plausibile o scartata in modo invisibile. ToolAcre elenca gli avvisi che denominano opzioni non supportate in modo che un revisore possa completare la mappatura manualmente o decidere che Compose non è la sostituzione corretta. La presenza di una chiave YAML non dimostra che il servizio si avvia con gli stessi privilegi.

Argomenti posizionali: l'immagine diventa immagine: e qualsiasi cosa dopo diventa comando:

Il nome dell'immagine è un argomento posizionale dopo l'esecuzione e le sue opzioni. Gli argomenti dopo l'immagine diventano il comando del servizio, non più i flag di esecuzione di Docker; spostare un token oltre quel confine cambia il programma che lo riceve. Anche le virgolette e le barre rovesciate della shell sono importanti quando si divide un esempio README in token. Il parser di ToolAcre non è un interprete di shell, quindi una variabile come $HOME dovrebbe essere rivista nel contesto anziché dare per scontato che si espanda come farebbe nella shell interattiva originale.

Esempio realizzato: conversione di un'esecuzione docker Postgres: il comando completo, la definizione del servizio risultante e un confronto riga per riga

Consideriamo il comando illustrativo docker run -d --name demo-db -p 5432:5432 -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=solo demo --restart a meno che non siano stati arrestati i postgre:16. ToolAcre emette services.demo-db con l'immagine postgres:16, container_name demo-db, una porta 5432:5432 tra virgolette, un volume pgdata, una voce dell'elenco di ambienti, restart: less-stopped e una dichiarazione del volume pgdata di livello superiore. Avverte che -d è una scelta da riga di comando; la finestra mobile compone -d lo gestisce. "Solo demo" è un segnaposto didattico deliberatamente insicuro: non inserire mai una vera password del database in questo YAML generato.

Cosa non copre: flag senza servizio equivalente (-d, --rm) e cose che non sono affatto presenti nel comando, come i contesti di build

Non tutti i flag di esecuzione hanno una controparte di proprietà di servizio durevole. -d è gestito dal comando di composizione che invochi; --rm appartiene a un'esecuzione di composizione una tantum anziché a un servizio a lunga esecuzione. Non è possibile dedurre un contesto di compilazione, un archivio segreto, una strategia di integrità o una dipendenza multiservizio assente dal comando originale. Lo strumento segnala flag non supportati invece di fingere che il suo output sia un piano di distribuzione completo. Leggi il riferimento al servizio Docker Compose prima di distribuire un contenitore privilegiato o sensibile alla rete.

Conclusione: Compose è la stessa configurazione, strutturata, e il convertitore produce la definizione del servizio dal comando che incolli

Compose è la stessa configurazione, strutturata per revisione e ripetibilità. Il convertitore Docker Run to Docker Compose ti fornisce una definizione di servizio candidato nel tuo browser e mantiene locale il comando incollato; non esegue Docker. Confronta ogni flag di origine con la relativa chiave YAML, risolvi gli avvisi e rimuovi i segreti dai semplici blocchi dell'ambiente prima di applicare il risultato a un host reale.