Docker è una tecnologia di containerizzazione che consente di creare, testare e distribuire rapidamente applicazioni come container portatili e autosufficienti che possono essere eseguiti praticamente ovunque. Docker è diventato lo standard de facto per la distribuzione dei container ed è uno strumento essenziale per gli ingegneri DevOps e per la loro continua integrazione e pipeline di distribuzione.
In questo tutorial, tratteremo come installare Docker su una macchina Ubuntu 18.04 ed esploreremo i concetti e i 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.
Installazione di Docker su Ubuntu #
Sebbene il pacchetto di installazione Docker sia disponibile nel repository ufficiale di Ubuntu 18.04, potrebbe non essere sempre l'ultima versione. L'approccio consigliato consiste nell'installare l'ultimo pacchetto Docker dai repository di Docker.
Abilitazione del repository Docker #
-
Inizia aggiornando l'elenco dei pacchetti e installando le dipendenze necessarie per aggiungere un nuovo repository su HTTPS:
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
-
Importa la chiave GPG del repository utilizzando il seguente
curl
comando:curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
-
Aggiungi il repository Docker APT al tuo sistema:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Installazione di Docker CE #
Ora che il repository Docker è abilitato, puoi installare qualsiasi versione Docker di cui hai bisogno.
-
Per installare l'ultima versione di Docker, utilizzare il comando seguente. Se desideri installare una versione Docker specifica, salta questo passaggio e vai a quello successivo.
sudo apt update
sudo apt install docker-ce
-
Per installare una versione specifica, elenca prima le versioni disponibili nel repository Docker:
apt list -a docker-ce
Il comando stampa le versioni Docker disponibili nella seconda colonna.
docker-ce/bionic 5:18.09.7~3-0~ubuntu-bionic amd64 docker-ce/bionic 5:18.09.6~3-0~ubuntu-bionic amd64 docker-ce/bionic 5:18.09.5~3-0~ubuntu-bionic amd64
Ad esempio, per installare la versione
18.09.6
dovresti digitare:sudo apt install docker-ce=5:18.09.6~3-0~ubuntu-bionic
Per evitare che il pacchetto Docker venga aggiornato automaticamente, contrassegnalo come trattenuto:
sudo apt-mark hold docker-ce
Una volta completata l'installazione, il servizio Docker si avvierà automaticamente. Puoi verificarlo digitando:
sudo systemctl status docker
L'output sarà simile a questo:
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor p
Active: active (running) since Tue 2019-07-02 11:28:40 UTC; 15min ago
Docs: https://docs.docker.com
Main PID: 11911 (dockerd)
Tasks: 10
CGroup: /system.slice/docker.service
Esecuzione del comando docker senza sudo #
Per impostazione predefinita, l'esecuzione dei comandi Docker richiede privilegi di amministratore.
Per eseguire i comandi Docker come utente non root senza anteporre sudo
devi aggiungere il tuo utente alla docker
gruppo. Questo gruppo viene creato durante l'installazione del pacchetto Docker CE. Per farlo, esegui il seguente comando:
sudo usermod -aG docker $USER
$USER
è una variabile di ambiente che contiene il tuo nome utente.
Esci e accedi nuovamente per aggiornare l'appartenenza al gruppo.
Per verificare che Docker sia stato installato correttamente e che tu possa eseguire comandi docker senza anteporre sudo
, esegui:
docker container run hello-world
Il comando scaricherà un'immagine di prova, la eseguirà in un contenitore, stamperà un messaggio "Hello from Docker" ed esce. L'output dovrebbe essere simile al seguente:
Aggiornamento Docker #
Quando viene rilasciata una nuova versione Docker, puoi aggiornare il pacchetto utilizzando il processo di aggiornamento standard:
sudo apt update
sudo apt upgrade
Disinstallazione Docker #
Prima di disinstallare Docker, rimuovere tutti i contenitori, le immagini, i volumi e le reti.
Puoi disinstallare Docker come qualsiasi altro pacchetto installato con apt
:
sudo apt purge docker-ce
sudo apt autoremove
Interfaccia a riga di comando Docker #
Il comando Docker CLI assume questa forma:
docker [option] [subcommand] [arguments]
Per elencare tutti i comandi disponibili, digita 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 è costituita da una serie di livelli di filesystem che rappresentano le istruzioni nel file Docker dell'immagine che costituisce 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 repository pubblici o privati.
Cerca immagine Docker #
Per cercare un'immagine dal registro Docker Hub, utilizza la search
sottocomando.
Ad esempio, per cercare un'immagine Ubuntu, digitare:
docker search ubuntu
L'output dovrebbe essere simile a questo:
Come puoi vedere, la ricerca stampa 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'ultimo.
Scarica immagine Docker #
Ad esempio, per scaricare l'ultima build ufficiale dell'immagine Ubuntu 18.04, dovresti usare il seguente image pull
comando:
docker image pull ubuntu
A seconda della velocità di Internet, il download potrebbe richiedere alcuni secondi o minuti.
Quando non si specifica un tag, Docker estrae l'ultima immagine di Ubuntu, che al momento della stesura di questo articolo è 18.04.
Se vuoi scaricare una versione precedente di Ubuntu, diciamo Ubuntu 16.04, devi usare docker image pull ubuntu:16.04
.
Per elencare tutte le immagini scaricate, digita:
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 ubuntu
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, interrompere, rimuovere e gestire un container con il docker container
sottocomando.
Avvia contenitore Docker #
Il comando seguente avvierà un contenitore Docker basato sull'immagine di Ubuntu. Se non hai l'immagine in locale, la scaricherà prima:
docker container run ubuntu
A prima vista, può sembrare che non sia successo nulla. Ebbene, non è vero. Il contenitore Ubuntu si interrompe immediatamente dopo l'avvio perché non ha un processo di lunga durata e non abbiamo fornito alcun comando. Il contenitore si è avviato, ha eseguito un comando vuoto e quindi è 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 ubuntu /bin/bash
[root@719ef9304412 /]#
Come puoi vedere dall'output sopra, una volta avviato il contenitore, il prompt dei comandi viene modificato. Ciò significa che ora stai lavorando dall'interno del container.
Elenca i contenitori Docker #
Per elencare i contenitori attivi, digita:
docker container ls
Se non hai contenitori in esecuzione, l'output sarà vuoto.
Per visualizzare i contenitori sia attivi che inattivi, passagli il -a
interruttore:
docker container ls -a
Rimuovi contenitori Docker #
Per eliminare uno o più contenitori copia l'ID (o gli ID) del contenitore e incollali dopo il container rm
sottocomando:
docker container rm c55680af670c