Tutorial Docker per principianti: nozioni di base, Archiarchitettura, Contenitori

โšก Riepilogo intelligente

Docker รจ una piattaforma di containerizzazione che impacchetta le applicazioni e le loro dipendenze in container portatili e leggeri. Questa panoramica spiega l'architettura di Docker e l'installazione su Ubuntucomandi essenziali e in che modo i container si differenziano dalle macchine virtuali tradizionali per una distribuzione piรน rapida del software.

  • ???? Containerizzazione: Docker virtualizza a livello di sistema operativo, quindi i container condividono il kernel dell'host e utilizzano meno risorse rispetto alle macchine virtuali.
  • ๐Ÿงฑ Architecnologia: Il motore Docker (dockerd), le immagini, i registri e i container costituiscono l'architettura client-server alla base di ogni flusso di lavoro Docker.
  • ๐Ÿ“ฆ Immagini e contenitori: Un'immagine รจ un modello di sola lettura, mentre un container รจ una copia in esecuzione, e un'immagine puรฒ avviare molti container.
  • ๏ธ Registri: Docker Hub archivia immagini pubbliche e private, offrendoti milioni di immagini pronte all'uso da scaricare ed eseguire.
  • โš™๏ธ Installazione: On Ubuntu Si aggiunge il repository APT di Docker e la chiave GPG, quindi si installa il pacchetto docker-ce con apt-get.
  • ๏ธ Comandi principali: Gestisci i container con i comandi docker pull, run, start, stop, ps, stats e images dalla riga di comando.

Tutorial Docker per principianti che copre l'architettura e l'installazione su Ubuntue comandi di base del container

Docker รจ una delle piattaforme di containerizzazione piรน popolari utilizzate nella moderna DevOps e flussi di lavoro cloud. Questo tutorial Docker per principianti spiega cos'รจ Docker, come funziona l'architettura Docker, come installare Docker su Ubuntue i comandi di base utilizzati per gestire immagini e container.

Cos'รจ Docker?

docker Docker รจ una piattaforma di sviluppo software per la virtualizzazione che consente l'esecuzione di piรน sistemi operativi sullo stesso host. Aiuta a separare l'infrastruttura dalle applicazioni, permettendo cosรฌ di rilasciare il software piรน rapidamente. A differenza degli hypervisor, utilizzati per creare macchine virtuali (VM), Docker esegue la virtualizzazione a livello di sistema utilizzando unitร  chiamate container Docker.

I container Docker vengono eseguiti sopra il sistema operativo host, come mostrato nell'immagine sottostante. Ciรฒ migliora sia l'efficienza che la sicurezza. รˆ inoltre possibile eseguire un numero maggiore di container rispetto alle macchine virtuali sulla stessa infrastruttura, poichรฉ i container utilizzano meno risorse.

Virtualizzazione in Docker vs Hypervisor
Virtualizzazione in Docker vs Hypervisor

A differenza delle VM, che possono comunicare direttamente con l'hardware host (ad esempio, un adattatore Ethernet che crea piรน adattatori virtuali), i container Docker vengono eseguiti in un ambiente isolato al di sopra del sistema operativo host. Anche se il tuo host รจ in esecuzione Windows, puoi correre Linux immagini all'interno dei contenitori con l'aiuto di Hyper-V, che crea automaticamente una piccola macchina virtuale per virtualizzare l'immagine di base.

Ora che sapete cos'รจ Docker, vediamo i motivi principali per cui i team lo scelgono.

Perchรฉ usare Docker?

Ecco i principali motivi per utilizzare Docker:

  • Docker รจ un software utilizzato per la virtualizzazione, che consente la creazione di piรน sistemi operativi da eseguire sullo stesso host.
  • Docker รจ un'applicazione client-server, il che significa che i client comunicano con un server.
  • Le immagini Docker fungono da "codice sorgente" per i container; le si utilizzano per la creazione.
  • Docker supporta due tipi di registri: pubblici e privati.
  • I container sono le unitร  organizzative di Docker. In parole semplici, un'immagine รจ un modello e un container รจ una copia di quel modello, quindi รจ possibile eseguire piรน container dalla stessa immagine.

