SlideShare une entreprise Scribd logo
1  sur  21
Télécharger pour lire hors ligne
Docker
la rivoluzione nel
deployment
Come e quando utilizzarlo
Mauro Cicolella
Arti Grafiche, Stampa e Web
Chi sono
Consulente ICT
Sviluppatore freelance
Full remote
Sostenitore Open Source
www.emmecilab.net
Mauro Cicolella
In principio era il "ferro"
www.emmecilab.net
dimensionate con una stima a priori
costi elevati
difficoltà a scalare (verticalmente)
difficoltà a replicare le configurazioni
tempi di ripristino lunghi in caso di guasti
spreco di risorse (spesso utilizzate in
minima percentuale)
assenza di isolamento tra le applicazioni
aka "bare metal"
Tutti i servizi e le applicazioni giravano
su macchine fisiche
Un sistema operativo (guest) in esecuzione
all'interno di un altro sistema operativo (host)
L'hardware fisico è accessibile al guest OS della
VM tramite uno strato software detto
hypervisor
Ciascuna VM vede l'hardware come se fosse a
sua completa disposizione (in realtà è condiviso)
Le VM possono comunicare tra loro e con l'host
solo se esplicitamente stabilito creando delle
apposite network
Consente il consolidamento dei server fisici
Virtualizzazione
www.emmecilab.net
Tanti "computer" su un solo hardware
https://www.researchgate.net/figure/illustration-of-the-concept-of-Virtualization-7_fig1_269636339
Modalità di virtualizzazione
www.emmecilab.net
Hosted Virtualization vs Bare-metal Virtualization
Virtualizzazione sul PC
www.emmecilab.net
Vantaggi e svantaggi della virtualizzazione
Esecuzione SO differenti
Ogni macchina virtuale può eseguire un
sistema operativo diverso (anche da
quello dell'host)
Isolamento VM
Ciascuna macchina virtuale vive in
un proprio spazio e dispone di un
proprio sistema operativo
Emulazione varie CPU
L'emulazione può riguardare anche
diverse architetture hardware
www.emmecilab.net
Risorse ingenti
Per ogni applicazione isolata
occorre virtualizzare hardware e
sistema operativo
Numero esiguo di VM
Le macchine virtuali occupano molto
spazio per cui possono essere
ospitate in un numero ridotto per
disco
Prestazioni non al top
L'esecuzione di più sistemi operativi in
contemporanea limita le performance
rispetto ad un sistema tradizionale
(unico sistema operativo)
Docker
www.emmecilab.net
nasce principalmente per venire incontro agli
sviluppatori con la diffusione del modello a
microservizi
incapsula le applicazioni all'interno di
contenitori isolati detti "container"
i container possono convivere su una stessa
macchina (fisica o virtuale)
sfrutta le funzionalità di isolamento del kernel
Linux
i container sono isolati ma condividono lo
stesso kernel diversamente dalle macchine
virtuali
Docker vs Virtualizzazione
www.emmecilab.net
Impiego limitato di risorse
Non dovendo virtualizzare il SO
sono richieste minori risorse in
termini di RAM e CPU
Rapido avvio
Non è richiesto il boot di un
nuovo sistema operativo
rispetto a quello host
Portabilità
Le immagini Docker includono sia
l'applicazione che la relativa
configurazione semplificando la
portabilità su hardware differenti
Vantaggi di Docker
www.emmecilab.net
Leggerezza
Le immagini hanno dimensioni
ridotte perchè non si portano dietro
il fardello del sistema operativo
Scalabilità
E' possibile creare più container e
distribuirli su più nodi per garantire
affidabilità e bilanciamento del carico
Cross platform
Può girare su Windows, Linux e
macOS, ma anche su architetture
ARM (Raspberry &C)
Minore grado di isolamento
L'isolamento è minore rispetto alla
virtualizzazione per cui in certi ambiti
occorre utilizzare le VM
Dipendenza dal SO host
Data la condivisione i container
dipendono dal sistema operativo
installato sulla macchina
Rispetto architettura CPU
Occorre realizzare immagini
diverse per architetture differenti
(AMD, ARM ecc.)
C'è qualche svantaggio
www.emmecilab.net
Ma in genere il gioco vale la candela
Immagine
www.emmecilab.net
Pacchetto contenente
codice dell'applicazione
ambiente di esecuzione (Java, Php, Node.js,
ecc.)
librerie e dipendenze necessarie
comandi per l'avvio e l'esecuzione
Strutturata come una pila di layer
Sviluppo incrementale
Container
www.emmecilab.net
Ciò che effettivamente "gira" sul computer
istanza di un'immagine
copia identica dell'immagine (alla creazione)
dispone di un layer "scrivibile" (stato)
analogia con i concetti di classi e oggetti nella
OOP
il filesystem è "effimero" ovvero segue il ciclo
di vita del container (necessità di volumi)
può essere isolato o interagire in modo
controllato con altri container e con l'host
bind mounts (cartelle condivise sull'host)
si usano soprattutto in fase di sviluppo
modificabili da chiunque
Persistenza dei dati
www.emmecilab.net
I dati "importanti" non vanno mai memorizzati nel container
(database, documenti, media ecc.)
Salvataggio sull'host o filesystem di rete
volumi (gestiti direttamente da Docker in
un'area specifica del fs)
il loro ciclo di vita è indipendente da quello
dei container (vanno rimossi esplicitamente)
i volumi vanno dichiarati nel Dockerfile e
possono essere condivisi tra i container
Networking
www.emmecilab.net
i container sono isolati
di default non possono comunicare
è possibile esporre delle porte di rete per un
accesso controllato dall'esterno (saranno
accessibili solo tramite tali porte)
si possono definire delle network separate tra
di loro (la comunicazione è consentita solo tra
i container della network di appartenenza)
se necessario possono accedere a più
network
Dockerfile
www.emmecilab.net
"Programma" per la costruzione di immagini
Definisce la struttura dell'immagine
e i passi per realizzarla
FROM ubuntu:latest
RUN apt-get update && apt-get upgrade -y
RUN apt-get install nginx -y
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]
Semplice file di testo che utilizza
un'opportuna sintassi
docker-compose.yml
docker-compose up
docker-compose build
docker-compose down
docker-compose
start/stop
Docker Compose
www.emmecilab.net
Gestire un'infrastruttura Docker con un file e qualche comando
Tool per definire una serie di container che devono essere
avviati contemporaneamente, presentano delle dipendenze e
necessitano o meno di network e volumi
file di testo in formato YAML
contiene delle proprietà
definisce i services (container)
definisce le network
espone le porte
definisce i volumi
definisce le variabili d'ambiente
stabilisce le dipendenze (ordine
di avvio)
imposta la politica di riavvio
docker-compose.yml
www.emmecilab.net
leggibilità
portabilità
dimensioni contenute
Un esempio vale più di mille parole
www.emmecilab.net
Installiamo WordPress
Sviluppare e rilasciare software tramite container
di Serena Sensini
Risorse utili
www.emmecilab.net
Canale YouTube EmmeCiLab
https://www.youtube.com/c/EmmeCiLab
Documentazione ufficiale
https://docs.docker.com/
www.emmecilab.net
Grazie per l'attenzione

Contenu connexe

Tendances

6.Resource Exhaustion
6.Resource Exhaustion6.Resource Exhaustion
6.Resource Exhaustion
phanleson
 

Tendances (20)

Object Oriented Programming with C#
Object Oriented Programming with C#Object Oriented Programming with C#
Object Oriented Programming with C#
 
Introduction to java beans
Introduction to java beansIntroduction to java beans
Introduction to java beans
 
Network-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQNetwork-Connected Development with ZeroMQ
Network-Connected Development with ZeroMQ
 
LinkedList vs Arraylist- an in depth look at java.util.LinkedList
LinkedList vs Arraylist- an in depth look at java.util.LinkedListLinkedList vs Arraylist- an in depth look at java.util.LinkedList
LinkedList vs Arraylist- an in depth look at java.util.LinkedList
 
Writing Reusable Web Components with jQuery and jQuery UI
Writing Reusable Web Components with jQuery and jQuery UIWriting Reusable Web Components with jQuery and jQuery UI
Writing Reusable Web Components with jQuery and jQuery UI
 
Introduction to Visual Studio.NET
Introduction to Visual Studio.NETIntroduction to Visual Studio.NET
Introduction to Visual Studio.NET
 
Servlets
ServletsServlets
Servlets
 
Collections - Lists, Sets
Collections - Lists, Sets Collections - Lists, Sets
Collections - Lists, Sets
 
Networking in linux
Networking in linuxNetworking in linux
Networking in linux
 
HTTP Request and Response Structure
HTTP Request and Response StructureHTTP Request and Response Structure
HTTP Request and Response Structure
 
ASP session object
ASP session objectASP session object
ASP session object
 
Structure in c#
Structure in c#Structure in c#
Structure in c#
 
Properties and indexers in C#
Properties and indexers in C#Properties and indexers in C#
Properties and indexers in C#
 
PHP variables
PHP  variablesPHP  variables
PHP variables
 
Introduction to PHP
Introduction to PHPIntroduction to PHP
Introduction to PHP
 
OFFENSIVE: Exploiting DNS servers changes BlackHat Asia 2014
OFFENSIVE: Exploiting DNS servers changes BlackHat Asia 2014OFFENSIVE: Exploiting DNS servers changes BlackHat Asia 2014
OFFENSIVE: Exploiting DNS servers changes BlackHat Asia 2014
 
6.Resource Exhaustion
6.Resource Exhaustion6.Resource Exhaustion
6.Resource Exhaustion
 
Dotnet Frameworks Version History
Dotnet Frameworks Version HistoryDotnet Frameworks Version History
Dotnet Frameworks Version History
 
OpenCL Programming 101
OpenCL Programming 101OpenCL Programming 101
OpenCL Programming 101
 
Installing and Configuring Domino 10 on CentOS 7
Installing and Configuring Domino 10 on CentOS 7Installing and Configuring Domino 10 on CentOS 7
Installing and Configuring Domino 10 on CentOS 7
 

Similaire à Docker la rivoluzione nel deployment

Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALELezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
Gianluigi Cogo
 

Similaire à Docker la rivoluzione nel deployment (20)

Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle OpenstackMySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
MySQL Tech Tour 2016 - Database-as-a-Service con MySQL e Oracle Openstack
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
Homemade Linux Server
Homemade Linux ServerHomemade Linux Server
Homemade Linux Server
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Joomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e controJoomla day 2010 Virtualizzare in locale pro e contro
Joomla day 2010 Virtualizzare in locale pro e contro
 
MySQL 5
MySQL 5MySQL 5
MySQL 5
 
Cloud Computing
Cloud ComputingCloud Computing
Cloud Computing
 
Virtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVirtualizzazione&Cloud Computing
Virtualizzazione&Cloud Computing
 
Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011
 
Seminario VMWare 2014
Seminario VMWare 2014Seminario VMWare 2014
Seminario VMWare 2014
 
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALELezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
Lezione 7 del 21 febbraio 2012 - CLOUD STORAGE PER USO PERSONALE
 
Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]
 
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi ItaliaDifferenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
Differenze tra Windows Server 2012 R2 su e Server 2016 Yashi Italia
 
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFSLa nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
La nostra infrastruttura di produzione a container con Docker, Rancher e ZFS
 
