CodeGym /Corsi /Docker SELF /Scelta dell'immagine di base

Scelta dell'immagine di base

Docker SELF
Livello 14 , Lezione 1
Disponibile

7.1 Immagine base

Le immagini base svolgono un ruolo importante nella creazione delle immagini Docker, poiché forniscono il punto di partenza per il build e determinano l'ambiente in cui verrà eseguita la tua app. Fare la scelta giusta e configurare correttamente le immagini base può influenzare significativamente le prestazioni, le dimensioni e la sicurezza dell'immagine finale. In questa lezione vedremo come scegliere e configurare le immagini base per Docker.

Un'immagine base (o immagine di partenza) è un'immagine Docker utilizzata come layer iniziale per creare una nuova immagine Docker. Può includere un sistema operativo minimale, strumenti e librerie necessarie o addirittura essere vuota (immagine scratch). La scelta dell'immagine base determina quali risorse e pacchetti saranno disponibili nel container di default.

Scelta dell'immagine base

Nella scelta dell'immagine base, bisogna tenere in considerazione diversi fattori:

  1. Dimensione dell'immagine: Immagini più piccole si scaricano più velocemente, occupano meno spazio su disco e possono velocizzare il deployment delle applicazioni.
  2. Supporto e aggiornamenti: Usare immagini ufficiali con aggiornamenti regolari garantisce un livello di sicurezza più alto, correzione delle vulnerabilità e stabilità operativa.
  3. Compatibilità: L'immagine base deve includere le librerie e le dipendenze necessarie per garantire il funzionamento corretto della tua applicazione.

Immagini base popolari

1. Alpine Linux

Immagine super leggera, pesa circa 5 MB. È perfetta per applicazioni che richiedono un sistema operativo minimale. Tuttavia, gli sviluppatori devono tenere presente che Alpine manca di molte librerie standard, quindi alcune applicazioni potrebbero richiedere configurazioni aggiuntive.

dockerfile

FROM alpine:3.12

2. Debian/Ubuntu

Immagini più complete che includono una vasta gamma di strumenti e librerie. Sono adatte per applicazioni complesse che richiedono un ambiente più completo o una libreria standard Linux familiare.

dockerfile

FROM ubuntu:20.04 

3. Immagini Ufficiali dei Linguaggi

Immagini ufficiali per linguaggi di programmazione come Node.js, Python, Ruby e altri. Queste immagini contengono già l'ambiente necessario per sviluppare ed eseguire applicazioni nel linguaggio corrispondente, semplificando la configurazione.

dockerfile

FROM node:14 

7.2 Configurazione dell'immagine base

Dopo aver scelto l'immagine base, è necessario configurarla in base ai requisiti della tua applicazione. La configurazione include l'installazione dei pacchetti necessari, la copia dei file dell'applicazione e la configurazione dell'ambiente.

Esempio: Configurazione dell'immagine base basata su Alpine Linux

dockerfile


# Utilizziamo l'immagine base Alpine Linux
FROM alpine:3.12
        
# Installiamo i pacchetti necessari
RUN apk add --no-cache python3 py3-pip
        
# Impostiamo la directory di lavoro
WORKDIR /app
        
# Copiamo i file dell'applicazione
COPY . .
        
# Installiamo le dipendenze
RUN pip3 install -r requirements.txt
        
# Indichiamo il comando per avviare l'applicazione
CMD ["python3", "app.py"]

In questo esempio viene utilizzata l'immagine base alpine:3.12, vengono installati i pacchetti necessari, copiati i file dell'applicazione e installate le dipendenze. Il comando finale alpine:3.12 specifica come avviare l'applicazione.

Esempio: Configurazione dell'immagine base basata su Ubuntu

dockerfile


# Utilizziamo l'immagine base Ubuntu
FROM ubuntu:20.04
        
# Aggiorniamo e installiamo i pacchetti necessari
RUN apt-get update && apt-get install -y \
    python3 \
    python3-pip \
    && rm -rf /var/lib/apt/lists/*
        
# Impostiamo la directory di lavoro
WORKDIR /app
        
# Copiamo i file dell'applicazione
COPY . .
        
# Installiamo le dipendenze
RUN pip3 install -r requirements.txt
        
# Indichiamo il comando per avviare l'applicazione
CMD ["python3", "app.py"] 

Questo Dockerfile utilizza l'immagine ubuntu:20.04 e installa Python e pip. Successivamente, copia i file dell'applicazione e installa le dipendenze, similmente all'esempio precedente.

7.3 Migliori pratiche

Come scegliere e configurare correttamente le immagini base:

1. Scegli immagini minimali: inizia con le immagini più piccole che soddisfano i requisiti della tua applicazione. Questo ridurrà la dimensione dell'immagine finale e aumenterà la sicurezza.

2. Non installare pacchetti inutili: installa solo le dipendenze realmente necessarie per la tua applicazione. Questo ridurrà la dimensione dell'immagine e diminuerà il numero di potenziali vulnerabilità.

3. Pulisci la cache dei gestori di pacchetti: dopo aver installato i pacchetti, elimina i file temporanei e la cache per rendere l'immagine più leggera.

dockerfile


RUN apt-get update && apt-get install -y python3 python3-pip && rm -rf /var/lib/apt/lists/*

4. Usa la multi-stage build: permette di separare le fasi di build e runtime, aiutando a creare immagini più leggere e sicure.

Terminale

        
# Fase di build
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
        
# Fase finale
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html

5. Aggiorna regolarmente le immagini: utilizza versioni recenti delle immagini base per includere le ultime patch di sicurezza e aggiornamenti.

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