some more details about images and containers

master
putro 2020-04-30 16:51:16 +02:00
parent f63ec76b97
commit 3ab012778c
1 changed files with 47 additions and 11 deletions

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
## 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