some more details about images and containers
This commit is contained in:
parent
f63ec76b97
commit
3ab012778c
|
@ -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
|
# 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
|
||||||
|
|
Loading…
Reference in New Issue
Block a user