some more details about images and containers

This commit is contained in:
putro 2020-04-30 16:51:16 +02:00
parent f63ec76b97
commit 3ab012778c

View File

@ -34,17 +34,37 @@ outputs = ["Reveal"]
--- ---
## Immagini
* Unimmagine 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 # Concetti base
## Container ## 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 * 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 * 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 in un container e il database sull'host
@ -65,9 +85,11 @@ outputs = ["Reveal"]
# Docker client # 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 ## 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 ## 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) * 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) * 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 # FINE