Come utilizzare i contenitori Docker

Come utilizzare i contenitori Docker
Fotografia di una persona che programma su un computer portatile.

I container sono la linfa vitale di ogni installazione Docker. Fungono da fondamento della piattaforma Docker e ti consentono di eseguire servizi sul tuo computer senza preoccuparti di dipendenze e conflitti di versione. Qui, ti mostriamo le basi per creare, gestire e personalizzare i container Docker utilizzando lo strumento Docker CLI.

Come trovare ed estrarre un’immagine Docker

I contenitori Docker sono un tipo speciale di ambiente software che consente di eseguire programmi separati dal resto del sistema originale. Per ottenere questo risultato, Docker utilizza “immagini software”. Si tratta di copie statiche di programmi che fungono da base da cui parte un contenitore.

Questa distinzione tra immagine e contenitore ti consente di ricreare e adattare il tuo software in qualsiasi modo necessario. Ad esempio, puoi avere un’immagine come “httpd” ma far girare due contenitori distinti da essa: “website1” e “website2”.

Il modo più semplice per cercare una nuova immagine Docker è utilizzare il searchsottocomando:

Un terminale che evidenzia l'immagine Docker httpd dallo strumento CLI.
Uno screenshot che mostra l'immagine Docker httpd dal sito web Docker Hub.

Per scaricare l’immagine sul tuo sistema, esegui il seguente comando:

Conferma di aver aggiunto correttamente la nuova immagine al sistema utilizzando il imagessottocomando:

Un terminale che evidenzia l'immagine Docker httpd installata sul sistema.

Creazione di una nuova immagine tramite Dockerfile

Oltre a estrarre immagini pre-costruite da Docker Hub, puoi creare immagini direttamente dalla Docker CLI. Ciò è utile se vuoi creare versioni personalizzate di pacchetti software esistenti o se stai trasferendo nuove app a Docker.

Per fare ciò, crea prima una cartella nella tua directory home per i tuoi file di build:

Crea un nuovo Dockerfile utilizzando il tuo editor di testo preferito:

Incolla le seguenti righe di codice all’interno del tuo nuovo Dockerfile:

Un terminale che mostra un esempio di configurazione Dockerfile per un'immagine Nginx personalizzata.

Crea una cartella “sample-site” e copiala o crea un sito HTML di base:

Salva il tuo nuovo Dockerfile, quindi esegui il seguente comando per compilarlo sul tuo sistema:

Controlla se la tua nuova immagine Docker è presente nell’elenco delle immagini Docker:

Un terminale che evidenzia l'immagine personalizzata generata dal sottocomando build.

Creazione di una nuova immagine utilizzando contenitori esistenti

Lo strumento Docker CLI può anche creare nuove immagini dai container attualmente presenti nel tuo sistema. Ciò è utile se stai già lavorando su un ambiente esistente e vuoi creare una nuova immagine dalla tua configurazione attuale.

Per fare ciò, assicurati che il tuo contenitore non sia attualmente in esecuzione:

Esegui il commitsottocomando seguito dal nome del tuo contenitore, quindi fornisci il nome della tua nuova immagine Docker:

Un terminale che mostra il sottocomando commit che crea una nuova immagine da un contenitore Docker.

Verifica che la tua nuova immagine Docker sia presente nel tuo sistema eseguendo docker images.

Un terminale che evidenzia la nuova immagine personalizzata da un contenitore Docker installato nel sistema.

Come eseguire e arrestare un contenitore Docker

Con la tua immagine Docker pronta, puoi iniziare a usarla per creare il tuo primo contenitore. Per farlo, usa il runsottocomando seguito dal nome dell’immagine che vuoi eseguire:

Sebbene questo funzionerà per l’esecuzione del tuo primo contenitore Docker, farlo in questo modo prenderà il controllo della tua sessione shell corrente. Per eseguire il tuo contenitore in background, aggiungi il -dflag dopo il runsottocomando:

Il runsottocomando può anche accettare un certo numero di flag aggiuntivi che possono modificare il comportamento del tuo nuovo contenitore Docker. Ad esempio, il --nameflag ti consente di aggiungere un nome personalizzabile al tuo contenitore:

D’altro canto, puoi usare il --publishflag per reindirizzare la porta di rete dove puoi accedere al tuo contenitore Docker. Questo è utile soprattutto se non vuoi che il tuo contenitore prenda il controllo di una porta privilegiata:

Uno screenshot che mostra un browser web che apre il sito web ospitato dal contenitore Docker personalizzato.

Puoi controllare tutti i contenitori Docker attualmente in esecuzione nel tuo sistema eseguendo il seguente comando:

Simile al runsottocomando, pspuò anche accettare una manciata di flag che ne modificheranno il comportamento. Ad esempio, per visualizzare i contenitori attualmente inattivi, usa il -aflag:

Per disattivare un contenitore in esecuzione, utilizzare il stopsottocomando seguito dall’ID del contenitore o dal nome del contenitore Docker:

Un terminale che mostra il processo di disattivazione di un contenitore Docker attualmente in esecuzione.

È possibile riavviare qualsiasi contenitore arrestato eseguendo nuovamente il startsottocomando:

Sospensione e eliminazione di un contenitore Docker

Lo strumento Docker CLI consente inoltre di mettere temporaneamente in pausa e terminare un processo di contenitore in esecuzione. Ciò può essere utile se si sta risolvendo un problema con la configurazione Docker e si desidera isolare o interrompere un contenitore che si comporta in modo anomalo.

Iniziare eseguendo docker psper elencare tutti i contenitori in esecuzione nel sistema.

Trova l’ID o il nome del contenitore che vuoi gestire.

Un terminale che evidenzia il contenitore Docker personalizzato attualmente in esecuzione nel sistema.

Eseguire il pausesottocomando seguito dal nome del contenitore che si desidera sospendere temporaneamente:

È possibile riprendere un processo sospeso eseguendo il unpausesottocomando:

Per interrompere un processo che si comporta in modo anomalo, esegui il killsottocomando seguito dal nome del contenitore:

Come ispezionare un contenitore Docker

Conoscere i dettagli intricati del tuo contenitore è una parte fondamentale del mantenimento della salute del tuo stack Docker. Ti consente di esaminare rapidamente eventuali problemi potenziali e può fare la differenza tra riparare e rifare l’intera distribuzione.

Per visualizzare una panoramica del tuo contenitore Docker, esegui il inspectsottocomando:

Facendo questo verrà stampata una lunga stringa JSON che descrive lo stato corrente dell’intero contenitore. Puoi restringere il campo tramite il piping dell’output a jq o utilizzando il flag incorporato -fseguito dall’oggetto JSON che vuoi stampare:

Un terminale che mostra il flag del filtro per il sottocomando inspect su un contenitore Docker in esecuzione.

Stampa dei registri dei contenitori sul terminale

Oltre a ciò, puoi anche tracciare e stampare i log di qualsiasi contenitore Docker attualmente in esecuzione. Questo può essere utile se vuoi controllare come si comporta attualmente il tuo servizio e guardare l’output che sta restituendo a STDOUT.

Per fare ciò, esegui il sottocomando logs seguito dal nome del tuo contenitore:

Puoi anche eseguire il sottocomando logs con il --followflag per creare un log continuo del tuo servizio Docker. È simile all’esecuzione tail -falla fine di una pipe UNIX:

Un terminale che mostra i log continui per un contenitore Docker.

Similmente ad altri sottocomandi, puoi anche aggiungere vari flag per personalizzare l’output del log del tuo contenitore Docker. Ad esempio, il --timestampsflag aggiunge un timestamp dettagliato per ogni messaggio che il tuo contenitore invia al suo STDOUT:

Il --detailsflag stamperà anche le variabili di ambiente che hai impostato per il tuo attuale contenitore Docker. Nel frattempo, il --sinceflag ti consente di mostrare solo i log che si sono verificati dopo un particolare momento:

Un terminale che mostra un output di registro più dettagliato da un contenitore Docker attualmente in esecuzione.

Come personalizzare un contenitore Docker

In sostanza, un Docker Container è una versione ridotta e semplificata di Linux in esecuzione sul tuo sistema attuale. Ciò significa che, in modo simile a una macchina virtuale, è possibile accedere e recuperare i dati all’interno del tuo container.

Per copiare un file locale dal computer host al contenitore, eseguire il cpsottocomando:

A volte dovrai anche “entrare” nei contenitori aprendo una shell al loro interno. In questo modo puoi modificare i file, installare i binari e personalizzarli in base alle tue esigenze:

Un terminale che mostra il processo di passaggio alla shell radice di un contenitore.

Ora potresti, ad esempio, modificare “index.html” e creare una homepage per il sito web al suo interno.

Un terminale che mostra un file HTML copiato nella shell root di un contenitore Docker.

Per uscire dalla shell del contenitore, premere Ctrl+ Do eseguire il comando exitsul terminale.

Un terminale che evidenzia il comando di uscita dalla shell radice del contenitore Docker.

Come eliminare i contenitori e le immagini Docker

La rimozione di Docker Container e Immagini inutilizzati è una parte importante della pulizia generale della tua distribuzione. Ciò ti consente di rimuovere i file non necessari dal tuo server, risparmiando spazio di archiviazione a lungo termine.

Prima di eliminare un contenitore, assicurati di averlo arrestato:

Ora, rimuovi il contenitore utilizzando il rmsottocomando:

Verifica di aver eliminato correttamente il tuo vecchio contenitore Docker eseguendo docker ps -a.

Un terminale che mostra tutti i contenitori Docker disponibili, compresi quelli attualmente inattivi.

Elimina l’immagine Docker originale dalla distribuzione Docker:

Un terminale che evidenzia l'output dell'eliminazione di un'immagine Docker dal sistema.

Controlla di aver rimosso correttamente l’immagine Docker originale eseguendo docker images.

Un terminale che mostra l'elenco aggiornato delle immagini Docker.

Imparare a creare, gestire e rimuovere contenitori Docker è solo una delle cose che puoi fare con il tuo server Linux.

Credito immagine: Shamin Haky tramite Unsplash . Tutte le modifiche e gli screenshot sono di Ramces Red.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *