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:
- Innanzitutto, dobbiamo definire l'ambiente applicativo con un Dockerfile in modo che possa essere riutilizzato nuovamente.
- 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.
- 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:
- Dockerfile
- docker-compose.yml
- 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