Come Usare i Contenitori Docker

I contenitori sono il cuore di ogni installazione di Docker. Servono come base della piattaforma Docker e ti permettono 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 contenitori Docker utilizzando lo strumento CLI di Docker.
Indice
- Come Trovare e Scaricare un’Immagine Docker
- Come Eseguire e Fermare un Contenitore Docker
- Come Ispezionare un Contenitore Docker
- Come Personalizzare un Contenitore Docker
- Come Eliminare Contenitori e Immagini Docker
Nota: Inizia installando Docker sul tuo sistema Linux.
Come Trovare e Scaricare un’Immagine Docker
I contenitori Docker sono un tipo speciale di ambiente software che ti consente di eseguire programmi separati dal resto del tuo sistema originale. Per ottenere questo, Docker utilizza “immagini software”. Queste sono copie statiche di programmi che servono come base da cui inizia 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 avviare due contenitori distinti da essa: “sito1” e “sito2”.
Il modo più semplice per cercare una nuova immagine Docker è utilizzare il sottocomando search:
docker search httpd
Puoi anche cercare pacchetti sul sito web di Docker Hub se preferisci utilizzare il tuo browser web.

Per scaricare l’immagine sul tuo sistema, esegui il seguente comando:
docker image pull httpdConferma di aver aggiunto correttamente la tua nuova immagine al tuo sistema utilizzando il sottocomando images:
docker images
Creare una Nuova Immagine Utilizzando Dockerfile
Oltre a scaricare immagini precompilate da Docker Hub, puoi costruire immagini direttamente dalla CLI di Docker. Questo è utile se desideri creare versioni personalizzate di pacchetti software esistenti o se stai portando nuove app su Docker.
Per fare ciò, prima crea una cartella nella tua home directory per i tuoi file di build:
mkdir ~/my-docker-image && cd ~/my-docker-imageCrea un nuovo Dockerfile utilizzando il tuo editor di testo preferito:
nano ./DockerfileIncolla le seguenti righe di codice all’interno del tuo nuovo Dockerfile:
FROM nginx
COPY sample-site /usr/share/nginx/htmlCrea una cartella “sample-site” e copia o crea un sito HTML di base:
mkdir ./sample-site
cp ~/index.html ./sample-site/Salva il tuo nuovo Dockerfile, quindi esegui il seguente comando per costruirlo sul tuo sistema:
docker build -t custom-nginx .Controlla se la tua nuova immagine Docker è presente nella tua lista di immagini Docker:
docker images
Creare una Nuova Immagine Utilizzando Contenitori Esistenti
Lo strumento CLI di Docker può anche costruire nuove immagini dai contenitori che attualmente esistono nel tuo sistema. Questo è utile se stai già lavorando su un ambiente esistente e desideri creare una nuova immagine dal tuo setup attuale.
Per fare ciò, assicurati che il tuo contenitore non sia attualmente in esecuzione:
docker stop my-http-serverEsegui il sottocomando commit seguito dal nome del tuo contenitore, quindi fornisci il nome della tua nuova immagine Docker dopo:
docker commit my-http-server my-new-server-imageConferma che la tua nuova immagine Docker è nel tuo sistema eseguendo docker images.

Come Eseguire e Fermare un Contenitore Docker
Con la tua immagine Docker pronta, ora puoi iniziare a usarla per creare il tuo primo contenitore. Per fare ciò, utilizza il sottocomando run seguito dal nome dell’immagine che desideri eseguire:
docker run httpdSebbene questo funzioni per eseguire il tuo primo contenitore Docker, farlo in questo modo prenderà il controllo della tua sessione shell attuale. Per eseguire il tuo contenitore in background, aggiungi il flag -d dopo il sottocomando run:
docker run -d httpdIl sottocomando run può anche accettare una serie di flag aggiuntivi che possono modificare il comportamento del tuo nuovo contenitore Docker. Ad esempio, il flag --name ti consente di aggiungere un nome personalizzabile al tuo contenitore:
docker run -d --name=my-http-server httpdD’altra parte, puoi utilizzare il flag --publish per reindirizzare la porta di rete da cui puoi accedere al tuo contenitore Docker. Questo è principalmente utile se non vuoi che il tuo contenitore prenda il controllo di una porta privilegiata:
docker run -d --name=my-http-server --publish 8080:80 httpd
Puoi controllare tutti i contenitori Docker attualmente in esecuzione nel tuo sistema eseguendo il seguente comando:
docker psSimile al sottocomando run, ps può anche accettare una manciata di flag che modificheranno il suo comportamento. Ad esempio, per visualizzare i contenitori che attualmente sono spenti, usa il flag -a:
docker ps -aPer spegnere un contenitore in esecuzione, utilizza il sottocomando stop seguito dall’ID del contenitore o dal nome del tuo contenitore Docker:
docker stop my-http-serverPuoi riavviare qualsiasi contenitore che hai fermato rieseguendo il sottocomando start:
docker start my-http-serverNota a margine: impara le basi dell’hosting web con Docker eseguendo un semplice sito web utilizzando darkhttpd.
Pausare e Terminare un Contenitore Docker
Lo strumento CLI di Docker ti consente anche di mettere in pausa temporaneamente e terminare un processo di contenitore in esecuzione. Questo può essere utile se stai risolvendo un problema con la tua configurazione Docker e desideri isolare o fermare un contenitore che non funziona correttamente.
Inizia eseguendo docker ps per elencare tutti i contenitori in esecuzione nel sistema.
Trova l’ID o il nome del contenitore che desideri gestire.

