CodeGym /Corsi /Docker SELF /Introduzione a Docker Images

Introduzione a Docker Images

Docker SELF
Livello 13 , Lezione 0
Disponibile

1.1 Fondamenti di Docker Images

Docker Images (immagini Docker) — sono template per i container Docker. Contengono tutto ciò che serve per far partire le applicazioni: codice, librerie, dipendenze, strumenti e file di configurazione. Capire cosa sono le Docker Images e come sono strutturate è essenziale per usare Docker in modo efficiente.

Docker Image — è un template immutabile che viene utilizzato per creare container. Contiene tutti i componenti necessari per eseguire un'applicazione in un ambiente isolato. Quando avvii un container, Docker crea un'istanza dell'immagine e la esegue.

Caratteristiche principali delle Docker Images:

  1. Immutabilità: le immagini Docker sono immutabili. Qualsiasi modifica nel container non influisce sull'immagine originale. Per cambiare il contenuto di un'immagine, è necessario creare una nuova immagine.
  2. Struttura a strati: le Docker Images sono composte da vari strati. Ogni strato rappresenta una modifica rispetto al precedente. Questo permette di ottimizzare lo spazio riutilizzando gli strati.
  3. Identificazione: ogni immagine ha un identificatore unico (hash SHA256), e può avere uno o più tag, che semplificano la gestione delle versioni delle immagini.

Struttura delle Docker Images:

Le Docker Images hanno una struttura a strati, dove ogni strato è un file system. Questi strati sono memorizzati nella cache di Docker e possono essere riutilizzati da altre immagini. La struttura a strati rende le immagini Docker leggere ed efficienti. Per esempio, il primo strato è il sistema operativo, il secondo è Python, il terzo è la tua applicazione.

Componenti principali della struttura delle Docker Images:

  1. Strato base (Base Layer): il primo strato dell'immagine, spesso utilizzato come base per creare altre immagini. Per esempio, potrebbe essere una versione minima di un sistema operativo come Ubuntu o Alpine Linux.
  2. Strati intermedi (Intermediate Layers): questi strati vengono creati in base ai comandi eseguiti nel Dockerfile (ad esempio, installazione di pacchetti, copia di file, ecc.). Ogni strato aggiunge modifiche al precedente.
  3. Strato finale (Final Layer): l'ultimo strato, creato in base all'istruzione CMD, ENTRYPOINT o alle modifiche all'interno del container, è detto "strato del container". Questo strato è temporaneo ed esiste solo durante l'esecuzione del container.

1.2 Come funzionano i layer di Docker Images

Ogni layer di un'immagine Docker rappresenta un set di modifiche rispetto al layer precedente. Quando Docker crea un'immagine, esegue ogni istruzione dal Dockerfile aggiungendo un nuovo layer per ogni modifica.

Esempio di creazione dei layer:

  1. Immagine di base: iniziamo con un'immagine di base, ad esempio, ubuntu:20.04. Questo sarà il primo layer.
  2. Installazione dei pacchetti: il comando RUN apt-get update && apt-get install -y python3 creerà un nuovo layer con Python installato.
  3. Copia dei file: il comando COPY . /app aggiungerà i file dell'applicazione in un nuovo layer.
  4. Impostazione della directory di lavoro: il comando WORKDIR /app creerà un layer che imposterà la directory di lavoro per i comandi successivi.

Vantaggi dell'uso dei layer:

  1. Riutilizzo: i layer possono essere riutilizzati da altre immagini. Ad esempio, se due immagini usano lo stesso layer di base, Docker lo scaricherà solo una volta, risparmiando spazio e tempo.
  2. Caching: Docker mette in cache i layer, accelerando il processo di build delle immagini. Se un layer non è cambiato, Docker lo utilizza dalla cache invece di ricostruirlo.
  3. Modularità: la struttura a layer consente di progettare immagini in modo modulare. Puoi aggiornare o modificare singoli layer senza toccare l'intera immagine.

Identificazione e tag delle Docker Images:

Ogni Docker Image viene identificata con un hash unico (SHA256), generato in base al contenuto dell'immagine e di tutti i suoi layer. Per una gestione più semplice e la versione delle immagini, è possibile utilizzare dei tag.

Esempio di identificazione di un'immagine:

Il seguente comando mostrerà un elenco di tutte le immagini sul tuo sistema, incluso il loro repository, tag, ID e dimensioni:

Terminale

docker images

1.3 Lavorare con Docker Images

Docker ti offre tantissimi comandi per gestire le immagini. Ecco i principali:

  • Creazione di un'immagine: docker build
  • Avviare un container da un'immagine: docker run
  • Elenco delle immagini: docker images
  • Eliminare un'immagine: docker rmi
  • Cercare un'immagine su Docker Hub: docker search
  • Scaricare un'immagine da Docker Hub: docker pull
  • Caricare un'immagine su Docker Hub: docker push

Esempio di creazione e utilizzo di un Docker Image:

1. Creare un Dockerfile:

dockerfile

# Usiamo una immagine base di Ubuntu
FROM ubuntu:20.04

# Installiamo Python
RUN apt-get update && apt-get install -y python3

# Copiamo i file dell'app nel container
COPY . /app

# Impostiamo la directory di lavoro
WORKDIR /app

# Specifica il comando per avviare l'applicazione
CMD ["python3", "app.py"]

2. Costruire l'immagine:

Questo comando creerà un'immagine chiamata my_python_app, usando il Dockerfile nella directory corrente:

Terminal

docker build -t my_python_app .

3. Avviare un container dall'immagine:

Usa il seguente comando per avviare un container dall'immagine creata my_python_app in background:

Terminal

docker run -d my_python_app
Commenti
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION