Introduzione
Docker è una piattaforma che rende più semplice l'esecuzione e la gestione dei processi applicativi nei container. Fornisce un modo per separare le tue applicazioni dalla tua infrastruttura. I container sono molto simili alle macchine virtuali, ma sono più portabili, efficienti e facili da usare. Esistono vari modi per installare Docker su Linux distribuzioni. Il modo più popolare e semplice per installare Docker sul sistema operativo esistente è utilizzare i comandi yum.
Questo tutorial dimostrerà come configurare e utilizzare Docker su CentOS 7 in pochi semplici passaggi.
Prerequisiti:
- 64-bit Istanza CentOS 7.
- Un utente non-root con privilegi sudo.
Tutti i comandi eseguiti in questo tutorial vengono eseguiti come utente non-root e, se necessario, l'accesso root verrà fornito utilizzando la parola chiave sudo.
Passaggio 1: Configurazione di Docker su un'istanza CentOS 7
Il repository ufficiale di CentOS 7 potrebbe non contenere l'ultimo pacchetto di installazione per Docker. In questa sezione installerai l'ultima versione di Docker dal repository ufficiale di Docker. Innanzitutto, devi aggiornare il database dei pacchetti utilizzando:
|
1 |
sudo yum check-update |
Al termine della fase di aggiornamento, esegui il comando seguente per scaricare e installare l'ultima versione di Docker:
|
1 |
curl -fsSL https://get.docker.com/ | sh |
Docker è ora installato, quindi puoi avviare il daemon Docker eseguendo il comando seguente:
|
1 |
sudo systemctl start docker |
Per verificare se il daemon Docker è in esecuzione, digita quanto segue:
|
1 |
sudo systemctl status docker |
L'output del comando systemctl status dovrebbe essere simile all'output condiviso di seguito, che mostra che è in esecuzione:
|
1 2 3 4 5 6 |
Output: ● docker.service - Docker Application Container Engine Loaded: loaded (/usr/lib/systemd/system/docker.service; disabled; vendor preset: disabled) Active: active (running) since Wed 2021-02-17 18:22:06 UTC; 10s ago Docs: https://docs.docker.com Main PID: 21884 (dockerd) |
Infine, per assicurarti che Docker si avvii al riavvio della macchina, usa il comando:
|
1 |
sudo systemctl enable docker |
L'installazione di Docker fornisce il servizio Docker e l'utilità client (client della riga di comando Docker). Nelle prossime sezioni del tutorial potrai fare più pratica utilizzando i comandi Docker.
Puoi anche dare un'occhiata al nostro tutorial approfondito su come installare & utilizzare Docker su Ubuntu nel cloud pubblico.
Passaggio 2: Utilizzo dei comandi Docker senza prefisso Sudo
I comandi Docker richiedono i privilegi di root per essere eseguiti. Pertanto, se desideri eseguire i comandi dovrai anteporre ad essi sudo. Durante l'installazione, viene creato un gruppo Docker per impostazione predefinita. Se aggiungi un utente al gruppo puoi eseguire i comandi Docker senza sudo. Il tentativo di eseguire i comandi Docker senza sudo o senza aggiungere l'utente al gruppo risulterà in un output simile a quello riportato di seguito:
|
1 2 3 |
Output: docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?. See 'docker run --help'. |
Aggiungere il tuo nome utente al gruppo Docker ti assicurerà di non dover utilizzare sudo per eseguire i comandi Docker:
|
1 |
sudo usermod -aG docker $(whoami) |
Per aggiungere un altro utente al gruppo Docker puoi semplicemente sostituire il nome utente nel comando:
|
1 |
sudo usermod -aG docker username |
Per il resto di questa guida, assumeremo che tutti i comandi siano eseguiti da un utente nel gruppo utenti Docker. In caso contrario, puoi utilizzare il prefisso sudo con i comandi.
Passo 3: Esecuzione dei comandi Docker
Ora che hai installato e avviato Docker, diamo un’occhiata ad alcuni comandi per familiarizzare con l'utilità della riga di comando di Docker. I comandi Docker di solito assumono la forma di:
|
1 |
docker [opzione] [comando] [argomenti] |
Per trovare tutti i sottocomandi disponibili dovresti usare:
|
1 |
docker |
A partire da Docker 20.10.3, l'elenco completo dei sottocomandi disponibili include:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 |
Output: attach Collega i flussi locali standard di input, output, e di errore streams a un in esecuzione container build Crea un' immagine da un Dockerfile commit Crea una nuova immagine dalle modifiche di un container's changes cp Copia file/cartelle tra un container e il filesystem locale create Crea un nuovo container diff Ispeziona le modifiche a file o directory sul filesystem di un container events Ottieni eventi in tempo reale dal serverthe server exec Esegui un comando in un container in esecuzionecontainer export Esporta il filesystem di un container' come archivio tar a tar archive history Mostra la cronologia di un' immagine images Elenca le immagini import Importa i contenuti da un tarball per creare un'immagine del filesystemimage info Mostra informazioni sull'intero -sistemainformation inspect Restituisce informazioni di- basso livello sugli oggetti Dockerobjects kill Arresta forzatamente uno o più container in esecuzionecontainers load Carica un'immagine da un archivio tar o STDIN login Accedi a un registro Dockerregistry logout Disconnettiti da un registro Dockerregistry logs Recupera i log di un container pause Sospendi tutti i processi all'interno di uno o piùcontainer port Elenca le mappature delle porte o una mappatura specifica per il container ps Elenca container pull Scarica un'immagine o un repository da un registry push Invia un'immagine o un repository a un registry rename Rinomina un container restart Riavvia uno o più container rm Rimuovi uno o più container rmi Rimuovi una o più immagini run Esegui un comando in un nuovo container save Salva una o più immagini in un archivio tar (trasmesso su STDOUT di default) search Cerca il Docker Hub per immagini start Avvia uno o più container arrestati stats Mostra un flusso in tempo reale delle statistiche (di ) utilizzo delle risorse dei container stop Arresta uno o più container in esecuzione tag Crea un tag TARGET_IMAGE che fa riferimento a SOURCE_IMAGE top Mostra i processi in esecuzione di un container unpause Ripristina tutti i processi all'interno di uno o più container update Aggiorna la configurazione di uno o più container version Mostra le informazioni sulla versione di Docker wait Blocca fino a quando uno o più container si arrestano, quindi stampa i loro codici di uscita |
Puoi usare il flag –help con un comando specifico per ottenere maggiori informazioni al riguardo:
|
1 |
docker subcommand --help |
Per ottenere informazioni dettagliate sul sistema, usa:
|
1 |
docker info |
Passo 4: Lavorare con le immagini Docker
Le immagini Docker possono essere definite come il modello per i container Docker. Queste immagini vengono solitamente scaricate dal Docker Hub, che è un registro gestito dal progetto Docker. Chiunque può creare e inviare le proprie immagini su Docker Hub. Di conseguenza, puoi trovare facilmente un'ampia varietà di applicazioni e distribuzioni di sistemi operativi nel registro. Proviamo un semplice programma che confermerà l'accesso a Docker Hub:
|
1 |
docker run hello-world |
Dovresti ottenere un output come quello qui sotto, che mostra che Docker sta funzionando:
|
1 2 3 4 |
Output: Ciao da Docker! Questo messaggio mostra che la tua installazione sembra funzionare correttamenteworking correctly. ... |
Puoi trovare varie immagini Docker su Docker Hub utilizzando il comando search. Ad esempio, vedi il comando seguente per cercare un'immagine CentOS:
|
1 |
docker search centos |
La query di ricerca mostrerà un elenco di tutte le immagini che corrispondono alla sottostringa. Nel tuo caso l'output dovrebbe essere simile a:
|
1 2 3 4 5 6 7 8 |
Output: NOME DESCRIZIONE STARS UFFICIALE AUTOMATIZZATO centos La build ufficiale di CentOS. 6410 [OK] ansible/centos7-ansible Ansible su Centos7 132 [OK] consol/centos-xfce-vnc Centos container con "headless" VNC sess… 125 [OK] jdeathe/centos-ssh OpenSSH / Supervisor / EPEL/IUS/SCL Repos… 117 [OK] centos/systemd systemd abilitato base container. 96 [OK] ... |
Nei risultati della ricerca ci sono diverse colonne che descrivono le informazioni sull'immagine. L'OK nella colonna OFFICIAL determina che l'immagine è stata creata e supportata dall'azienda dietro l'applicazione. Una volta finalizzata l'immagine, puoi scaricarla sulla tua macchina locale usando il comando Docker pull:
|
1 |
docker pull centos |
Dopo aver scaricato l'immagine, puoi avviare il container usando il comando Docker run. Se provi ad avviare direttamente un'immagine senza averla prima scaricata, Docker scaricherà l'immagine e successivamente avvierà il container:
|
1 |
docker run centos |
Puoi elencare le immagini scaricate sulla tua macchina locale utilizzando il comando seguente:
|
1 |
docker images |
Dovresti ottenere un output simile:
|
1 2 3 4 |
Output: REPOSITORY TAG IMAGE ID CREATED SIZE centos latest 300e315adb2f 2 mesi fa 209MB hello-world latest bf756fb1ae65 13 mesi fa 13.3kB |
Più avanti in questo tutorial, potrai modificare le immagini per eseguire i container. Queste nuove immagini possono essere aggiunte o caricate tramite push su Docker Hub e altri registri che ospitano le immagini Docker.
Passo 5: Eseguire un container in modo interattivo
Esistono diversi tipi di container. Il container hello-world che hai eseguito nel Passo 4 è un tipo di container che viene eseguito e termina dopo aver stampato un messaggio. Un altro tipo di container è quello interattivo. Puoi utilizzare i container interattivi in modo simile a una macchina virtuale.
Creiamo un container dall'ultima immagine CentOS. L'uso dei flag -i e -t nel comando Docker run fornirà l'accesso interattivo al container CentOS:
|
1 |
docker run -it centos |
Il prompt dei comandi cambierà e dovrebbe apparire come l'output seguente:
|
1 2 |
Output: [root@3ce69d2a35b9 /]# |
|
1 |
Nota: Il container ID visualizzato nel prompt dei comandi è unico e tornerà utile in seguito , nell', esempio esso è il valore 3ce69d2a35b9. |
Ora qualsiasi comando eseguito verrà eseguito all'interno del container. Questo è simile all'esecuzione di un comando in una macchina virtuale. Proviamo a installare MySQL server nel container CentOS. Puoi farlo usando:
|
1 |
yum install mysql |
Passo 6: Eseguire il commit delle modifiche in un container in un'immagine Docker
Dopo aver avviato il container, puoi eseguire tutte le operazioni che sono fattibili in una macchina virtuale simile, come creare/modificare i file o configurare un'app. Tieni presente che queste modifiche rimarranno solo per quel container e, dopo aver distrutto il container, le modifiche apportate andranno perse.
In questa parte del tutorial, imparerai come creare una nuova immagine Docker da un container con le modifiche che hai apportato. Dopo Step5 hai un container CentOS in esecuzione con il server MySQL installato. Questo container è ora diverso dall'immagine CentOS pulita. Puoi salvare questo stato del container per un uso successivo. Innanzitutto, devi uscire dal container utilizzando:
|
1 |
exit |
Esegui il commit delle modifiche apportate nel container in una nuova immagine Docker utilizzando il comando seguente:
|
1 |
docker commit -m "Modifiche apportate all'immagine" -a "Nome Autore" container-id repository/nuovo_nome_immagine |
Nel comando, -m si riferisce al messaggio di commit e dovrebbe fondamentalmente indicare le modifiche apportate, il tag -a viene utilizzato per menzionare l'autore. Il container-id è quello di Step5, che hai ottenuto dopo aver eseguito il container in modalità interattiva, e di solito il repository è il tuo nome utente per Docker Hub. Ad esempio:
|
1 |
docker commit -m "aggiunto mysql-server" -a "CloudSigma" 59839a1b7de2 finid/centos-mariadb |
|
1 |
Nota: Dopo che la nuova immagine è stata sottoposta a commit, viene salvata sul tuo sistemasistema. Nelle prossime fasi di questo tutorial imparerai , come inviare un'immagine a Docker Hub e in registri simili che ospitano immagini dockerdockerUna volta che la tua immagine . è stata inviata al registro, potrà essere consultata anche , da altribe accessed by others as well. |
Ora che è stato eseguito il commit dell'immagine, il comando Docker images dovrebbe elencare sia la nuova immagine che quelle vecchie:
|
1 |
docker images |
L'output del comando dovrebbe essere simile al seguente:
|
1 2 3 4 5 |
Output: REPOSITORY TAG IMAGE ID CREATED SIZE cloudsigma23/centos-mysql latest 1b9368efea70 13 secondi fa 308MB centos latest 300e315adb2f 2 mesi fa 209MB hello-world latest bf756fb1ae65 13 mesi fa 13.3kB |
Come si vede nell'esempio, viene creata una nuova immagine centos-mysql utilizzando l'immagine CentOS da Docker Hub. La differenza di dimensioni determina che sono state apportate alcune modifiche. In questo esempio, si è trattato dell'aggiunta del server MySQL nel container. La prossima volta che avrai bisogno di un container con un server MySQL, potrai semplicemente eseguire la nuova immagine, e voilà! Avrai un container CentOS con un server MySQL preinstallato in esecuzione.
Passo 7: Gestione dei container Docker
Ora che hai familiarità con Docker, dopo averlo usato per un po' di tempo avrai già alcuni container in esecuzione e altri inattivi. Per ottenere l'elenco dei container attivi dovresti usare:
|
1 |
docker ps |
Dovresti vedere un output simile:
|
1 2 3 |
Output: CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 604c889cf404 centos "/bin/bash" 20 minuti fa Attivo 20 minuti intelligent_easley |
Per elencare sia i container attivi che quelli inattivi, devi utilizzare il flag -a con il comando:
|
1 |
docker ps -a |
Per trovare l'ultimo container creato, puoi fornire il flag -l:
|
1 |
docker ps -l |
Per arrestare un container in esecuzione/attivo, esegui un semplice comando:
|
1 |
docker stop container-id |
Puoi trovare il container-id nell'output del comando Docker ps.
Fase 8: Pubblicazione delle immagini in un repository
Il passo successivo dopo la creazione della nuova immagine consiste nel condividerla con i tuoi amici. Puoi anche renderla disponibile per tutto il mondo utilizzando Docker Hub o qualsiasi altro registro. È necessario effettuare l'accesso al rispettivo registro prima di inviare l'immagine.
Nella prossima parte del tutorial, imparerai come inviare le immagini a Docker Hub. Innanzitutto, registrati su Docker Hub. Dovrai accedere a Docker Hub per inviare la tua immagine utilizzando il comando seguente:
|
1 |
docker login -u docker-registry-username |
Una volta fornita la password corretta e l'autenticazione è andata a buon fine, puoi inviare la tua immagine. Per inviare l'immagine, usa il comando seguente:
|
1 |
docker push docker-registry-username/docker-image-name |
L'output del comando sarà simile a questo:
|
1 2 3 4 5 |
Output: Il push si riferisce al repository [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Inviato 2653d992f4ef: Montato da library/centos ... |
Una volta inviata l'immagine, dovrebbe apparire nella dashboard del tuo account, come mostrato nell'immagine qui sotto:

In caso di errore simile, è probabile che tu non abbia effettuato l'accesso:
|
1 2 3 4 5 6 7 |
Output: Il push si riferisce al repository [docker.io/cloudsigma23/centos-mysql] ee30e80cbcc5: Layer già esiste 2653d992f4ef: Layer già esiste errori: negato: richiesto l'accesso a la risorsa è negato non autorizzato: autenticazione richiesta |
Puoi effettuare l'accesso e ripetere il tentativo di push.
Conclusione
Ci sono diversi modi in cui puoi utilizzare Docker. Questo tutorial dovrebbe fornirti informazioni sufficienti per iniziare. E poiché Docker è un progetto di grande tendenza, puoi trovare molti dettagli sull'utilizzo e sui diversi casi d'uso nella pagina del blog del progetto.
Puoi anche dare un'occhiata agli altri nostri tutorial su Docker per saperne di più su cosa puoi fare con Docker:
- Pulizia delle risorse Docker – Immagini, container e volumi
- Distribuzione di Laravel, Nginx e MySQL con Docker Compose
- Esegui il tuo server VPN sotto Docker con OpenVPN Access Server
Buon computing!
Commenti
Ancora nessun commento. Scrivi il primo.