GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Cos'è Docker Compose

Introduzione

Lo sviluppo di applicazioni utilizzando Docker può diventare difficile quando si destreggiano più servizi e container. Ulteriori informazioni su Docker Compose, lo strumento che ti aiuterà a eseguire ambienti applicativi multi-container.

In questo tutorial imparerai tutto su Docker Compose, i vantaggi dell'utilizzo di questo strumento, i casi d'uso e le funzionalità.

Cos'è Docker Compose?

Un'applicazione può essere costituita da più contenitori che eseguono servizi diversi. Può essere noioso avviare e gestire i container manualmente, quindi Docker ha creato uno strumento utile che aiuta ad accelerare il processo:Docker Compose.

Docker Compose è un software utilizzato per definire ed eseguire applicazioni Docker multi-container. Può gestire più container contemporaneamente nell'ambiente di produzione, staging, sviluppo, test e CI. Pertanto, utilizza Docker Compose per gestire l'intero ciclo di vita dello sviluppo del software (SDLC).

Docker Compose funziona applicando le regole definite in un docker-compose.yaml file. Il file YAML configura i servizi dell'applicazione e include regole che specificano come si desidera che vengano eseguiti. Con il file in atto, puoi avviare, interrompere o ricostruire tutti i servizi utilizzando un unico comando. Inoltre, puoi controllare lo stato di un servizio, visualizzare gli output dei log ed eseguire comandi una tantum.

L'installazione di Docker Compose è semplice. Per istruzioni dettagliate, controlla:

Come installare Docker Compose su Ubuntu 18.04Come installare Docker Compose su CentOS 7Come installare Docker Compose su Ubuntu 20.04

Docker Componi casi d'uso

I casi d'uso comuni di Docker Compose includono:

  • Ambienti di test automatizzati . Compose supporta il test automatizzato, che è una parte essenziale di CI/CD in quanto può creare e distruggere facilmente l'ambiente di test richiesto. Gli sviluppatori possono definire e configurare l'ambiente necessario per l'esecuzione di test end-to-end automatizzati utilizzando il file Docker Compose appropriato.
  • Distribuzioni su host singolo . In Docker Compose, i container sono progettati per essere eseguiti su un singolo host poiché sono stati tradizionalmente focalizzati sullo sviluppo e sui flussi di lavoro di test.
  • Ambienti di sviluppo . Compose è un modo semplice e veloce per avviare progetti in quanto può creare rapidamente nuovi ambienti di sviluppo isolati. Il software documenta e configura tutte le dipendenze del servizio dell'applicazione (inclusi database, cache, API del servizio Web, ecc.). Ti permette di creare e avviare uno o più contenitori per ogni dipendenza utilizzando un unico comando.

Vantaggi di Docker Compose

Ecco alcuni dei principali vantaggi dell'utilizzo di Docker Compose:

  • Configurazione rapida e semplice. Grazie agli script YAML e alle variabili di ambiente, puoi facilmente configurare o modificare i servizi applicativi.
  • Protetto comunicazione interna. Compose crea una rete per tutti i servizi da condividere. Ciò aggiunge un ulteriore livello di sicurezza per l'app poiché non è possibile accedere ai servizi dall'esterno.
  • Portabilità e supporto CI/CD. Poiché tutti i servizi sono definiti all'interno del file docker-compose, gli sviluppatori possono facilmente accedere e condividere l'intera configurazione. Estraendo il file YAML e il codice sorgente, possono avviare l'ambiente in pochi minuti. Ciò contribuisce a creare e abilitare una pipeline CI/CD efficiente.
  • Uso efficiente delle risorse. Docker Compose consente di ospitare più ambienti isolati su un host. L'esecuzione di tutto su un singolo componente hardware ti consente di risparmiare molte risorse. Le sue caratteristiche che gli consentono di memorizzare nella cache una configurazione e di riutilizzare i contenitori esistenti contribuiscono anche all'efficienza delle risorse.

Funzioni di composizione Docker

Esistono diverse importanti funzionalità di Docker Compose che offrono i vantaggi sopra menzionati.

Ospitare più ambienti isolati su un singolo host

Compose mantiene gli ambienti isolati l'uno dall'altro su un singolo host utilizzando i nomi dei progetti.

Per impostazione predefinita, il nome del progetto è il nome di base della directory del progetto, mentre la directory del progetto è la directory di base del file docker-compose. Puoi modificare i valori predefiniti:

  • Imposta il nome del progetto utilizzando il -p opzione della riga di comando o il COMPOSE_PROJECT_NAME variabile di ambiente.
  • Imposta la directory del progetto utilizzando il --project-directory variabile di ambiente.

