diff --git a/content/_index.md b/content/_index.md index c5db848..b2d6550 100644 --- a/content/_index.md +++ b/content/_index.md @@ -34,17 +34,37 @@ outputs = ["Reveal"] --- +## Immagini + +* Un’immagine e' fatta di layer immutabili + +* Due diverse immagini possono condividere un layer comune + +* Sul disco sono salvati i singoli layer, quindi un layer in comune tra piu' immagini e' presente una volta sola + +* Ogni volta che aggiungo qualcosa a un'immagine si crea un nuovo layer aggiuntivo (e quindi una nuova immagine) + +--- + # Concetti base ## Container -* Un container e' una "istanza" di una immagine +* Un container e' una "istanza" di un'immagine -* Un container in genere esegue un solo processo (es. apache) +* In sostanza ai layer di una immagine viene aggiunto un ulteriore layer che pero' e' scrivibile + +* Da un'immagine posso far partire piu' container indipendenti + +--- + +## Container + +* Un container in genere esegue un solo processo * Quindi ad esempio se si vuole un CMS servono almeno 2 container: uno per il webserver e uno per il database -* I container possono comunicare tra di loro tramite un'interfaccia di rete +* I container possono comunicare tra di loro tramite un'interfaccia di rete dedicata * I container possono comunicare allo stesso modo anche con l'host, per cui ad esempio potrei avere il webserver in un container e il database sull'host @@ -65,9 +85,11 @@ outputs = ["Reveal"] # Docker client -il client e' l'interfaccia (testuale) per fare tutto, dalla costruzione delle immagini all'esecuzione dei containers. +* il client e' l'interfaccia (testuale) per fare tutto, dalla costruzione delle immagini all'esecuzione dei containers. -esistono intefacce grafiche, ma sono poco utili per imparare a usare docker. +* esistono interfacce grafiche, per tutti i gusti, mediamente inutili per un uso "casalingo". + +* esistono anche dei frontend da console, ad es. dry (http://moncho.github.io/dry/) --- @@ -143,11 +165,11 @@ cfa463df8e9d x86dev/docker-ttrss "/init" 11 month ## docker run -fa partire un processo dentro un nuovo container partendo dall'immagine specificata, es. docker run hello-world +* fa partire un processo dentro un nuovo container partendo dall'immagine specificata, es. docker run hello-world -se non si specifica un nome il container avra' un nome casuale, altrimenti usare --name nomescelto +* se non si specifica un nome il container avra' un nome casuale, altrimenti usare --name nomescelto -ci sono un sacco di opzioni, vedi man docker-run, perche' questo e' il comando con cui si fa partire un container e si specificano tutti i "parametri" +* ci sono un sacco di opzioni, vedi man docker-run, perche' questo e' il comando con cui si fa partire un container e si specificano tutti i "parametri" --- @@ -167,9 +189,9 @@ Se e' necessario eseguire piu' processi dentro un container bisogna usare qualco ## docker exec -esegue un comando dentro un container in esecuzione, es. docker exec -it /bin/sh mysql +* esegue un comando dentro un container, es. docker exec -it /bin/sh mysql -in questo modo ci si ritrova in una shell sh **dentro** il container mysql in esecuzione. +* in questo modo ci si ritrova in una shell sh **dentro** il container mysql in esecuzione. --- @@ -204,7 +226,7 @@ e' comunque possibile creare reti e assegnare indirizzi IP ai container * e' un file "ricetta" per creare una nuova immagine (con docker build) -* definisce come creare l'immagine (da dove partire e cosa aggiungere (files e pacchetti) +* definisce come creare l'immagine (da dove partire e cosa aggiungere (files e pacchetti)) * definisce alcune configurazioni dell'immagine (es. che porta di rete aprire all'esterno) @@ -286,5 +308,19 @@ docker-compose up -d --- +## La pulizia + +* ogni tanto eliminare i container fermi e le immagini inutilizzate puo' aiutare a liberare parecchio spazio + +* ogni volta che si "aggiorna" un'immagine o se ne crea una nuova versione, la precedente resta sul disco + +* ogni volta che il processo eseguito nel container termina il suo compito, il container viene stoppato, e resta li in questo stato. + +* tutti i files stanno in /var/lib/docker (per linux), ma non toccate quella cartella se non sapete cosa state facendo. + +* docker system df per vedere lo spazio usato e quanto se ne puo' recuperare con un docker system prune + +--- + # FINE