Qual è la differenza tra un'immagine e un contenitore?
sobes.tech AI
Risposta dell'AI
Un'immagine (image) è una istantanea statica e immutabile del sistema di file e dei parametri di configurazione necessari per avviare un'applicazione. Serve come modello.
Un contenitore (container) è un'istanza in esecuzione di un'immagine. È dinamico e rappresenta un processo in esecuzione con la propria interfaccia di rete, sistema di file (basato sull'immagine) e ambiente isolato.
| Caratteristica | Immagine | Contenitore |
|---|---|---|
| Stato | Immutabile | Mutabile |
| Entità | Modello | Istanza in esecuzione |
| Dimensione | Di solito più piccola di un contenitore in esecuzione | Può essere più grande a causa dello strato di scrittura |
| Ciclo di vita | Creato, mantenuto | Creato, avviato, fermato, eliminato |
Esempio: Dockerfile:
# Immagine di base
FROM ubuntu:latest
# Copiare l'applicazione
COPY app /app
# Installare le dipendenze
RUN apt-get update && apt-get install -y python3
# Definire la directory di lavoro
WORKDIR /app
# Comando di avvio
CMD ["python3", "main.py"]
Questo Dockerfile descrive come costruire un'immagine. Dopo aver costruito l'immagine, ad esempio con il comando docker build -t myapp ., otteniamo un'immagine statica chiamata myapp.
Poi, eseguendo il comando docker run -d myapp, creiamo un contenitore basato su questa immagine. Questo contenitore è un processo attivo in cui viene eseguita la nostra applicazione. È possibile creare più contenitori da un'immagine. Le modifiche all'interno di un contenitore (ad esempio, la scrittura di file) non influenzano l'immagine stessa né altri contenitori creati dalla stessa, grazie al meccanismo Copy-on-Write.