From 988a3ff71187731e2d0d99e3331348b1355678d3 Mon Sep 17 00:00:00 2001 From: dado Date: Mon, 4 Aug 2025 21:11:35 +0200 Subject: [PATCH] dockerfile --- docker/011-dockerfie.md | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 docker/011-dockerfie.md diff --git a/docker/011-dockerfie.md b/docker/011-dockerfie.md new file mode 100644 index 0000000..fe04bb6 --- /dev/null +++ b/docker/011-dockerfie.md @@ -0,0 +1,41 @@ +# Docker file + +## Introduzione + +Il `Dockerfile` è un file di testo utilizzato per creare immagini Docker personalizzate. Nel caso di Podman, il file è denominato `Containerfile`, ma la sintassi rimane invariata. + +```dockerfile +FROM ubuntu + +LABEL Description="ubuntu con curl preinstallato" +RUN apt update && apt install -y curl + +ENTRYPOINT ["/usr/bin/curl"] +``` + +In questo esempio, l'istruzione `FROM` specifica l'immagine base, `LABEL` imposta una descrizione e `RUN` esegue i comandi `apt update` e `apt install curl`. + +Ogni istruzione nel Dockerfile crea un nuovo layer. Se si utilizzano molte istruzioni, l'immagine risultante sarà più grande. Per ridurre le dimensioni dell'immagine, è consigliabile combinare più comandi in un'unica istruzione. Ad esempio, l'uso di apt-get update e apt-get install in un'unica riga evita la creazione di layer aggiuntivi. + +Durante la creazione dell'immagine, il container viene spento e riacceso tra un'istruzione e l'altra. Questo significa che non c'è continuità tra le istruzioni: le variabili d'ambiente impostate in un'istruzione non saranno disponibili nelle istruzioni successive. + +### Caching + +Docker utilizza un meccanismo di caching per ottimizzare la creazione delle immagini. Se un'istruzione non viene modificata, Docker utilizzerà il risultato della cache invece di eseguire nuovamente l'istruzione. Tuttavia, se un'istruzione prevede il download di una risorsa, la versione memorizzata nella cache potrebbe non essere aggiornata se la risorsa online è cambiata. Per forzare Docker a non utilizzare la cache, è possibile utilizzare l'opzione `--no-cache` durante la costruzione dell'immagine: + +```bash +docker build --no-cache -t image_name +``` + +### Istruzioni + +Le istruzioni più comuni utilizzate in un Dockerfile includono: + +- `ADD`: consente di aggiungere file o directory remoti o locali al container +- `COPY`: copia file e directory locali all'interno del container +- `ENTRYPOINT`: definisce l'eseguibile predefinito all'avvio del container +- `CMD`: specifica i parametri di avvio per l'ENTRYPOINT +- `ENV`: imposta variabili d'ambiente che saranno disponibili in fase di esecuzione del container +- `EXPOSE`: indica al demone Docker che il container ascolta su una certa porta +- `FROM`: definisce l'immagine di base da cui derivare la nuova immagine +- `RUN`: esegue comandi all'interno del container durante la costruzione dell'immagine