Cesvip 20110127
Cesvip 20110127Cesvip 20110127
Cesvip 20110127
 
Sistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxSistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente Linux
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggera
 
SQL Server Failover Cluster Instances con Amazon FSx in AWS
SQL Server Failover Cluster Instances con Amazon FSx in AWSSQL Server Failover Cluster Instances con Amazon FSx in AWS
SQL Server Failover Cluster Instances con Amazon FSx in AWS
 
Proxmox VE
Proxmox VEProxmox VE
Proxmox VE
 

Docker la rivoluzione nel deployment

  • 1. Docker la rivoluzione nel deployment Come e quando utilizzarlo Mauro Cicolella Arti Grafiche, Stampa e Web
  • 2. Chi sono Consulente ICT Sviluppatore freelance Full remote Sostenitore Open Source www.emmecilab.net Mauro Cicolella
  • 3. In principio era il "ferro" www.emmecilab.net dimensionate con una stima a priori costi elevati difficoltà a scalare (verticalmente) difficoltà a replicare le configurazioni tempi di ripristino lunghi in caso di guasti spreco di risorse (spesso utilizzate in minima percentuale) assenza di isolamento tra le applicazioni aka "bare metal" Tutti i servizi e le applicazioni giravano su macchine fisiche
  • 4. Un sistema operativo (guest) in esecuzione all'interno di un altro sistema operativo (host) L'hardware fisico è accessibile al guest OS della VM tramite uno strato software detto hypervisor Ciascuna VM vede l'hardware come se fosse a sua completa disposizione (in realtà è condiviso) Le VM possono comunicare tra loro e con l'host solo se esplicitamente stabilito creando delle apposite network Consente il consolidamento dei server fisici Virtualizzazione www.emmecilab.net Tanti "computer" su un solo hardware https://www.researchgate.net/figure/illustration-of-the-concept-of-Virtualization-7_fig1_269636339
  • 5. Modalità di virtualizzazione www.emmecilab.net Hosted Virtualization vs Bare-metal Virtualization
  • 7. Vantaggi e svantaggi della virtualizzazione Esecuzione SO differenti Ogni macchina virtuale può eseguire un sistema operativo diverso (anche da quello dell'host) Isolamento VM Ciascuna macchina virtuale vive in un proprio spazio e dispone di un proprio sistema operativo Emulazione varie CPU L'emulazione può riguardare anche diverse architetture hardware www.emmecilab.net Risorse ingenti Per ogni applicazione isolata occorre virtualizzare hardware e sistema operativo Numero esiguo di VM Le macchine virtuali occupano molto spazio per cui possono essere ospitate in un numero ridotto per disco Prestazioni non al top L'esecuzione di più sistemi operativi in contemporanea limita le performance rispetto ad un sistema tradizionale (unico sistema operativo)
  • 8. Docker www.emmecilab.net nasce principalmente per venire incontro agli sviluppatori con la diffusione del modello a microservizi incapsula le applicazioni all'interno di contenitori isolati detti "container" i container possono convivere su una stessa macchina (fisica o virtuale) sfrutta le funzionalità di isolamento del kernel Linux i container sono isolati ma condividono lo stesso kernel diversamente dalle macchine virtuali
  • 10. Impiego limitato di risorse Non dovendo virtualizzare il SO sono richieste minori risorse in termini di RAM e CPU Rapido avvio Non è richiesto il boot di un nuovo sistema operativo rispetto a quello host Portabilità Le immagini Docker includono sia l'applicazione che la relativa configurazione semplificando la portabilità su hardware differenti Vantaggi di Docker www.emmecilab.net Leggerezza Le immagini hanno dimensioni ridotte perchè non si portano dietro il fardello del sistema operativo Scalabilità E' possibile creare più container e distribuirli su più nodi per garantire affidabilità e bilanciamento del carico Cross platform Può girare su Windows, Linux e macOS, ma anche su architetture ARM (Raspberry &C)
  • 11. Minore grado di isolamento L'isolamento è minore rispetto alla virtualizzazione per cui in certi ambiti occorre utilizzare le VM Dipendenza dal SO host Data la condivisione i container dipendono dal sistema operativo installato sulla macchina Rispetto architettura CPU Occorre realizzare immagini diverse per architetture differenti (AMD, ARM ecc.) C'è qualche svantaggio www.emmecilab.net Ma in genere il gioco vale la candela
  • 12. Immagine www.emmecilab.net Pacchetto contenente codice dell'applicazione ambiente di esecuzione (Java, Php, Node.js, ecc.) librerie e dipendenze necessarie comandi per l'avvio e l'esecuzione Strutturata come una pila di layer Sviluppo incrementale
  • 13. Container www.emmecilab.net Ciò che effettivamente "gira" sul computer istanza di un'immagine copia identica dell'immagine (alla creazione) dispone di un layer "scrivibile" (stato) analogia con i concetti di classi e oggetti nella OOP il filesystem è "effimero" ovvero segue il ciclo di vita del container (necessità di volumi) può essere isolato o interagire in modo controllato con altri container e con l'host
  • 14. bind mounts (cartelle condivise sull'host) si usano soprattutto in fase di sviluppo modificabili da chiunque Persistenza dei dati www.emmecilab.net I dati "importanti" non vanno mai memorizzati nel container (database, documenti, media ecc.) Salvataggio sull'host o filesystem di rete volumi (gestiti direttamente da Docker in un'area specifica del fs) il loro ciclo di vita è indipendente da quello dei container (vanno rimossi esplicitamente) i volumi vanno dichiarati nel Dockerfile e possono essere condivisi tra i container
  • 15. Networking www.emmecilab.net i container sono isolati di default non possono comunicare è possibile esporre delle porte di rete per un accesso controllato dall'esterno (saranno accessibili solo tramite tali porte) si possono definire delle network separate tra di loro (la comunicazione è consentita solo tra i container della network di appartenenza) se necessario possono accedere a più network
  • 16. Dockerfile www.emmecilab.net "Programma" per la costruzione di immagini Definisce la struttura dell'immagine e i passi per realizzarla FROM ubuntu:latest RUN apt-get update && apt-get upgrade -y RUN apt-get install nginx -y EXPOSE 80 CMD ["nginx", "-g", "daemon off;"] Semplice file di testo che utilizza un'opportuna sintassi
  • 17. docker-compose.yml docker-compose up docker-compose build docker-compose down docker-compose start/stop Docker Compose www.emmecilab.net Gestire un'infrastruttura Docker con un file e qualche comando Tool per definire una serie di container che devono essere avviati contemporaneamente, presentano delle dipendenze e necessitano o meno di network e volumi
  • 18. file di testo in formato YAML contiene delle proprietà definisce i services (container) definisce le network espone le porte definisce i volumi definisce le variabili d'ambiente stabilisce le dipendenze (ordine di avvio) imposta la politica di riavvio docker-compose.yml www.emmecilab.net leggibilità portabilità dimensioni contenute
  • 19. Un esempio vale più di mille parole www.emmecilab.net Installiamo WordPress
  • 20. Sviluppare e rilasciare software tramite container di Serena Sensini Risorse utili www.emmecilab.net Canale YouTube EmmeCiLab https://www.youtube.com/c/EmmeCiLab Documentazione ufficiale https://docs.docker.com/