Ciao Ragazzi,
oggi parliamo di Docker. Docker è un sistema di virtualizzazione e di astrazione diverso da quello che è il concetto a cui siamo abituati con le macchine virtuali.
Il concetto su cui si basa è quello dei container: ovvero porzioni di spazio di un unico sistema operativo, isolati fra di loro. I container condividono quindi un unico sistema operativo e, in alcuni casi, parte delle sue librerie e binari, ma aggiungono un livello di separazione nell’utilizzo di nuove.
La differenza con le macchine virtuali si può capire dall’immagine seguente:
Mentre le macchine virtuali astraggono le risorse fisiche “costruendo” su un altro sistema operativo (indipendente per ogni macchina), i container sono costruiti su un unico sistema operativo e astraggono solo le librerie/eseguibili basandosi su quelle che sono definite images. Ogni immagine porta con se le sue dipendenze, le sue librerie, i suoi eseguibili ma il tutto avviene su un unico sistema operativo base.
A parte una differenza strutturale, come si può immaginare, i container sono molto più rapidi da costruire e distruggere perchè basta semplicemente fare il pull dell’immagine e farla partire, mentre con le vm la questione è più complessa (anche se largamente ottimizzabile con tool come Ansible)
Rispetto alle virtual machine, i container hanno principalmente questi vantaggi:
- Processi multipli su un unico S.O.
- Riduzione del consumo di risorse IT
- Riduzione della dimensione degli snapshots
- Deploy più rapido e soprattutto multi-piattaforma
- Vantaggi nella migrazione
Beh finita un po’ di teoria, che non guasta mai, passiamo a qualche esempio pratico, per prima cosa l’installazione:
curl -fsSL https://download.docker.com/linux/debian/gpg | apt-key add -
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
apt install docker-ce
Fatto questo installiamo docker-compose che fondamentalmente ci permette di istanziare nuovi container parte da un file di configurazione yml:
curl -L https://github.com/docker/compose/releases/download/1.22.0/docker-compose-$(uname -s)-$(uname -m) -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
Vediamo adesso alcuni comandi utili:
– Download Debian Container from Docker Hub
docker pull debian
– Avvio Container
docker run debian
– Avvio Container Shell
docker run -it debian /bin/bash
– Rimuovere Container
1) docker container stop Container_ID
2) docker container rm Container_ID
– Elenco Container
docker container ls -a
– Elenco Container Attivi
docker container ls
– Elenco Volumi
docker volume ls
– Dettagli Volume
docker volume inspect Volume_ID
– Elenco Immagini
docker images
– Rimuovere Immagine
docker rmi Image_NAME
– Avviare Container con file di configurazione .yml
Nella cartella dove c’è il file docker-compose.yml dare il comando:
docker-compose -d up
Spero che vi sia interessata questa breve panoramica, al momento pur essendo un prodotto ormai da anni in circolazione ho deciso di iniziare ad approfondirlo adesso che sembra maturo!
Enjoy!