La dockerizzazione ha ridefinito il processo di distribuzione e automazione nell'industria del software. Fin dalla sua nascita, il Docker team si è costantemente impegnato per rendere la distribuzione automatizzata fluida. La tecnologia di containerizzazione non solo consente uno sviluppo rapido ed efficiente delle applicazioni, ma fa anche risparmiare tempo e sforzi faticosi. Funzionalità imbattibili come l'orchestrazione, la definizione e l'esecuzione di applicazioni multi-container rendono Docker una scelta preferita per gli sviluppatori.
Container e immagini Docker
Mentre ti addentri per comprendere meglio Docker, è essenziale ripassare le basi. Capire come funziona Docker può essere complicato se non hai esperienza di lavoro con esso. In questa sezione definiremo alcuni concetti essenziali per i principianti. Se ritieni di avere familiarità con questi concetti, sentiti libero di saltare e passare alla sezione successiva. Puoi anche dare un'occhiata alla nostra guida completa che spiega i concetti fondamentali di Docker.
-
Immagini Docker
Le immagini Docker sono una raccolta di file di sola lettura. Una volta create le immagini Docker, non è possibile modificarle, sebbene sia consentita l'eliminazione. Utilizziamo un'immagine Docker per creare uno o più container Docker in base alle nostre esigenze. Per verificare il numero di immagini in esecuzione nel sistema, utilizza il comando:
|
1 |
$docker images |
Quando esegui il pull di immagini da un registro remoto come Docker Hub, stai scaricando file e cartelle. Per eseguire il pull di un'immagine, usa il comando:
|
1 |
$docker pull (nome dell'the immagine) |
-
Container Docker
Le immagini Docker sono il modello dei container Docker. Tecnicamente, un container Docker è un'istanza di un'immagine Docker. Immagina, se un'immagine Docker è come un genitore, allora un container Docker è il figlio. A differenza delle immagini Docker che puoi creare una sola volta, puoi creare più container utilizzando una singola immagine. Per verificare l'elenco delle immagini in esecuzione nel sistema, utilizza il comando:
|
1 |
$docker ps |
Per eseguire il pull di un container, usa il seguente comando:
|
1 |
$docker pull (nome del containercontainer) |
-
Come funzionano le immagini e i container Docker
Le immagini e i container Docker lavorano di pari passo per liberare il potenziale di Docker. Un singolo container viene creato utilizzando l'immagine Docker tramite il comando run. Quando crei un container Docker, viene creato un nuovo livello noto come Container Layer. Il livello appena creato contiene l'applicazione e le sue dipendenze. Ogni container creato ha un Container Layer di lettura/scrittura diverso e tutte le modifiche apportate nel container Docker si riflettono automaticamente sul Container Layer. Ricorda che se scegli di eliminare un container, perderai anche il Container Layer.
Diamo il benvenuto a Docker Compose
Docker Compose è uno strumento di gestione dei container che consente di configurare e orchestrare tutti i container Docker in un unico file YAML. Avviare, arrestare e creare collegamenti e volumi intra-container è reso più semplice con questo strumento.
-
Cosa fa Docker Compose?
In parole povere, Docker Compose semplifica le attività complicate eliminando conflitti e problemi organizzativi. Consente agli utenti di gestire diversi container Docker in modo centralizzato. In altre parole, invece di avere tutti i servizi in un unico grande container, Docker Compose suddivide un servizio in più servizi in modo che gli utenti possano accedervi e gestirli senza sforzo.
In questa guida, ti guideremo attraverso i passaggi per installare la versione corrente di Docker Compose per la gestione di applicazioni multi-container su CentOS 7. Esamineremo anche alcuni comandi di base necessari per utilizzare correttamente il software.
-
Come usare Docker Compose
Usare Docker Compose è estremamente facile, anche per i principianti. Vediamo il processo in tre passaggi previsto da Docker Compose:
1. Build: Per prima cosa, crea le immagini nel Dockerfile in base alle esigenze del tuo progetto, o magari esegui il pull dal registro.
2. Definisci: Successivamente, devi definire tutti i servizi dei componenti nel file compose.yml.
3. Esegui: Dopo aver definito i componenti, è il momento di eseguire l'applicazione utilizzando il comando docker-compose.
Prerequisiti
Prima di procedere con l'installazione di Docker Compose sul tuo server CentOS, assicurati di avere:
- Un utente non root con accesso sudo su un server CentOS 7.
- Docker installato sulla tua macchina. Fai riferimento a questo tutorial su come installare e utilizzare Docker su Ubuntu 18.04.
Ora sei pronto. Successivamente, segui i passaggi seguenti per installare Docker Compose su CentOS 7.
Passo 1: Installazione di Docker Compose
Per ottenere la versione più recente di Docker Compose, segui le istruzioni nella documentazione di Docker e scarica i file binari da repository GitHub di Docker. Verifica di avere l'ultima versione del software eseguendo il comando seguente:
|
1 |
sudo curl -L "https://github.com/docker/compose/releases/download/1.23.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose |
Per rendere eseguibile il file binario, imposta i permessi seguenti:
|
1 |
sudo chmod +x /usr/local/bin/docker-compose |
Successivamente, verifica la tua versione per controllare se l'installazione è andata a buon fine:
|
1 |
$docker-compose --version |
Il codice seguente stamperà la versione installata:
Puoi quindi eseguire un esempio “Hello World” utilizzando il Docker Compose che hai installato.
Passo 2: Utilizzare Docker Compose per eseguire un container
C'è un'immagine “Hello World” in Docker Hub, il registro pubblico di Docker, che può essere utilizzata a scopo dimostrativo e di test. Mostra come eseguire un container utilizzando Docker Compose con una configurazione minima. Per prima cosa, devi creare una directory per il nostro file YAML:
|
1 |
$mkdir hello-world |
Successivamente, spostati in questa directory:
|
1 |
$cd hello-world |
Quindi, utilizzando il tuo editor di testo preferito, genera il file YAML. In questo tutorial, useremo Vi:
|
1 |
$vi docker-compose.yml |
Premi i per entrare in modalità inserimento, quindi digita questo nel file:
|
1 2 |
my-test: image: hello-world |
Nel nome del container, verrà incorporata la prima riga. La seconda riga indica al programma quale immagine deve utilizzare per creare il container. docker-composeup cercherà un'immagine locale con il nome hello-world per verificare se è disponibile quando digiti il comando. Per uscire dalla modalità inserimento, premi ESC. Quindi, inserisci :x e premi INVIO per salvare e chiudere il file. Il comando docker images può essere utilizzato per verificare manualmente la presenza di immagini sulla tua macchina:
|
1 |
$ sudo docker images |
Se non ci sono immagini locali, appariranno solo le intestazioni delle colonne:
Per creare il container, esegui questo comando mentre ti trovi ancora nella directory /hello-world:
|
1 |
$sudo docker-compose up |
Quando esegui il comando per la prima volta e non c’è un'immagine locale chiamata hello-world, questa verrà scaricata dal repository Docker Hub:
Per garantire che l'installazione funzioni, Docker Compose scarica l'immagine, compila un container, lo collega ed esegue il programma hello programma:
Dopodiché, viene visualizzata una descrizione di ciò che è stato fatto:
Quando hello completa il suo compito, il container verrà arrestato e il comando non sarà più in esecuzione nel container. Le intestazioni delle colonne verranno visualizzate quando si guardano i processi attivi. Tuttavia, il container hello-world non sarà elencato perché non è attualmente in funzione:
|
1 |
$sudo docker ps |
Per vedere tutti i container, non solo quelli correnti, usa il -a flag:
|
1 |
$sudo docker ps -a |
Ora che hai provato a eseguire un container, puoi passare a imparare alcuni dei comandi fondamentali di Docker Compose.
Step 3: Comandi di Docker Compose
Per iniziare con Docker Compose, questa sezione esaminerà i comandi di base forniti dallo strumento docker-compose. docker-compose è un comando che funziona directory per directory. Generando una directory per ogni container e un file docker-compose.yml per directory, puoi eseguire molti gruppi di container Docker sullo stesso computer.
Finora hai eseguito Docker Compose da solo. Puoi spegnerlo premendo Ctrl-C. Questo consente alla finestra del terminale di visualizzare i messaggi di debug. Tuttavia, è consigliabile eseguire docker-compose come servizio quando si opera in produzione. L'opzione -d può essere utilizzata come un modo semplice per ottenere questo risultato:
|
1 |
docker-compose up -d |
Ora, docker-compose viene eseguito in background. Il tuo gruppo di container Docker (arrestati o in esecuzione) può essere gestito con il seguente comando:
|
1 |
$sudo docker-compose ps -a |
Lo Stato di un container sarà segnalato come Exited se è arrestato, come mostrato nell'esempio seguente:
Un container attualmente in esecuzione mostrerà:
|
1 2 3 4 |
Name Command State Ports --------------------------------------------------------------- nginx_nginx_1 nginx -g daemon off; Up 443/tcp, 80/tcp |
Puoi arrestare tutti i container Docker in esecuzione nella stessa directory del file docker-compose.yml che hai utilizzato per avviare il gruppo Docker:
|
1 |
$docker-compose stop |
Nota: Se hai bisogno di arrestare le cose in modo più forzato, docker-compose kill è anch'esso disponibile.
In alcuni casi, i container Docker potrebbero essere in grado di salvare i loro vecchi dati all'interno. Usa il comando rm per rimuovere tutti i container dal tuo gruppo di container se desideri ricominciare da zero:
|
1 |
$docker-compose rm |
L'esecuzione di uno qualsiasi di questi comandi da una directory diversa da quella in cui si trovano il container Docker e il file .yml comporterà un messaggio di errore:
|
1 2 3 4 5 6 |
ERROR: Can't find a suitable configuration file in this directory o any parent. Are you in the right directory? Supported filenames: docker-compose.yml, docker-compose.yaml |
In questa sezione abbiamo trattato le basi della gestione dei container con Docker Compose. Come discusso, nella sezione seguente potrai accedere al filesystem di Docker ed eseguire comandi da un prompt dei comandi all'interno del container se hai bisogno di un ulteriore controllo sui tuoi container.
Passo 4: Accedere al filesystem del container Docker
È possibile eseguire un prompt dei comandi in un container e accedere al filesystem del container utilizzando docker exec, che è uno strumento da riga di comando. Come esempio, esegui “Hello World” e vedi quanto tempo impiega il comando docker exec per completarsi. Ai fini di questo tutorial, è possibile utilizzare l’immagine Docker Hub di Nginx can be utilized. Crea una nuova directory chiamata nginx ed entra al suo interno:
|
1 2 |
mkdir ~/nginx cd ~/nginx |
Ora dovresti avere un file docker-compose.yml, che puoi aprire in un editor di testo:
|
1 |
vi docker-compose.yml |
Quindi, nel file, aggiungi quanto segue:
|
1 2 |
nginx: image: nginx |
È il momento di chiudere l'applicazione. Per avviare il container Nginx in background, usa il seguente comando:
|
1 |
$sudo docker-compose up -d |
Docker Compose scaricherà l'immagine Nginx e avvierà il container in background. Per continuare, dovrai inserire il CONTAINER ID del container. Puoi visualizzare tutti i container attualmente in esecuzione con il seguente comando:
|
1 |
$sudo docker ps |
Vedrai quanto segue:
Se desideri modificare il filesystem all'interno di questo container, utilizzando docker exec, dovrai utilizzare l'ID univoco del container (in questo caso, f139d0d78ca7) per avviare una shell all'interno del container:
|
1 |
$sudo docker exec -it f139d0d78ca7 /bin/bash |
Un terminale interattivo può essere aperto utilizzando l'opzione -t, mentre /bin/bash fornisce al container una shell bash. Questo è il prompt di bash che vedrai per il container successivamente:
|
1 |
root@b86b6699714c:/# |
All’interno del tuo container, troverai un prompt dei comandi. Il riavvio del container sovrascriverà qualsiasi modifica tu abbia apportato, a meno che tu non stia lavorando in una directory che è stata salvata come parte di un volume di dati. Se sei abituato a lavorare con gli strumenti da riga di comando di Linux, dovresti sapere che la maggior parte delle immagini Docker viene prodotta utilizzando le installazioni Linux più elementari.
Conclusione
Ti abbiamo guidato attraverso i passaggi per installare la versione corrente di Docker Compose per la gestione di applicazioni multi-container su CentOS 7. La capacità di Docker Compose di avviare e arrestare simultaneamente un gran numero di container è impressionante. Passare dai modelli alle applicazioni richiede pochi minuti. Pertanto, se il tuo lavoro comporta l'esecuzione di più container contemporaneamente, continuare a usare Docker Compose è un'ottima opzione. Tuttavia, non è una soluzione adatta a tutti. Puoi trovare anche opzioni migliori, a seconda delle tue esigenze specifiche, ad esempio, Kubernetes.
Per esplorare ulteriormente la potenza di Docker Compose, puoi fare riferimento a questi tutorial del nostro blog:
- Distribuire Laravel, Nginx e MySQL con Docker Compose
- Come installare e configurare Docker Compose su Ubuntu 20.04
Buon computing!






Commenti
Ancora nessun commento. Scrivi il primo.