CodeGym /Corsi /Docker SELF /Termini principali di Docker

Termini principali di Docker

Docker SELF
Livello 10 , Lezione 0
Disponibile

6.1 Immagini (Images)

Per lavorare efficacemente con Docker, dobbiamo capire alcuni termini chiave: immagini, container e registri. Vediamoli insieme per capire a cosa servono e come interagiscono fra di loro.

Immagine Docker — è un template da cui vengono creati i container. Un'immagine contiene tutti i componenti necessari per eseguire un'applicazione: il sistema operativo, l'applicazione, librerie e dipendenze, così come i file di configurazione. Facendo un'analogia con l'OOP: l'immagine Docker è una classe, mentre il container è un'istanza di quella classe. Le immagini vengono create tramite un Dockerfile — un file di testo che descrive i passi per creare un'immagine.

Caratteristiche principali delle immagini:

  1. Struttura a strati: le immagini sono composte da diversi strati. C'è uno strato base e ogni nuovo strato rappresenta una modifica rispetto al precedente. Questo permette di risparmiare spazio e ridurre i tempi di caricamento.
  2. Riutilizzabilità: la stessa immagine può essere utilizzata per creare molti container.
  3. Portabilità: le immagini possono essere trasferite tra diversi sistemi, rendendole ideali per lo sviluppo, il test e il deployment delle applicazioni in ambienti differenti.

Esempi di utilizzo delle immagini:

Creazione di un'immagine personalizzata: puoi creare la tua immagine scrivendo un Dockerfile, dove specifichi le configurazioni della tua applicazione e le sue dipendenze.

dockerfile

FROM ubuntu:latest
RUN apt-get update && apt-get install -y python3
COPY . /app
CMD ["python3", "/app/app.py"]

Utilizzo di un'immagine già pronta: puoi usare immagini disponibili su Docker Hub per avviare rapidamente applicazioni standard, come web server o database.

Terminale

docker pull nginx 

Questo comando scarica l'immagine nginx dal registro pubblico Docker Hub.

6.2 Contenitori (Containers)

Un contenitore Docker è un'istanza in esecuzione di un'immagine. I contenitori isolano le applicazioni e le loro dipendenze in un ambiente di esecuzione separato, permettendo loro di funzionare indipendentemente dal sistema host e da altri contenitori. I contenitori sono leggeri, poiché utilizzano il kernel del sistema operativo host invece di creare un kernel separato, come fanno le macchine virtuali.

Caratteristiche principali dei contenitori:

  • Isolamento: i contenitori isolano le applicazioni, garantendo il loro funzionamento indipendente e prevenendo i conflitti di dipendenze.
  • Leggerezza: i contenitori consumano meno risorse rispetto alle macchine virtuali, poiché non richiedono un sistema operativo separato.
  • Avvio rapido: i contenitori si avviano e si fermano molto più rapidamente rispetto alle macchine virtuali, rendendoli ideali per ambienti dinamici e scalabilità.

Esempi di utilizzo dei contenitori:

Avvio di un contenitore: puoi avviare un contenitore da un'immagine usando il comando docker run.

Terminale

docker run -d -p 80:80 --name mynginx nginx

Gestione dei contenitori: Docker fornisce comandi per la gestione dei contenitori: start, stop, restart, rm ed exec.

Terminale

docker stop mynginx
docker rm mynginx

Scoprirete tutti i comandi e i loro parametri nelle prossime lezioni.

6.3 Registri (Registries)

Registro Docker — è uno storage per immagini Docker. I registri permettono a sviluppatori e organizzazioni di salvare, gestire e distribuire immagini di container. Esistono registri pubblici e registri privati.

Caratteristiche principali dei registri:

  • Registri pubblici: come Docker Hub, offrono accesso a una moltitudine di immagini create dalla community e dagli sviluppatori ufficiali.
  • Registri privati: vengono utilizzati per salvare e gestire immagini all’interno di un’organizzazione, garantendo controllo degli accessi e sicurezza.
  • Integrazione con CI/CD: i registri si integrano facilmente con sistemi di continuous integration e deployment, automatizzando il processo di creazione e distribuzione delle immagini.

Esempi di utilizzo dei registri:

1. Docker Hub: il registro pubblico (e il più popolare) di immagini Docker. Fornisce accesso a molte immagini pronte all’uso (e spesso testate, come si può vedere dalle statistiche di download).

Terminale

docker pull nginx
docker push myusername/myimage:tag  

2. Registro privato: puoi configurare e utilizzare un registro proprio usando Docker Registry.

Terminale

docker run -d -p 5000:5000 --name registry registry:2
docker tag myimage localhost:5000/myimage
docker push localhost:5000/myimage

Interazione tra immagini, container e registri

Questi tre componenti sono strettamente collegati e costituiscono la base del lavoro con Docker:

  • Creazione dell'immagine: lo sviluppatore crea un’immagine con Dockerfile e la salva localmente.
  • Caricamento dell'immagine nel registro: l’immagine viene caricata in un registro (ad esempio, Docker Hub o registro privato), dove viene salvata e resa disponibile per altri utenti o sistemi.
  • Esecuzione del container: l’utente scarica l’immagine dal registro e avvia un container, che isola l’applicazione e ne garantisce l’esecuzione.

6.4 Orchestrazione (Orchestration)

Orchestrazione — è il processo di gestione di molti container in un ambiente distribuito. Gli strumenti di orchestrazione aiutano ad automatizzare il deployment, il scaling e la gestione dei container.

  • Kubernetes: la piattaforma di orchestrazione container più popolare, che permette di gestire un cluster di container su diversi nodi.
  • Docker Swarm: una piattaforma di orchestrazione integrata in Docker per creare e gestire cluster Docker.
  • Funzioni di orchestrazione: scaling automatico, autoriparazione, gestione delle reti e bilanciamento del carico.

6.5 Reti (Networks)

Le reti in Docker permettono ai container di interagire tra di loro e con il mondo esterno. Docker offre diversi tipi di reti per vari scenari di utilizzo.

  • Bridge: la rete predefinita creata da Docker. I container nella rete bridge possono interagire tra di loro.
  • Host: il container utilizza le interfacce di rete della macchina host, ottenendo accesso diretto ad esse.
  • Overlay: viene utilizzata per creare reti tra diversi demoni Docker. Necessaria per l'orchestrazione.
  • None: disabilita tutte le interfacce di rete del container. Utile per compiti isolati.

6.6 Volumi (Volumes)

I volumi (Volumes) sono un meccanismo per la memorizzazione persistente dei dati dei container. Permettono di salvare i dati al di fuori del container, così che le informazioni non vadano perse durante un riavvio o eliminazione del container.

  • Creazione di un volume: i volumi vengono creati usando il comando docker volume create.
  • Montaggio di un volume: i volumi vengono collegati ai container tramite il flag -v durante l'avvio.
  • Vantaggi: i volumi offrono un metodo comodo per salvare e scambiare dati tra i container, oltre a una migliore performance rispetto alle directory associate (bind mounts).

Importante! Un volume è come un disco rigido virtuale che si può collegare a una macchina virtuale o a un container. Di solito è memorizzato nel sistema operativo host come un normale file.

Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION