Ricerca nel sito web

Iniziare con Docker Compose in Linux


Docker Compose è uno strumento per definire ed eseguire applicazioni docker multi-contenitore in Linux. Con Compose utilizziamo un file YAML per configurare i servizi della nostra applicazione. E poi creiamo e avviamo tutti i servizi dalla configurazione con un unico comando. Ecco una semplice illustrazione grafica che mostra come funziona la composizione di Docker.

Come funziona la composizione di Docker: un'illustrazione grafica

Docker Compose è fondamentalmente un processo in tre fasi:

  1. Innanzitutto, dobbiamo definire l'ambiente applicativo con un Dockerfile in modo che possa essere riutilizzato nuovamente.
  2. In secondo luogo, definiamo i servizi che compongono l'app in docker-compose.yml in modo che possano essere eseguiti insieme in un ambiente isolato.
  3. Infine, eseguiamo il comando docker-compose up e Compose avvierà ed eseguirà l'intera applicazione.

Iniziare con Docker Compose in Linux

Docker Compose può essere installato in due modi. Puoi trovare le istruzioni di installazione nella sezione "Installa Docker Compose" nei seguenti link.

  • Come installare Docker in Ubuntu
  • Come installare Docker in CentOS

Dopo l'installazione, controlla la versione di Docker compose utilizzando i comandi:

docker-compose -version

O,

docker-compose -v

O,

docker-compose --version

Controlla la versione di composizione della finestra mobile

Per ottenere aiuto, esegui semplicemente:

docker-compose -help

Questo comando elencherà i comandi che Docker Compose può eseguire.

aiuto per la composizione della finestra mobile

Ora prendiamo come esempio un semplice file di composizione docker. Ecco il contenuto del mio file di composizione.

File di composizione della finestra mobile di esempio

Il file di composizione della finestra mobile sopra è un file minimo per comprendere il contenuto di base all'interno del file di composizione.

Possiamo verificare la validità del file utilizzando il comando:

docker-compose config

Controlla la validità del file di composizione della finestra mobile

Se fornisci una versione errata all'interno del file di composizione della finestra mobile, ti verrà restituito un messaggio di errore.

Messaggio di errore di composizione del file Docker

Ora eseguiamo il file di composizione utilizzando il comando:

docker-compose up -d

Inizierà tutti i servizi con un singolo comando.

Esegui la composizione della finestra mobile

Per elencare i contenitori in esecuzione creati dal file compose, esegui:

docker-compose ps

Elenca i contenitori docker in esecuzione

Possiamo chiudere l'applicazione in qualsiasi momento con il seguente comando:

docker-compose down

Arrestare i contenitori docker

Possiamo anche assegnare una porta diversa a nginx, ad esempio 8181.

Per fare ciò, basta definire la porta nel file di composizione come mostrato nell'immagine seguente.

Definire il contenitore nginx della porta

Ora nginx è esposto alla porta 8181. Avviamo il contenitore e controlliamo se Nginx è in esecuzione sulla porta 8181.

Avvia il contenitore nginx

Apri il browser e verifica se è in esecuzione sulla porta 8181.

Testare il contenitore nginx nel browser web

Se vuoi ridimensionare il servizio, puoi farlo usando il comando:

docker-compose up -d --scale database=3

Ridimensionare i servizi utilizzando Docker Compose

Per visualizzare i servizi in esecuzione, eseguire:

docker-compose top

Visualizza i servizi in esecuzione utilizzando docker compose

Per fermarsi, iniziare. riavviare l'intero servizio in una volta, i comandi sarebbero:

docker-compose stop
docker-compose start
docker-compose restart

Possiamo visualizzare i log dei servizi usando il comando:

docker-compose logs

Mostra i log dei servizi

Rete in docker-compose

Docker Compose configura un'unica rete per la tua app per impostazione predefinita. Ogni contenitore si unisce alla rete predefinita e i contenitori saranno in grado di comunicare su tale rete predefinita.

Puoi tuttavia creare una nuova rete utilizzando compose se non desideri la rete predefinita.

Ai fini di questa guida, utilizzo i seguenti tre file:

  1. Dockerfile
  2. docker-compose.yml
  3. server.py

Ecco il contenuto del Dockerfile:

contenuto del file docker

Contenuto di docker-compose.yml:

Docker compone il contenuto del file

Contenuto di server.py:

contenuto del file dell'applicazione

Ora crea l'immagine usando il comando:

docker-compose build

Una volta completata la compilazione, vedrai il seguente output:

Costruisci l'immagine della finestra mobile

Come puoi vedere l'immagine è stata creata con successo. Puoi verificarlo utilizzando il comando:

docker images

Elenca le immagini della finestra mobile

Come puoi vedere nell'output sopra, viene creata un'immagine Docker denominata image1.

Ora esegui il file di composizione:

docker-compose up -d

Esegui il file di composizione della finestra mobile

Controlla se la nuova rete è stata creata o meno con il comando:

docker network ls

Controlla la rete docker

Dallo screenshot sopra, possiamo confermare che è stata creata una nuova rete denominata dc_network_my-network.

Controlliamo se il contenitore è in esecuzione o meno utilizzando il comando "docker ps":

docker ps

output del comando docker ps

Sì, il contenitore è in esecuzione!

Infine esegui il file del codice dell'applicazione (server.py) utilizzando il comando curl:

curl localhost:15001

O,

curl 10.26.35.244:15001

uscita dell'applicazione

Stiamo ricevendo l'output - Hello World dal nodo 1! che è scritto nel file server.py. Significa che funziona!

Lettura consigliata:

  • Converti i comandi di esecuzione Docker in file Docker-Compose
  • Spiegazione dei concetti di rete Docker
  • Spiegare i volumi Docker con esempi
  • Come aggiornare automaticamente i contenitori Docker in esecuzione
  • ctop: uno strumento di monitoraggio della riga di comando per contenitori Linux
  • Portainer: il modo più semplice per gestire Docker
  • PiCluster: una semplice applicazione di gestione Docker basata sul Web
  • Dockly: gestisci i contenitori Docker dal terminale

Informazioni sull'autore:

Dhruv Tiwari è un ingegnere DevOps che ama automatizzare le cose, lavorare con Linux su larga scala e sogna il giorno in cui i sistemi saranno abbastanza intelligenti da non dover mai accedere a una macchina Linux. Viaggio di CI/CD dal codice sorgente alla distribuzione del codice fino alla produzione.

Risorsa:

  • Docker Componi documentazione

Articoli correlati