Questi vantaggi derivano dal modo in cui Docker รจ stato progettato. La sezione seguente illustra l'architettura di Docker e i suoi componenti principali.

docker Architectura

Ora, in questo tutorial sui container Docker, esaminiamo i componenti principali dell'architettura Docker.

docker ArchiComponenti dell'architettura: motore, immagini, registri e contenitori.

docker Architectura

Motore Docker

Docker รจ un'applicazione client-server, il che significa che abbiamo dei client che inoltrano le richieste a un server. Il demone Docker, chiamato dockerd, รจ il motore Docker che rappresenta il server. Il demone e i client possono essere eseguiti sullo stesso host o su un host remoto e comunicano tramite un binario client da riga di comando e un'interfaccia completa. API RESTful che interagisce con dockerd.

Immagini Docker

Le immagini Docker sono il "codice sorgente" dei nostri container; le utilizziamo per crearli. Le immagini possono avere software preinstallato, il che velocizza la distribuzione. Sono portatili ed รจ possibile utilizzare immagini esistenti o crearne di proprie.

Registri Docker

Docker memorizza le immagini che creiamo nei registri. Esistono registri pubblici e privati. Docker ha un registro pubblico chiamato Hub Docker, dove puoi anche archiviare immagini in modo privato. Docker Hub ha milioni di immagini che puoi iniziare a utilizzare immediatamente.

Contenitori di Docker

I container sono le unitร  organizzative di Docker e uno dei suoi concetti fondamentali. Quando creiamo un'immagine e la eseguiamo, la eseguiamo all'interno di un container. L'analogia con il container viene utilizzata per via della portabilitร  del software che vi viene eseguito: รจ possibile spostarlo, "spedirlo", modificarlo, gestirlo, crearlo o eliminarlo, proprio come le navi cargo gestiscono i container reali.

In termini semplici, un'immagine รจ un modello e un contenitore รจ una copia di quel modello. Puoi avere piรน contenitori (copie) della stessa immagine.

L'interazione tra questi diversi componenti mostra come funziona la tecnologia dei container Docker. Comandi come `docker pull` e `docker run`, che tratteremo in seguito, consentono di gestire questo flusso di lavoro.

Tenendo presente l'architettura, installiamo Docker in modo che possiate provare voi stessi questi componenti.

Come installare Docker su Linux/Ubuntu

Di seguito รจ riportata una procedura dettagliata per l'installazione di Docker su Linux/Ubuntu:

Passo 1) Per installare Docker, sono necessari i pacchetti DEB del team Docker. Innanzitutto, alcuni prerequisiti Ubuntu Sono necessari alcuni pacchetti. Utilizzare il comando seguente per installarli.

$ sudo apt-get install \
apt-transport-https \
ca-certificates curl \
software-properties-common

*il segno โ€œ\โ€ non รจ necessario viene utilizzato per la nuova riga, volendo รจ possibile scrivere il comando senza utilizzare โ€œ\โ€ in una sola riga.

Passo 2) Aggiungi la chiave GPG ufficiale di Docker con l'impronta digitale. Utilizza il seguente comando Docker per inserire la chiave GPG.

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

Passo 3) Successivamente, aggiungi il repository Docker APT utilizzando il comando seguente.

$ sudo add-apt-repository \
"deb [arch=amd64] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) \
stable"

Potrebbe esserti richiesto di confermare che desideri aggiungere il repository e che la chiave GPG venga aggiunta automaticamente al tuo host. Il comando lsb_release dovrebbe popolare il Ubuntu versione di distribuzione del tuo host.

Passo 4) Dopo aver aggiunto la chiave GPG, aggiorna le sorgenti APT utilizzando il comando Docker riportato di seguito.

$ sudo apt-get update

Ora รจ possibile installare il pacchetto Docker.

Passo 5) Una volta aggiornate le sorgenti APT, inizia l'installazione dei pacchetti Docker su Ubuntu utilizzando il comando Docker riportato di seguito.

$ sudo apt-get install docker-ce

Il comando sopra riportato installa Docker e altri pacchetti necessari. Prima di Docker 1.8.0, il nome del pacchetto era lxc-docker, mentre tra Docker 1.8 e 1.13 il nome del pacchetto era docker-engine.

