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

Email

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