Ricerca nel sito web

Come installare Docker Swarm su Debian 11


Su questa pagina

  1. Prerequisiti
  2. Installazione di Docker
  3. Impostazione del firewall
  4. Inizializzazione di Swarm Manager
  5. Aggiunta di nodi di lavoro a Swarm
  6. Gestione dei servizi su Docker Swarm
  7. Ridimensionamento dei servizi su Docker Swarm
  8. Eliminazione di servizi su Docker Swarm
  9. Conclusione

Docker Swarm è un'orchestrazione di container basata su Docker Engine. Consente di creare e distribuire un cluster di nodi Docker con più server. Docker Swarm semplifica la distribuzione della tua applicazione containerizzata in un servizio. Docker Swarm fornisce un modo semplice e diretto per gestire e orchestrare i contenitori.

Docker Swarm offre un elevato livello di disponibilità per le applicazioni. In Docker Swarm, puoi eseguire una singola applicazione o servizio su più nodi chiamati \nodi di lavoro\. C'è anche un nodo chiamato \Swarm Manager\ che fornisce la gestione centralizzata e l'orchestrazione di Docker Swarm.

Questo tutorial mostra come configurare Docker Swarm sui server Debian 11. Installerai Docker, configurerai UFW (Uncomplicated Firewall), inizializzerai \Swarm Manager\ e aggiungerai \Nodi\. Imparerai anche l'uso di base di Docker Swarm per la distribuzione delle applicazioni.

Prerequisiti

Per completare questo tutorial, avrai bisogno di più server Debian 11 e di un utente non root con privilegi di amministratore sudo/root.

In questa dimostrazione, utilizzeremo tre server Debian 11 con i seguenti dettagli:

Hostname    IP Address        Used as
-------------------------------------
manager     192.168.5.100     Swarm Manager
node1       192.168.5.120     Node
node2       192.168.5.121     Node

Con tutti questi requisiti, sei pronto per iniziare.

Installazione di Docker

Il repository Debian predefinito fornisce un pacchetto per Docker. Tuttavia, per assicurarti di installare l'ultima versione di Docker, installerai Docker tramite il repository Docker ufficiale.

Inoltre, devi installare Docker su tutti i tuoi server Debian.

Prima di aggiungere il repository, eseguire il seguente comando apt per installare alcuni pacchetti di base. Quando viene richiesto di confermare l'installazione, immettere Y e premere INVIO.

sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release -y

Dopo aver installato i pacchetti di base, aggiungi la chiave GPG per il repository Docker utilizzando il seguente comando. Con questo comando, creerai una nuova directory \/etc/apt/keyrings\ e memorizzerai la chiave GPG del repository Docker al suo interno.

sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

Successivamente, aggiungi il repository Docker per il sistema Debian Linux utilizzando il comando seguente.

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

Ora aggiorna e aggiorna l'indice del tuo pacchetto tramite il comando apt di seguito.

sudo apt update

Vedrai che il nuovo repository Docker viene aggiornato.

Successivamente, installa i pacchetti Docker utilizzando il seguente comando apt. Verrà chiesto di confermare l'installazione, inserire Y per confermare e premere INVIO per procedere.

sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin

Dopo aver installato Docker, esegui il seguente comando per avviare e abilitare il servizio docker. Ciò consente a docker di essere eseguito automaticamente all'avvio del sistema.

sudo systemctl start docker
sudo systemctl enable docker

Infine, verifica il servizio docker tramite il comando systemctl di seguito.

sudo systemctl status docker

Se il servizio docker è in esecuzione, dovresti vedere l'output come nella seguente schermata:

Inoltre, se prevedi di utilizzare un utente non root per la distribuzione, devi aggiungere il tuo utente alla docker e consentire all'utente di eseguire i container Docker.

sudo usermod -aG docker user

Configurazione del firewall

Se stai distribuendo Docker Swarm per la produzione, devi configurare il firewall tra tutti i nodi. In questo esempio, utilizzerai UFW come firewall predefinito per i tuoi server Debian.

Di seguito sono riportate alcune porte che è necessario aprire affinché Docker Swarm funzioni correttamente:

  • Porta TCP 2377 per le comunicazioni di gestione del cluster: viene utilizzata se si dispone di più Swarm Manager.
  • Porta TCP e UDP 7946 per la comunicazione tra i nodi - per tutti i nodi nell'ambiente Swarm.
  • Porta UDP 4789 per il traffico di rete sovrapposto

Installa UFW sui tuoi sistemi Debian usando il seguente comando apt.

sudo apt install ufw -y

Dopo l'installazione di UFW, esegui il seguente comando ufw per aggiungere il profilo dell'applicazione \OpenSSH\. Quindi, avvia e abilita UFW.

Durante il processo, ti verrà chiesto di confermare se eseguire e abilitare il firewall UFW. Immettere y per confermare e premere ENTER per procedere.

sudo ufw allow "OpenSSH"
sudo ufw enable

Ora esegui il seguente comando ufw per aprire alcune porte per Docker Swarm.

sudo ufw allow 2377/tcp
sudo ufw allow 7946/tcp
sudo ufw allow 7946/udp
sudo ufw allow 4789/udp

Infine, verifica l'elenco delle regole UFW abilitate sul tuo server tramite il seguente comando ufw. Assicurati che tutte le porte per Docker Swarm siano abilitate e disponibili su UFW.

sudo ufw status

A questo punto, Docker è installato e UFW configurato. Successivamente inizializziamo Swarm Manager.

Inizializzazione di Swarm Manager

Swarm Manager è il centro della distribuzione di Docker Swarm. Gestisce lo stato dello sciame stesso e non ha limiti sul numero di nodi gestori. La distribuzione di più Swarm Manager creerà un ambiente di tolleranza agli errori.

Swarm Manager è la gestione dei cluster integrata con il motore docker. fornisce un modello di servizio dichiarativo, il ridimensionamento del servizio, lo stato desiderato dei servizi, il bilanciamento del carico e gli aggiornamenti continui.

In questo esempio, inizializzerai un nodo come Swarm Manager.

Per inizializzare Swarm Manager, esegui il seguente comando docker. In questo esempio, il gestore Swarm verrà eseguito sull'indirizzo IP 192.168.5.30. E la rete per i container nell'ambiente Docker Swarm sarà 10.20.0.0/16.

docker swarm init --advertise-addr 192.168.5.30 --default-addr-pool 10.20.0.0/16

Quando Swarm Manager viene inizializzato, vedrai il seguente output. Inoltre, puoi vedere il token dei dettagli per unire i nodi allo Swarm manager.

Ora, esegui il seguente comando docker per verificare che la modalità Swarm sia abilitata.

docker info

Nello screenshot seguente, puoi vedere che la modalità Swarm è \attiva\ con il pool di indirizzi IP \10.20.0.0/16\. Inoltre, il nodo corrente disponibile su Docker Swarm è \1\.

Puoi verificare l'elenco dei nodi su Docker Swarm tramite il comando docker di seguito. Dovresti vedere che c'è un solo nodo sull'attuale Docker Swarm, che è lo Swarm Manager.

docker node ls

Aggiunta di nodi di lavoro a Swarm

I nodi di lavoro sono dove i contenitori vengono eseguiti e in esecuzione. Sul nodo di lavoro, il Docker Engine deve essere installato su ogni server e anche il nodo di lavoro può essere promosso a Swarm Manager.

Per aggiungere un nodo di lavoro, puoi utilizzare il comando \docker swarm join\ seguito dal token che viene generato quando inizializzi Swarm Manager.

Aggiungi i server node1 e node2 a Docker Swarm tramite il comando \docker swarm join\ di seguito. Puoi sostituire il token con il tuo token generato durante l'inizializzazione di Swarm Manager.

docker swarm join \
--token SWMTKN-1-5tui5dveqw6n2b0m6suut0w7nf9w0wb5jyvfhmykb4jdehps1j-ag99f7750mmnim6ao5yp0x3s2 \
192.168.5.30:2377

Quando il nodo viene aggiunto, riceverai un messaggio di output come \Questo nodo si è unito a uno sciame come lavoratore\.

Di seguito è riportato l'output che vedrai su entrambi i server node1 e node2.

Inoltre, se hai perso il token swarm per l'accesso al nodo di lavoro, puoi mostrarlo utilizzando il seguente comando.

docker swarm join-token worker

Infine, torna al server \manager\ e verifica l'elenco dei nodi nel tuo ambiente Docker Swarm tramite il comando \docker\ di seguito.

docker node ls

Nello screenshot seguente, puoi vedere che sia \node1\ che \node2\ vengono aggiunti allo sciame Docker con lo stato \Pronto\ e il motore docker \20.10.18\.

La distribuzione di Docker Swarm è stata completata, ora puoi distribuire la tua applicazione containerizzata in Swarm.

Gestione dei servizi su Docker Swarm

Il servizio è un termine di distribuzione dell'applicazione su Docker Swarm. È l'immagine per i tuoi microservizi, potrebbe essere un server HTTP, un server di database o altre applicazioni che verranno eseguite sul tuo Docker Swarm.

Per configurare un servizio in Docker Swarm, devi specificare l'immagine che utilizzerai, la porta che verrà esposta e anche il numero di repliche.

Dopo aver distribuito Docker Swarm, imparerai ora la distribuzione di base dei tuoi servizi su Docker Swarm.

Crea un nuovo servizio \test-httpd\ tramite il comando \docker service create\ come di seguito.

In questo esempio, creerai un nuovo servizio \test-httpd\ con la replica 1 ed esporrai la porta \8000\ sul nodo Swarm. L'immagine che utilizzerai è \httpd:alpine\.

docker service create --replicas 1 --name test-httpd -p 8000:80 httpd:alpine

Una volta che il servizio \test-httpd\ è in esecuzione, verificare utilizzando il seguente comando. Dovresti vedere che il servizio \test-httpd\ è in esecuzione con 1 replica ed esporre la porta TCP 8000.

docker service ls

Ora, esegui il seguente comando per controllare i dettagli del servizio \test-httpd\.

docker service inspect test-httpd
docker service inspect --pretty test-httpd

Di seguito puoi vedere il servizio dettagliato di \test-httpd\, questo include il numero di repliche, porte esterne, l'immagine di base che stai utilizzando, ecc.

Puoi anche controllare il contenitore in esecuzione sul servizio \test-httpd\ tramite il comando \docker service ps\ come di seguito.

docker service ps test-httpd

Puoi vedere che il contenitore \test-httpd.1\ è in esecuzione sul server \manager\.

Ora apri la porta \8000\ su tutti i server tramite il comando ufw qui sotto.

sudo ufw allow 8000/tcp

Quindi, verifica il servizio \test-httpd\ utilizzando il comando curl come di seguito. \192.168.5.30\ è l'indirizzo IP di Swarm Manager e il servizio \test-httpd\ è in esecuzione sulla porta 8000.

curl 192.168.5.30:8000
curl -I 192.168.5.30:8000

Vedrai la pagina index.html predefinita del servizio \test-httpd\.

Servizi di ridimensionamento su Docker Swarm

Ora imparerai come ridimensionare i tuoi servizi su Docker Swarm.

Eseguire il seguente comando per ridimensionare il servizio \test-httpd\ a 3 repliche.

docker service scale test-httpd=3

Ora verifica il contenitore in esecuzione sul servizio \test-httpd\ utilizzando il comando seguente. Dovresti vedere tre diversi contenitori sul servizio \test-http\, che è in esecuzione su server manager, node1 e node2.

docker service ps test-httpd

Infine, esegui il seguente comando docker per verificare il contenitore in esecuzione sui server node1 e node2. Dovresti vedere il contenitore con il nome \test-httpd.random name\ in esecuzione su entrambi i server. Inoltre, puoi vedere che il contenitore è accessibile tramite la porta TCP 8000.

Controllo del contenitore su node1.

docker ps
curl node1:8000

Controllo del contenitore su node2.

docker ps
curl node2:8000

Eliminazione di servizi su Docker Swarm

Ora è il momento di ripulire il tuo ambiente eliminando i servizi che hai distribuito a Docker Swarm.

Eseguire il comando seguente per rimuovere ed eliminare il servizio \test-httpd\ dallo sciame Docker.

docker service rm test-httpd

Quindi, verifica il servizio \test-httpd\ tramite il comando \docker service inspect\ di seguito. Dovresti vedere che il servizio è stato eliminato.

docker service inspect test-httpd

Inoltre, puoi anche verificare tramite il comando docker di seguito per controllare l'elenco dei contenitori e delle immagini in esecuzione sul tuo Swarm.

Dovresti vedere che il contenitore è stato rimosso e l'immagine httpd:alpine è disponibile su tutti i server.

docker ps
docker images

Conclusione

In questo tutorial, hai distribuito Docker Swarm con tre server Debian 11. Hai anche imparato l'installazione di base di Docker Engine su server Linux e la configurazione di base del firewall UFW su sistema Debian. E infine, hai anche appreso la distribuzione di base dell'applicazione in Docker Swarm tramite il comando \docker service\.

Da qui, ora puoi distribuire le tue applicazioni containerizzate con tutte le dipendenze in Docker Swarm. Puoi anche aggiungere più Swarm Manager per configurare l'alta disponibilità del tuo ambiente Docker Swarm.