NOTA: Docker per Windows richiede Windows 10 Pro o Enterprise versione 14393 o Windows Server 2016 RTM, da eseguire.

Come utilizzare Docker utilizzando i comandi Docker di base

Ecco come utilizzare Docker con alcuni comandi Docker di base.

Il comando piรน elementare da eseguire dopo aver installato Docker รจ docker info, come accennato in precedenza.

$ sudo docker info

Dovresti ottenere un risultato simile al seguente.

Utilizzare Docker con i comandi Docker di base, mostrando l'output di docker info

Come mostrato nell'esempio Docker precedente, possiamo visualizzare informazioni sui container Docker: quanti sono in esecuzione, in pausa o arrestati e quante immagini sono state scaricate. Ora procediamo a scaricare la nostra prima immagine.

$ sudo docker pull alpine

Con questo comando, indichiamo a Docker di scaricare l'immagine alpine, prelevandola dal registro pubblico nella versione piรน recente, che รจ impostata di default.

*alpine รจ un'immagine Docker minima basata su Alpine Linux con un indice del pacchetto completo e una dimensione di soli 5 MB.

Se vogliamo eseguire l'immagine come container, utilizziamo il seguente comando.

$ sudo docker run -i -t alpine /bin/bash

Eseguendo il comando, accediamo direttamente al terminale Alpine. Il flag -i mantiene aperto lo STDIN del container anche quando non si รจ connessi ad esso; questo input standard persistente รจ una delle componenti necessarie per una shell interattiva. Il flag -t rappresenta l'altra componente e indica a Docker di assegnare una pseudo-tty al container. Insieme, questi due flag ci forniscono una shell interattiva nel nuovo container. Usciamo dal container con un semplice comando exit.

Ora, in questo tutorial sulle basi di Docker, possiamo provare a eseguire un Ubuntu immagine.

$ sudo docker run -it ubuntu /bin/bash

Notate che Docker verifica la presenza dell'immagine localmente e, se non la trova, la scarica automaticamente dalla libreria di immagini. Anche in questo caso, abbiamo una shell interattiva in esecuzione. Possiamo anche assegnare un nome ai container durante l'esecuzione.

$ sudo docker run โ€“-name our_container -it ubuntu /bin/bash

Quindi usciamo di nuovo. Possiamo anche eseguire un container creato in precedenza senza una shell interattiva.

$ sudo docker start container_name

E arrestiamo il container scrivendo docker stop container_name.

$ sudo docker stop container_name

Se vogliamo visualizzare tutti i container in esecuzione, รจ sufficiente eseguire il seguente comando.

$ docker ps

Per tutti i container, aggiungiamo "-a" alla fine dello stesso comando, ad esempio `docker ps -a`. Questo comando mostra l'ID del container, l'immagine che utilizza, la data di creazione, il suo stato di esecuzione, le porte esposte e un nome generato casualmente per una gestione piรน semplice.

Quando eseguiamo i container, spesso vogliamo sapere quante risorse stanno utilizzando. A tale scopo, possiamo utilizzare il seguente comando.

$ docker stats

รˆ inoltre possibile visualizzare le immagini scaricate localmente, insieme alle relative informazioni.

$ sudo docker images

Il comando nell'esempio Docker sopra riportato visualizza ogni immagine Docker con un tag che mostra la versione dell'immagine, un ID univoco dell'immagine, la data di creazione e la dimensione dell'immagine.

Per capire perchรฉ i container rappresentano un miglioramento cosรฌ significativo, รจ utile esaminare l'evoluzione della virtualizzazione.

Cos'รจ la virtualizzazione?

In passato, la distribuzione di un servizio era un processo lento e complesso. Gli sviluppatori scrivevano il codice, che poi veniva distribuito dal team operativo su macchine bare-metal, dove era necessario prestare attenzione alle versioni delle librerie, alle patch e ai compilatori del linguaggio affinchรฉ il codice funzionasse. In caso di bug o errori, il processo ricominciava da capo: gli sviluppatori risolvevano il problema e il team operativo procedeva a una nuova distribuzione.

