Docker Compose è uno strumento estremamente popolare per lavorare con i contenitori. Mentre il normale docker
La CLI interagisce con un container alla volta, docker-compose
ti consente di controllare più contenitori in modo aggregato.
Compose esiste attualmente come progetto autonomo distribuito indipendentemente da Docker. Se desideri utilizzare Compose, dovrai scaricarlo separatamente. Molti utenti finiscono per prendere direttamente il binario, poiché i gestori di pacchetti del sistema operativo spesso restano indietro, anche se offrono l'ultima versione Docker.
Docker Compose v2 è stato annunciato alla DockerCon 2021. Promette grandi cambiamenti all'esperienza di Compose integrandola nella docker
CLI. v2 include anche nuove funzioni utili per aiutarti a gestire le pile di contenitori.
Il nuovo comando "docker compose"
Docker Compose v2 porta la funzionalità Compose in Docker stesso. Potrai utilizzare Compose ovunque sia installata l'ultima Docker CLI, senza bisogno di ulteriori passaggi. Sotto, Docker continua a utilizzare le funzionalità fornite dal progetto Compose.
docker-compose
esistente i comandi dovrebbero essere mappati direttamente al loro nuovo docker compose
controparti. Nella maggior parte dei casi, puoi rilasciare il trattino senza ulteriori modifiche richieste. docker compose
supporta quasi tutti i sottocomandi e i flag di Compose v1, anche se una minoranza non verrà implementata.
Compose v2 supporterà comunque l'invocazione tramite docker-compose
binario. Gli script del flusso di lavoro esistenti dovrebbero continuare a funzionare, anche se non li aggiorni immediatamente per utilizzare docker compose
. A lungo termine, è probabile che la maggior parte degli autori passerà invece al nuovo modulo.
Sperimentazione con Docker Compose v2
Compose v2 è attualmente in versione beta. Sebbene sia ancora in fase di sviluppo, il nuovo binario viene già distribuito con Docker Desktop per Windows e Mac. Desktop v3.4 ha aggiunto il supporto per docker compose
comandi, quindi è probabile che tu possa già usarlo oggi. I pacchetti Linux verranno aggiornati nel corso dell'anno; nel frattempo è disponibile uno script di installazione manuale.
La docker-compose
il comando può attualmente invocare v1 o v2, per impostazione predefinita v1. L'opzione viene attivata automaticamente per un sottoinsieme di utenti; alla fine lancerà la v2 per tutti.
Puoi cambiare manualmente docker-compose
tra v1 e v2 eseguendo docker-compose disable-v2
o docker-compose enable-v2
. Ciò ti consente di mantenere la compatibilità con tutti i file Compose esistenti che non funzionano con la v2. docker compose
i comandi utilizzeranno sempre la v2.
Modifiche alle specifiche
L'introduzione della funzionalità di Compose nella Docker CLI ha reso necessarie modifiche alle specifiche di Compose. Questo ora distingue tra implementazioni di comandi e docker-compose.yml
Formato YAML.
L'approccio rivisto offre nuove opportunità per integrare funzionalità aggiuntive. Le implementazioni sperimentali possono essere fornite più rapidamente e il team di Compose è meglio attrezzato per aggiungere proposte della community. La CLI è più disaccoppiata dal formato di file YAML, quindi implementazioni alternative (come docker compose
) sono una possibilità.
Oltre alla CLI, l'esistenza delle specifiche Composer consente ai provider cloud di implementare anche la funzionalità Compose. Ora puoi eseguire docker compose up
in un contesto Docker basato su cloud per avviare la tua app in produzione. Docker viene fornito con il supporto integrato per gli ambienti Amazon ECS e Microsoft ACI.
Internamente, Compose v2 utilizza Buildkit per impostazione predefinita per build più veloci. Le prestazioni complessive dovrebbero essere più rapide man mano che più attività vengono eseguite in parallelo, riducendo i tempi di elaborazione.
Nuove funzionalità nella v2
Il passaggio da docker-compose
su docker-compose
non è l'unico cambiamento nella v2. Ci sono anche nuove funzionalità che influiscono sul modo in cui interagisci con le pile di contenitori.
Una limitazione di Compose v1 è il suo approccio ai nomi dei progetti. Quando esegui docker-compose up -d
, Compose antepone il nome del progetto al nome del servizio di ciascun contenitore. Ciò garantisce che tutti i contenitori siano raggruppati.
v1 deduce il nome del progetto dal nome della directory di lavoro. Puoi scegliere manualmente un nome diverso impostando il COMPOSE_PROJECT_NAME
variabile di ambiente.
v2 lo semplifica aggiungendo un flag CLI per impostare il nome del progetto. Aggiungi --project-name
o -p
per ignorare il nome della directory di lavoro, senza alterare l'ambiente. L'impostazione manuale del nome del progetto ti consente di combinare contenitori da più directory di lavoro in uno stack o avviare più istanze di uno stack di contenitori.
Un'altra nuova funzionalità v2 ti consente di elencare tutti gli stack Compose sul tuo sistema. La docker compose ls
Il comando fornisce una tabella di nomi di progetto e il loro stato (in esecuzione o interrotto). Questo integra il docker compose ps
comando che fornisce gli stati dei contenitori in uno stack.
Compose v2 aggiunge anche il supporto per docker compose cp
. Questo comando funziona in modo simile a docker cp
e ti consente di copiare file dentro e fuori i tuoi contenitori:
docker cp my-container local-file.txt /path/to/container/file.txt
Riepilogo
Docker Compose v2 è un aggiornamento sostanziale che offre maggiore praticità allo strumento di gestione dei container. L'integrazione di Compose nella CLI Docker principale significa che è disponibile ovunque si trovi Docker. Ciò rende più accessibile e più facile iniziare.
Compose v2 offre anche alcuni comandi di utilità aggiuntivi per semplificare il lavoro con diversi stack e contenitori. Ottieni una migliore visibilità su ciò che è in esecuzione sul tuo sistema. Sebbene sia ancora in versione beta al momento della scrittura, gli utenti Windows e Mac possono utilizzare la v2 oggi, mentre gli utenti Linux possono scaricare l'ultima build da GitHub.