
22 11
Installare Docker su Centos
Guida passo passo alla configurazione
Introduzione
Docker è un’applicazione che rende semplice l’avvio di processi applicativi all’interno di un container, paragonabile a una macchina virtuale, solo più portabile e più dipendente dal sistema operativo che lo ospita. Esistono due metodi per installare Docker su CentoOS 7. Un metodo prevede l’installazione su un sistema operativo già installato. L’altro metodo prevede l’avvio di una VM con uno strumento chiamato Docker Machine, che auto installa Docker. In questo tutorial verrà spiegato come installare e utilizzare Docker su un sistema operativo CentOS 7 già presente.
Prerequisiti
- 64-bit CentOS 7 Droplet
- Un utente non-root con privilegi sudo
Tutti i comandi in questo tutorial dovrebbero essere avviati come un utente non-root. Se viene richiesto l’accesso come root, il comando dovrà essere preceduto da sudo.
Passaggio 1 — Installazione di Docker
Il pacchetto di installazione Docker è disponibile nella repository ufficiale di CentOS 7, però potrebbe non essere l’ultima versione disponibile. Per ottenenre l’ultima versione, si consiglia di installare Docker dalla repository ufficiale Docker. Questa sezione mostra come effettuare questa operazione.
Aggiorniamo il database dei pacchetti:
$ sudo yum check-update
Adesso scarichiamo e installiamo, con il seguente comando, l’ultima versione disponibile di Docker.
$ curl -fsSL https://get.docker.com/ | sh
Appena l’installazione è completata, avviare il daemon Docker:
$ sudo systemctl start docker
Verificare che è stato correttamente avviato con il seguente comando:
$ sudo systemctl status docker
L’output dovrebbe essere simile a ciò che segue, mostrando il servizio attivo:
Output
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2016-05-01 06:53:52 CDT; 1 weeks 3 days ago
Docs: https://docs.docker.com
Main PID: 749 (docker)
Da ultimo, rendiamo l’avvio automatico ad ogni reboot.
$ sudo systemctl enable docker
Passaggio 2 - Eseguire il comando Docker senza sudo (opzionale)
Se si vuole evitare di digitare sudo ogni volta che si avvia il comando Docker, si può aggiungere il proprio username al gruppo docker:
$ sudo usermod -aG docker $(whoami)
Per abilitare questo cambiamento, è necessario effettuare il logout e collegarsi con lo stesso utente. Il resto del presente articolo assume che sia stata effettuata questa operazione, per cui non verrà più fatto precedere sudo al comando docker.
Passaggio 3 - Utilizzo del comando Docker
Una volta installato Docker, vediamone l’utilizzo. La sintassi per l’utilizzo è la seguente:
$ docker [option] [command] [arguments]
Per visualizzare tutti gli argomenti disponibili, digitare:
$ docker
Output
attach Attach to a running container
build Build an image from a Dockerfile
commit Create a new image from a container's changes
cp Copy files/folders between a container and the local filesystem
create Create a new container
diff Inspect changes on a container's filesystem
events Get real time events from the server
exec Run a command in a running container
export Export a container's filesystem as a tar archive
history Show the history of an image
images List images
import Import the contents from a tarball to create a filesystem image
info Display system-wide information
inspect Return low-level information on a container or image
kill Kill a running container
load Load an image from a tar archive or STDIN
login Log in to a Docker registry
logout Log out from a Docker registry
logs Fetch the logs of a container
network Manage Docker networks
pause Pause all processes within a container
port List port mappings or a specific mapping for the CONTAINER
ps List containers
pull Pull an image or a repository from a registry
push Push an image or a repository to a registry
rename Rename a container
restart Restart a container
rm Remove one or more containers
rmi Remove one or more images
run Run a command in a new container
save Save one or more images to a tar archive
search Search the Docker Hub for images
start Start one or more stopped containers
stats Display a live stream of container(s) resource usage statistics
stop Stop a running container
tag Tag an image into a repository
top Display the running processes of a container
unpause Unpause all processes within a container
update Update configuration of one or more containers
version Show the Docker version information
volume Manage Docker volumes
wait Block until a container stops, then print its exit code
Passaggio 4 - Lavorare con le immagini Docker
I Docker container sono avviati dalle immagini Docker. Di default, queste immagini vengono prelevate da Docker Hub, un registro Docker gestito da Docker, la società che sta dietro il progetto Docker. Tutti possono costruire e ospitare le proprie immagini Docker su Docker Hub. La maggior parte degli applicativi e distribuzioni Linux hanno un’immagine ospitata su Docker Hub.
Per verificare se si può accedere e scaricare le immagini da Docker Hub, digitare:
$ docker run hello-world
L’output, che dovrebbe includere ciò che segue, indica che quel Docker è funzionante:
Output
Hello from Docker.
This message shows that your installation appears to be working correctly.
…
E’ possibile cercare le immagini disponibili su Docker Hub utilizzando il comando docker search termine_da_ricercare. Ad esempio, per cercare l’immagine CentOS, digitare:
$ docker search centos
Lo script analizzerà il Docker Hub e restituirà una lista di tutte le immagini il cui nome eguaglia la stringa di ricerca. In questo specifico caso, l’output sarà simile a ciò che segue:
Output
NAME DESCRIPTION STARS OFFICIAL AUTOMATED
centos The official build of CentOS. 2224 [OK]
jdeathe/centos-ssh CentOS-6 6.7 x86_64 / CentOS-7 7.2.1511 x8… 22 [OK]
jdeathe/centos-ssh-apache-php CentOS-6 6.7 x86_64 / Apache / PHP / PHP M… 17 [OK]
million12/centos-supervisor Base CentOS-7 with supervisord launcher, h… 11 [OK]
Nella colonna OFFICIAL, OK indica un’immagine costruita e supportata dall’azienda che sta dietro il progetto. Una volta identificata l’immagine che si vorrebbe usare, si può scaricarla in locale usando il seguente comando:
$ docker pull centos
Dopo che l’immagine è stata scaricata, si può avviare il container utilizzando l’immagine scaricata con il subcomando run. Esempio:
$ docker run centos
Per visualizzare le immagini che sono state scaricate sul proprio computer, digitare:
$ docker images
Le immagini che si utilizzano per avviare i container possono essere modificate e utilizzate per generare nuove immagini, che successivamente possono essere caricate nel Docker Hub o in un altro registro Docker.
Passaggio 5 - Avviare un container Docker
Come esempio, avviamo un container utilizzando l’immagine CentOS. La combinazione dei parametri -i e -t permette l’utilizzo di una shell interattiva all’interno del container:
$ docker run -it centos
Il prompt dei comandi dovrebbe cambiare per riflettere il fatto che adesso si sta lavorando all’interno del container e dovrebbe assumere la seguente forma:
[root@59839a1b7de2 /]#
Adesso si può avviare qualsiasi comando all’interno del container. Ad esempio, installiamo il server MariaDB all’interno del container.
$ yum install mariadb-server
Passaggio 6 - Salvare le modifiche effettuate nel container in una immagine Docker
Quando si avvia un’immagine Docker, si può creare, modificare e cancellare i file come all’interno di una macchina virtuale. I cambiamenti effettuati verranno applicati solo al container. Questa sezione mostra come salvare lo stato di un container come nuova immagine Docker.
Dopo aver installato il server MariaDB all’interno del container CentOS, questo è differente dall’immagine utilizzata per crearlo. Per salvare lo stato del container come nuova immagine, dapprima uscire dal container:
$ exit
Dopodichè salvare i cambiamenti in una nuova immagine Docker utilizzando il seguente comando:
$ docker commit -m “descrizione dei cambiamenti” -a “Author” container-id repository/new_image_name
Da notare che quando si salvano i cambiamenti in un’immagine, la nuova immagine è salvata localmente, ovvero sul proprio computer. Più avanti si vedrà come caricare un’immagine in un registro Docker - tipo Docker Hub - cosicchè possa essere verificata e utilizzata anche da altri utenti.
A operazione completata, il comando $ docker images mostra sul proprio computer la nuova immagine, come anche la precedente da cui è derivata.
Passaggio 7 - Mostrare i container Docker
Dopo aver usato i Docker per un po’, si avranno molti container attivi e inattivi sul proprio computer. Per verificare quelli attivi, utilizzare il seguente comando:
$ docker ps
Per visualizzare tutti i container - attivi e inattivi - usare l’argomento -a come segue:
$ docker ps -a
Per visualizzare l’ultimo container creato, utilizzare l’argomento -l:
$ docker ps -l
Per fermare un container avviato o attivo, digitare il seguente comando:
$ docker stop container-id
Il container-id può essere reperito nell’output dal comando $ docker ps
Passaggio 8 - Caricare le immagini Docker in una repository Docker
Il passaggio successivo, dopo aver creato una nuova immagine da un’immagine già esistente, è quello di condividerla con altri utenti su Docker Hub o su altri registri Docker a cui si ha accesso. Per effettuare questa operazione, è necessario avere un account attivo su un registro. Questa sezione mostra come caricare un’immagine Docker su Docker Hub.
Per prima cosa è necessario autenticarsi con il seguente comando:
$ docker login -u docker-registry-username
Specificando la password corretta, l’autenticazione dovrebbe avvenire con successo. Successivamente si può caricare la propria immagine usando il seguente comando:
$ docker push docker-registry-username/docker-image-name