Le cose sono migliorate con la creazione degli hypervisor. Gli hypervisor eseguono piรน macchine virtualio macchine virtuali (VM) sullo stesso host, che possono essere in esecuzione o spente. Le VM hanno ridotto notevolmente i tempi di attesa per la distribuzione del codice e la correzione dei bug, ma la vera svolta รจ stata rappresentata dai container Docker.

La popolaritร  di Docker รจ anche trainata dagli strumenti di orchestrazione che gestiscono i container su larga scala, come kubernetesPrima di proseguire, ecco un breve riepilogo dei comandi Docker piรน importanti.

Comandi Docker importanti

Di seguito sono riportati i comandi Docker importanti:

Comando Descrizione
informazioni sulla finestra mobile Comando di informazione
tiro del docker Scarica un'immagine
docker run -i -t nome_immagine /bin/bash Esegui l'immagine come contenitore
la finestra mobile avvia our_container Avvia contenitore
finestra mobile stop nome_contenitore Arrestare il contenitore
docker ps Elenco di tutti i container in esecuzione
statistiche della finestra mobile Informazioni sul contenitore
immagini docker Elenco delle immagini scaricate
Pulizia Docker Uccidi tutti i contenitori in esecuzione.

Leggi anche questi Domande e risposte al colloquio di lavoro Docker Adatto sia ai neolaureati che ai professionisti esperti.

DOMANDE FREQUENTI

Un container Docker condivide il kernel del sistema operativo host e isola solo l'applicazione, quindi รจ leggero e si avvia in pochi secondi. Una macchina virtuale, invece, include un sistema operativo guest completo, il che la rende piรน grande, piรน lenta all'avvio e piรน dispendiosa in termini di risorse.

Un Dockerfile รจ uno script di testo semplice contenente istruzioni come FROM, RUN, COPY e CMD. Docker legge queste istruzioni per creare automaticamente un'immagine. Ogni riga aggiunge un livello, consentendo di riprodurre lo stesso ambiente su qualsiasi macchina.

Docker Compose definisce ed esegue applicazioni multi-container utilizzando un singolo file YAML. รˆ sufficiente descrivere ogni servizio, rete e volume una sola volta, quindi avviare tutto con il comando `docker compose up`. รˆ ideale per lo sviluppo locale e il test di servizi connessi.

Docker crea ed esegue singoli container, mentre kubernetes Kubernetes orchestra numerosi container all'interno di un cluster. Aggiunge funzionalitร  di scalabilitร  automatica, autoriparazione e bilanciamento del carico. In pratica, Docker impacchetta l'applicazione e Kubernetes la gestisce in produzione.

Docker Engine รจ gratuito e open source, distribuito con licenza Apache 2.0. Docker Desktop รจ gratuito per uso personale, didattico e per le piccole imprese, ma le aziende piรน grandi necessitano di un abbonamento a pagamento. Docker Hub offre piani di hosting di immagini sia gratuiti che a pagamento.

Docker viene eseguito nativamente su Linux ed รจ supportato su Windows and macOS tramite Docker Desktop. Windows Su Mac e Docker, Docker utilizza una macchina virtuale leggera per eseguire il kernel Linux necessario ai container. La maggior parte delle immagini dei container sono basate su Linux.

Gli assistenti basati sull'IA generano Dockerfile, file docker-compose e comandi CLI a partire da input in linguaggio naturale. Analizzano inoltre i log di build e gli errori dei container, ne spiegano la causa e suggeriscono soluzioni. Prima di eseguire il progetto, รจ sempre consigliabile verificare la correttezza dei tag delle immagini, dei percorsi e delle impostazioni di sicurezza della configurazione generata.

Sรฌ. Le serrature scorrevoli portatili e i catenacci a superficie possono essere usati per mettere in sicurezza una porta a scomparsa dall'esterno. Alcuni kit con catena di sicurezza consentono anche il bloccaggio esterno con chiave o manopola girevole. Copilota GitHub ChatGPT รจ in grado di generare Dockerfile e file Compose a partire da un breve commento o una descrizione. Questi strumenti velocizzano la creazione di codice standard, ma รจ consigliabile verificare le immagini di base, le versioni e le best practice, poichรฉ i frammenti di codice generati potrebbero utilizzare impostazioni predefinite obsolete.

Riassumi questo post con: