
Docker è una piattaforma di containerizzazione che ti consente di creare, testare e distribuire rapidamente applicazioni come container portatili e autosufficienti che possono essere eseguiti praticamente ovunque.
Docker è di fatto uno standard per la tecnologia dei container ed è uno strumento essenziale per gli ingegneri DevOps e per la loro continua integrazione e pipeline di consegna.
In questo tutorial, ti guideremo attraverso il processo di installazione di Docker su una macchina Debian 9 ed esploreremo i concetti ei comandi di base di Docker.
Prerequisiti #
Prima di continuare con questo tutorial, assicurati di aver effettuato l'accesso come utente con privilegi sudo. Tutti i comandi in questo tutorial devono essere eseguiti come utente non root.
Installa Docker su Debian #
I seguenti passaggi descrivono come installare l'ultima versione stabile di Docker dai repository di Docker.
-
Aggiorna i pacchetti installati all'ultima versione:
sudo apt update
sudo apt upgrade
-
Installa le dipendenze necessarie per aggiungere un nuovo repository su HTTPS:
sudo apt install apt-transport-https ca-certificates curl software-properties-common gnupg2
-
Importa la chiave GPG del repository utilizzando il seguente
curl
comando:curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Aggiungi il repository Docker APT all'elenco dei repository software del tuo sistema digitando:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
$(lsb_release -cs)
restituirà il nome della distribuzione Debian, in questo caso restituiràstretch
. -
Ora che il repository Docker è abilitato, aggiorna
apt
elenco dei pacchetti e installare l'ultima versione di Docker CE (Community Edition) con:sudo apt update
sudo apt install docker-ce
-
Una volta completata l'installazione, il servizio Docker si avvierà automaticamente. Puoi verificarlo digitando:
sudo systemctl status docker
● docker.service - Docker Application Container Engine Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2018-07-27 17:02:07 UTC; 1min 14s ago Docs: https://docs.docker.com Main PID: 16929 (dockerd) CGroup: /system.slice/docker.service
-
Al momento in cui scrivo, la versione corrente di Docker disponibile per Debian 9 è
18.06.0-ce
. Controlla la versione Docker con:docker -v
Docker version 18.06.0-ce, build 0ffa825
Esecuzione del comando Docker senza Sudo #
Per impostazione predefinita, solo un utente con privilegi di amministratore può eseguire i comandi Docker.
Se desideri eseguire i comandi Docker come utente non root senza anteporre sudo
dovrai aggiungere il tuo utente al gruppo Docker che viene creato durante l'installazione del pacchetto Docker CE. Puoi farlo digitando:
sudo usermod -aG docker $USER
$USER
è una variabile di ambiente che contiene il tuo nome utente.
Esci e accedi nuovamente in modo che l'appartenenza al gruppo venga aggiornata.
Per verificare che sia possibile eseguire i comandi della finestra mobile senza anteporre sudo
eseguire il comando seguente che scaricherà un'immagine di prova, eseguirla in un contenitore, stampare un messaggio "Hello from Docker" ed uscire:
docker container run hello-world
L'output dovrebbe essere simile al seguente:

Interfaccia a riga di comando Docker #
Ora che abbiamo installato Docker, esaminiamo la sintassi di base della CLI della finestra mobile:
docker [option] [subcommand] [arguments]
Per elencare tutti i comandi disponibili, esegui docker
senza parametri:
docker
Se hai bisogno di ulteriore aiuto su qualsiasi [subcommand]
, puoi usare il --help
cambiare come mostrato di seguito:
docker [subcommand] --help
Immagini Docker #
Un'immagine Docker è composta da una serie di livelli di filesystem che rappresentano le istruzioni nel file Docker dell'immagine che costituiscono un'applicazione software eseguibile. Un'immagine è un file binario immutabile che include l'applicazione e tutte le altre dipendenze come librerie, file binari e istruzioni necessarie per eseguire l'applicazione.
Puoi pensare a un'immagine Docker come a un'istantanea di un contenitore Docker.
La maggior parte delle immagini Docker sono disponibili su Docker Hub.
Docker Hub è un servizio di registro basato su cloud che, tra le altre funzionalità, viene utilizzato per mantenere le immagini Docker in un repository pubblico o privato.
Cerca immagine Docker #
Per cercare un'immagine dal registro Docker Hub, utilizza la search
sottocomando.
Ad esempio, per cercare un'immagine Debian, digitare:
docker search debian
L'output dovrebbe essere simile a questo:

Come puoi vedere i risultati della ricerca stampano una tabella con cinque colonne, NAME
, DESCRIPTION
, STARS
, OFFICIAL
e AUTOMATED
.
L'immagine ufficiale è un'immagine che Docker sviluppa in collaborazione con i partner a monte.
La maggior parte delle immagini Docker su Docker Hub sono contrassegnate con i numeri di versione. Quando non viene specificato alcun tag, Docker estrarrà l'ultima immagine.
Scarica immagine Docker #
Se vogliamo scaricare la build ufficiale dell'immagine Debian, possiamo farlo usando il image pull
sottocomando:
docker image pull debian

A seconda della velocità di Internet, il download potrebbe richiedere alcuni secondi o alcuni minuti.
Dal momento che non abbiamo specificato un tag, docker estrarrà l'ultima immagine Debian che è 9.5. Se vuoi estrarre alcune delle versioni precedenti di Debian, diciamo Debian 8, devi usare docker image pull debian:8
Una volta scaricata l'immagine, possiamo elencare le immagini digitando:
docker image ls
L'output sarà simile a questo:

Rimuovi immagine Docker #
Se per qualche motivo vuoi eliminare un'immagine puoi farlo con image rm [image_name]
sottocomando:
docker image rm debian

Contenitori Docker #
Un'istanza di un'immagine è chiamata contenitore. Un contenitore rappresenta un runtime per una singola applicazione, processo o servizio.
Potrebbe non essere il confronto più appropriato, ma se sei un programmatore puoi pensare a un'immagine Docker come a una classe ea un container Docker come a un'istanza di una classe.
Possiamo avviare, fermare, rimuovere e gestire un container con il docker container
sottocomando.
Avvia contenitore Docker #
Il comando seguente avvierà un contenitore Docker basato sull'immagine Debian. Se non hai l'immagine in locale, verrà prima scaricata:
docker container run debian
A prima vista, può sembrare che non sia successo nulla. Ebbene, non è vero. Il contenitore Debian si interrompe immediatamente dopo l'avvio perché non ha un processo di lunga durata e non abbiamo fornito alcun comando, quindi il contenitore si è avviato, ha eseguito un comando vuoto e poi è uscito.
L'interruttore -it
ci permette di interagire con il container tramite la riga di comando. Per avviare un tipo di contenitore interattivo:
docker container run -it debian /bin/bash
root@ee86c8c81b3b:/#
Come puoi vedere dall'output sopra, una volta avviato il contenitore, il prompt dei comandi viene modificato, il che significa che ora stai lavorando dall'interno del contenitore.
Elenca i contenitori Docker #
Per elencare i contenitori in esecuzione, digita:
docker container ls

Per visualizzare tutti i contenitori, passa il -a
interruttore:
docker container ls -a

Rimuovi contenitori Docker #
Per eliminare uno o più contenitori basta copiare l'ID (o gli ID) del contenitore e incollarli dopo il container rm
sottocomando:
docker container rm c55680af670c