Docker: il salvavita per ogni sviluppatore
PUG Rovigo
14/04/2021
rovigo.grusp.org
HDD
Hipster Driven Development
(o Hype DD)
VIRTUAL MACHINES
VS
CONTAINERS
Tecnologie che risolvono casi d'uso simili ma che, oltre a non essere la stessa cosa, non risolvono gli stessi problemi.
Virual Machines
Anni '60
Agli inizi di questa decade IBM mette sul mercato os/360 che per supportare l'artigianalità di ogni soluzione introduce la virtualizzazione per mezzo dell'emulazione. Vengono introdotti i concetti di:
- Guest
- Hypervisor
Anni '00
Per uscire dal paradigma un sistema - una macchina per avere prestazioni accettabili si cerca di accelerare l'integrazione:
- VT-x
- AMD-V
Ad oggi
Abbiamo una vasta scelta di hypervisor sul mercato e tutti sufficientemente ottimizzati e affidabili.
- KVM
- Xen
- VMWare
- Hyper-V
Containers
1982
Viene introdotto in BSD il comando chroot, risolve un problema di confinamento per i seguenti casi d'uso:
- Trust
- Build
- Isolated
1999
Viene introdotto su FreeBSD la chiamata Jail nel kernel che consente anche di delegare per la gestione e il controllo della macchina. Si aprono le porte di una nuova applicazione per gli internet service provider.
2005
Solaris introduce le Zones come supporto kernel che consente un isolamento più avanzato creando una sandbox per gli applicativi.
2007
In questo anno e nei successivi vengono integrate nel kernel delle chiamate che consentono di muoversi verso l'isolamento completo del processo.
- Namespaces
- cgroups
- BTRFS, ZFS, UFS (..): copy-on-write
2013
La doCloud diventa Docker e propone una soluzione per la gestione dei container developer friendly.
https://www.ianlewis.org/en/container-runtimes-part-1-introduction-container-r https://alenkacz.medium.com/whats-the-difference-between-runc-containerd-docker-3fc8f79d4d6e
Docker
Tramite il suo demone consente di effettuare una serie di operazioni sui container come le seguenti:
- image format
- building container images (Dockerfile/docker build)
- container images (docker images, docker rm , etc.)
- instances (docker ps, docker rm , etc.)
- share images (docker push/pull)
- run (docker run)
ufs
Docker
Daemon / Engine
Processo
cgroups
namespaces
Esempio
(al volo)
Disegni
https://undraw.co/
rovigo@grusp.org
https://github.com/pug-rovigo
https://github.com/eppak
Github
Sorgenti
A. Cappellozza, A. Vianello
Organizzatori
Ringraziamenti
Hai domande? Scrivici o cercaci su slack #pugRovigo
Riferimenti
Docker: il salvavita per ogni sviluppatore
By Alessandro Cappellozza
Docker: il salvavita per ogni sviluppatore
Meetup PUG Rovigo del 23/09/2020 IOT e WEB Development
- 693