Puoi utilizzare questa funzionalità su un host di sviluppo per eseguire copie stabili di ciascun ramo di funzionalità del tuo progetto creando più copie dell'ambiente con nomi diversi.

Se stai lavorando su un server CI o su un host condiviso, assicurati che le build non interferiscano tra loro. Per fare ciò, imposta i nomi dei progetti su numeri di build univoci.

Supporto delle variabili d'ambiente

Puoi personalizzare i contenitori per ambienti o utenti diversi aggiungendo variabili di ambiente nel file di composizione mobile. Ciò ti offre maggiore flessibilità durante la configurazione dei contenitori con Compose, poiché i valori delle variabili non sono codificati nella configurazione.

I valori delle variabili possono essere impostati nell'ambiente shell (da cui esegui docker-compose ) o in un file .env (memorizzato nella directory del progetto). Per impostazione predefinita, Docker Compose applica i valori specificati nel file .env. Tuttavia, i valori impostati nell'ambiente della shell hanno la precedenza su quelli del file .env.

Puoi utilizzare questa funzione per qualsiasi cosa, dalla fornitura sicura di password alla specifica di una versione del software.

Conservazione dei dati sul volume

Un'altra grande caratteristica di Docker Compose è che salva i dati utilizzati dai servizi. Pertanto, non devi preoccuparti di perdere i dati creati nei contenitori. Se sono presenti contenitori di esecuzioni precedenti, Compose li troverà e copierà i relativi volumi nella nuova esecuzione.

Riutilizzo dei contenitori esistenti

Compose ricrea solo i contenitori che sono stati modificati dall'ultima esecuzione. Se non ci sono modifiche, riutilizza il contenitore esistente.

Questa funzione si basa sulla capacità del software di memorizzare nella cache le configurazioni dei container, consentendoti di configurare i tuoi servizi più velocemente.

Comandi di base per la composizione di Docker

La sintassi di base per eseguire i comandi Docker Compose è:

docker-compose [command]

Di seguito troverai alcuni dei comandi Docker Compose più basilari e a cosa servono.

Comando Descrizione
docker-compose --help mostra aiuto, istruzioni per l'uso e argomenti per il comando docker-compose
docker-compose build cerca tutti i servizi che contengono il build: istruzione nel file docker-compose.yml ed eseguire una docker build per ciascuno
docker-compose run esegui un comando una tantum su un servizio
docker-compose up crea, (ri)crea, avvia e collega a contenitori per un servizio
docker-compose -f [command] specificare la posizione di un file di configurazione di composizione mobile aggiungendo il -f bandiera
docker-compose start avvia i contenitori esistenti per un servizio
docker-compose stop interrompi l'esecuzione dei contenitori (senza rimuoverli)
docker-compose pause metti in pausa i contenitori in esecuzione di un servizio
docker-compose unpause riattiva i contenitori di un servizio in pausa
docker-compose down Arresta i contenitori (e rimuovi contenitori, reti, volumi e immagini)
docker-compose ps elenca i contenitori all'interno del file di configurazione di composizione mobile
docker-compose images elenca le immagini utilizzate dai contenitori creati
docker-compose ls elenco dei progetti Compose in esecuzione

Come utilizzare Docker Compose?

Ci sono tre passaggi per usare Compose:

1. Il primo passaggio consiste nella creazione di un Dockerfile per definire l'ambiente dell'applicazione. Il file crea immagini Docker, che verranno utilizzate come basi per i contenitori.

2. Successivamente, è necessario definire i servizi in un file Compose. Crea un nuovo file nella directory del progetto con il nome docker-compose.yml e definisci i tuoi servizi usando la sintassi YAML. Un esempio di tale file includerebbe il seguente contenuto:

version: "3.9"
services:
  web:
    build: .
    ports:
      - "5000:5000"
    volumes:
      - .:/code
      - logvolume01:/var/log
    links:
      - redis
  redis:
    image: redis
volumes:
  logvolume01: {}

3. Infine, esegui e gestisci l'app utilizzando Docker Compose CLI. Puoi eseguire un singolo docker-compose up comando per avviare l'intera applicazione in un'istanza.


Ubuntu
  1. Che cos'è Docker (e contenitori Linux?)

  2. Come usare Docker Compose

  3. Cosa c'è di nuovo in Docker Compose v2?

  4. Una guida rapida all'uso di Docker Compose

  5. Impostazione del nome host in Docker Compose

Come installare Docker Compose su CentOS 7

Che cos'è Docker Compose e come lo usi?

Che cos'è un manifesto di immagine Docker?

Come installare Docker Compose su Ubuntu

Docker File vs Docker Compose:qual è la differenza?

Cosa fare se un container Docker esce immediatamente