Esegui il sottocomando pause seguito dal nome del contenitore che desideri sospendere temporaneamente:
docker pause my-http-serverPuoi riprendere un processo sospeso eseguendo il sottocomando unpause:
docker unpause my-http-serverPer fermare un processo che non funziona correttamente, esegui il sottocomando kill seguito dal nome del tuo contenitore:
docker kill my-http-serverCome Ispezionare un Contenitore Docker
Conoscere i dettagli intricati del tuo contenitore è una parte fondamentale per mantenere la salute del tuo stack Docker. Ti consente di esaminare rapidamente eventuali problemi potenziali e può fare la differenza tra risolvere e rifare l’intero deployment.
Per visualizzare una panoramica del tuo contenitore Docker, esegui il sottocomando inspect:
docker inspect my-http-serverFacendo ciò verrà stampata una lunga stringa JSON che descrive lo stato attuale dell’intero contenitore. Puoi restringere questo output sia piping l’output a jq o utilizzando il flag incorporato -f seguito dall’oggetto JSON che desideri stampare:
docker inspect -f {{.Name}} my-http-serverStampa dei Log del Contenitore nel Terminale
Oltre a ciò, puoi anche tracciare e stampare i log di qualsiasi contenitore Docker attualmente in esecuzione. Questo può essere utile se desideri controllare come si comporta attualmente il tuo servizio e visualizzare l’output che sta restituendo a STDOUT.
Per fare ciò, esegui il sottocomando logs seguito dal nome del tuo contenitore:
docker logs my-http-serverPuoi anche eseguire il sottocomando logs con il flag --follow per creare un log continuo del tuo servizio Docker. Questo è simile a eseguire tail -f alla fine di un pipe UNIX:
docker logs --follow my-http-server
Simile ad altri sottocomandi, puoi anche aggiungere vari flag per personalizzare l’output del log del tuo contenitore Docker. Ad esempio, il flag --timestamps aggiunge un timestamp dettagliato per ogni messaggio che il tuo contenitore invia al suo STDOUT:
docker logs --timestamps my-http-serverIl flag --details stamperà anche le variabili d’ambiente che hai impostato per il tuo contenitore Docker attuale. Nel frattempo, il flag --since ti consente di mostrare solo i log che sono avvenuti dopo un determinato punto nel tempo:
docker logs --details --since 8m my-http-server
Come Personalizzare un Contenitore Docker
Alla base, un Contenitore Docker è una piccola versione semplificata di Linux che gira sopra il tuo sistema attuale. Questo significa che, simile a una macchina virtuale, è possibile accedere e recuperare i dati all’interno del tuo contenitore.
Per copiare un file locale dalla tua macchina host al contenitore, esegui il sottocomando cp:
docker cp ~/my-file my-http-server:/tmpA volte dovrai anche “entrare” nei contenitori aprendo una shell all’interno di essi. In questo modo puoi modificare file, installare binari e personalizzarli secondo le tue esigenze:
docker exec -it my-http-server /bin/bashOra, potresti, ad esempio, modificare “index.html” e creare una homepage per il sito web all’interno.

Per uscire dalla shell del contenitore, premi Ctrl + D oppure esegui exit nel terminale.

Buono a sapersi: impara come spostare un contenitore Docker esistente su un nuovo sistema.
Come Eliminare Contenitori e Immagini Docker
Rimuovere contenitori e immagini Docker non utilizzati è una parte importante della manutenzione generale per il tuo deployment. Farlo ti consente di rimuovere file non necessari dal tuo server, risparmiando spazio di archiviazione a lungo termine.
Prima di eliminare un contenitore, assicurati di averlo fermato prima:
docker stop my-http-serverOra, rimuovi il contenitore utilizzando il sottocomando rm:
docker rm my-http-serverConferma di aver eliminato correttamente il tuo vecchio contenitore Docker eseguendo docker ps -a.

Elimina la tua immagine Docker originale dal tuo deployment Docker:
docker rmi my-new-server-image
Controlla se hai rimosso correttamente la tua immagine Docker originale eseguendo docker images.

Imparare a creare, gestire ed eliminare contenitori Docker è solo alcune delle cose che puoi fare con il tuo server Linux. Esplora il profondo mondo dell’amministrazione di sistema Linux ospitando un server e un hub di contenitori Docker con XPipe.
Crediti immagine: Shamin Haky via Unsplash. Tutte le modifiche e gli screenshot sono di Ramces Red.