Ulteriori informazioni sui data center
Docker Swarm è uno dei cluster di contenitori più semplici che puoi distribuire. In pochi minuti puoi avere il tuo cluster attivo e funzionante per disponibilità elevata, failover e scalabilità. Una volta installato e funzionante, puoi quindi distribuire i container nello swarm per sfruttare il cluster. Ad esempio, potresti distribuire un servizio in grado di scalare per soddisfare qualsiasi domanda gli si presenti.
Questo è esattamente quello che ti mostrerò. Qui installeremo prima Docker Swarm e quindi implementeremo un servizio nel nuovo cluster in modo che possa essere ridimensionato a qualsiasi livello si adatti alle esigenze della tua azienda.
Di cosa avrai bisogno
Dimostrerò su un cluster composto da un controller e due nodi, che funzioneranno tutti su Ubuntu Server 20.04. Se stai utilizzando una distribuzione Linux diversa, potresti dover modificare i passaggi di installazione di Docker (ma niente di più).
Detto questo, diamoci da fare.
Come installare Docker
La prima cosa che dobbiamo fare è installare Docker. Assicurati di seguire questi stessi passaggi sul controller e su tutti i nodi che intendi distribuire.
Accedi al tuo server e aggiorna apt con:
 sudo apt-get update 
Quindi, installa le dipendenze necessarie con il comando:
 sudo apt-get install ca-certificates curl gnupg lsb-release -y 
Aggiungi la chiave GPG Docker ufficiale:
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg 
Aggiungi il repository stabile Docker con:
 echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null 
Installa Docker Engine con:
 sudo apt-get update 
 sudo apt-get install docker-ce docker-ce-cli containerd.io -y 
Avvia e abilita Docker con:
 sudo systemctl enable --now docker 
Aggiungi il tuo utente al gruppo Docker con il comando:
 sudo usermod -aG docker $USER 
Rendi il sistema a conoscenza del nuovo gruppo con:
 newgrp docker 
Ripeti i passaggi precedenti per tutti i tuoi nodi.
Tornando al controller Docker, inizializza lo swarm con:
 docker swarm init --advertise-addr SERVER 
Dove SERVER è l'indirizzo IP del Docker Controller.
Ti verrà quindi presentato il comando join che avrà un aspetto simile a questo:
 docker swarm join --token SWMTKN-1-46uxtlbe3wrelly1fe5e65p1wdvg95bcjo48izvptpwof62rdo-42yl4jprovhng56sgxmyv7arv 192.168.1.13:2377 
Copia quel comando ed eseguilo da tutti i tuoi nodi. Una volta fatto, puoi verificare il join emettendo il seguente comando sul controller:
 docker info 
Dovresti vedere un output simile a questo:
 Swarm: active 
 NodeID: wb44efzwy68x9gek45ee1nbnb 
 Is Manager: true 
 ClusterID: vjec4hz1sjj535x9w0mspox87 
 Managers: 1 
 Nodes: 3 
 Default Address Pool: 10.0.0.0/8 
 SubnetSize: 24 
 Data Path Port: 4789 
 Orchestration: 
 Task History Retention Limit: 5 
Come distribuire un servizio allo sciame
Ora possiamo distribuire un servizio al nostro sciame. All'inizio manteniamo questo semplice e distribuiamo un servizio contenitore NGINX con cui non possiamo interagire. Per fare ciò, emettere il seguente comando sul controller:
 docker service create --name nginx_test nginx 
Per verificare lo stato del servizio, impartisci il comando:
 docker service ls 
Dovresti vedere che il nostro servizio NGINX è stato replicato con un output simile a questo:
 zie1n4nm5es3   nginx_test             replicated   1/1                nginx:latest 
Il nostro esempio sopra sta sfruttando solo uno dei nostri nodi. E se volessimo distribuire quel servizio su tutti e tre i nodi? Per questo, il nostro comando sarebbe qualcosa del genere:
 docker service create --replicas 3 --name nginx3nodes nginx 
Dai il comando:
 docker service ls 
Dovresti vedere che la nostra distribuzione di nginx3nodes è stata replicata su 3 nodi su 3 con il seguente output:
 y1yu8fq27aab   nginx3nodes              replicated   3/3                nginx:latest 
Il servizio ora sta sfruttando tutti e tre i nodi nel nostro cluster. Puoi ridimensionare quel servizio a 2 nodi con il comando:
 docker service scale nginx3nodes=2 
Verifica lo stato con:
 docker service ls 
Ora dovresti vedere il servizio nginx su 2/2 nodi.
Supponi di avere cinque nodi nel tuo sciame. Se desideri ridimensionare il servizio su tutti e cinque i nodi, il comando sarebbe:
 docker service scale nginx3nodes=5 
Per eliminare il servizio, devi dare il comando:
 docker service rm nginx3nodes 
Supponiamo che tu voglia aggiornare l'immagine del contenitore nella tua distribuzione. Sono trascorsi alcuni giorni da quando è stato originariamente distribuito e vuoi assicurarti di utilizzare l'ultima immagine del contenitore disponibile. Assumiamo che nginx:latest sia un'immagine del contenitore aggiornata e per aggiornare quel servizio con la nuova immagine, devi dare il comando:
 docker service update --image nginx:latest nginx3nodes 
Un'ultima nota, se vuoi gestire più facilmente lo swarm, schiera Portainer sul controller con il comando:
 docker run -d -p 8000:8000 -p 9443:9443 --name=portainer --restart=always -v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data portainer/portainer-ce 
Una volta distribuito, vai a http://SERVER:9443 (dove SERVER è l'indirizzo IP del server). Dopo aver creato un utente amministratore e aver effettuato l'accesso, dovresti vedere Swarm elencato nella barra di navigazione a sinistra. Fare clic per visualizzare il cluster (Figura A ).
Figura A
 E queste sono praticamente le basi per avviare uno sciame Docker e distribuire un servizio ai nodi.
Abbonati a TechRepublic Come far funzionare la tecnologia su YouTube per tutti i consigli tecnologici più recenti per i professionisti del business di Jack Wallen.
Link sorgente