SlideShare ist ein Scribd-Unternehmen logo
1 von 21
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

Building Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache AirflowBuilding Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache AirflowSid Anand
 
Apache Zeppelin + Livy: Bringing Multi Tenancy to Interactive Data Analysis
Apache Zeppelin + Livy: Bringing Multi Tenancy to Interactive Data AnalysisApache Zeppelin + Livy: Bringing Multi Tenancy to Interactive Data Analysis
Apache Zeppelin + Livy: Bringing Multi Tenancy to Interactive Data AnalysisDataWorks Summit/Hadoop Summit
 
Docker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and ContainersDocker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and ContainersYajushi Srivastava
 
Terraforming your Infrastructure on GCP
Terraforming your Infrastructure on GCPTerraforming your Infrastructure on GCP
Terraforming your Infrastructure on GCPSamuel Chow
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker IntroductionSparkbit
 
Docker Swarm Introduction
Docker Swarm IntroductionDocker Swarm Introduction
Docker Swarm Introductionrajdeep
 
Containerd + buildkit breakout
Containerd + buildkit breakoutContainerd + buildkit breakout
Containerd + buildkit breakoutDocker, Inc.
 
Using Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into CassandraUsing Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into CassandraJim Hatcher
 
How we got to 1 millisecond latency in 99% under repair, compaction, and flus...
How we got to 1 millisecond latency in 99% under repair, compaction, and flus...How we got to 1 millisecond latency in 99% under repair, compaction, and flus...
How we got to 1 millisecond latency in 99% under repair, compaction, and flus...ScyllaDB
 
Storage as a service and OpenStack Cinder
Storage as a service and OpenStack CinderStorage as a service and OpenStack Cinder
Storage as a service and OpenStack Cinderopenstackindia
 
Virtualization, Containers, Docker and scalable container management services
Virtualization, Containers, Docker and scalable container management servicesVirtualization, Containers, Docker and scalable container management services
Virtualization, Containers, Docker and scalable container management servicesabhishek chawla
 
Docker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and securityDocker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and securityJérôme Petazzoni
 
Parquet performance tuning: the missing guide
Parquet performance tuning: the missing guideParquet performance tuning: the missing guide
Parquet performance tuning: the missing guideRyan Blue
 
Terraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntTerraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntAnton Babenko
 
The Missing Manual for Leveled Compaction Strategy (Wei Deng & Ryan Svihla, D...
The Missing Manual for Leveled Compaction Strategy (Wei Deng & Ryan Svihla, D...The Missing Manual for Leveled Compaction Strategy (Wei Deng & Ryan Svihla, D...
The Missing Manual for Leveled Compaction Strategy (Wei Deng & Ryan Svihla, D...DataStax
 
Advanced rac troubleshooting
Advanced rac troubleshootingAdvanced rac troubleshooting
Advanced rac troubleshootingRiyaj Shamsudeen
 
Building infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps KrakowBuilding infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps KrakowAnton Babenko
 

Was ist angesagt? (20)

Building Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache AirflowBuilding Better Data Pipelines using Apache Airflow
Building Better Data Pipelines using Apache Airflow
 
Apache Zeppelin + Livy: Bringing Multi Tenancy to Interactive Data Analysis
Apache Zeppelin + Livy: Bringing Multi Tenancy to Interactive Data AnalysisApache Zeppelin + Livy: Bringing Multi Tenancy to Interactive Data Analysis
Apache Zeppelin + Livy: Bringing Multi Tenancy to Interactive Data Analysis
 
Docker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and ContainersDocker 101 : Introduction to Docker and Containers
Docker 101 : Introduction to Docker and Containers
 
Terraforming your Infrastructure on GCP
Terraforming your Infrastructure on GCPTerraforming your Infrastructure on GCP
Terraforming your Infrastructure on GCP
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Docker Swarm Introduction
Docker Swarm IntroductionDocker Swarm Introduction
Docker Swarm Introduction
 
Containerd + buildkit breakout
Containerd + buildkit breakoutContainerd + buildkit breakout
Containerd + buildkit breakout
 
Using Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into CassandraUsing Spark to Load Oracle Data into Cassandra
Using Spark to Load Oracle Data into Cassandra
 
How we got to 1 millisecond latency in 99% under repair, compaction, and flus...
How we got to 1 millisecond latency in 99% under repair, compaction, and flus...How we got to 1 millisecond latency in 99% under repair, compaction, and flus...
How we got to 1 millisecond latency in 99% under repair, compaction, and flus...
 
Storage as a service and OpenStack Cinder
Storage as a service and OpenStack CinderStorage as a service and OpenStack Cinder
Storage as a service and OpenStack Cinder
 
Virtualization, Containers, Docker and scalable container management services
Virtualization, Containers, Docker and scalable container management servicesVirtualization, Containers, Docker and scalable container management services
Virtualization, Containers, Docker and scalable container management services
 
Distributed fun with etcd
Distributed fun with etcdDistributed fun with etcd
Distributed fun with etcd
 
Docker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and securityDocker, Linux Containers (LXC), and security
Docker, Linux Containers (LXC), and security
 
Parquet performance tuning: the missing guide
Parquet performance tuning: the missing guideParquet performance tuning: the missing guide
Parquet performance tuning: the missing guide
 
Terraform 0.12 + Terragrunt
Terraform 0.12 + TerragruntTerraform 0.12 + Terragrunt
Terraform 0.12 + Terragrunt
 
AWR & ASH Analysis
AWR & ASH AnalysisAWR & ASH Analysis
AWR & ASH Analysis
 
The Missing Manual for Leveled Compaction Strategy (Wei Deng & Ryan Svihla, D...
The Missing Manual for Leveled Compaction Strategy (Wei Deng & Ryan Svihla, D...The Missing Manual for Leveled Compaction Strategy (Wei Deng & Ryan Svihla, D...
The Missing Manual for Leveled Compaction Strategy (Wei Deng & Ryan Svihla, D...
 
Advanced rac troubleshooting
Advanced rac troubleshootingAdvanced rac troubleshooting
Advanced rac troubleshooting
 
Mongo DB Presentation
Mongo DB PresentationMongo DB Presentation
Mongo DB Presentation
 
Building infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps KrakowBuilding infrastructure as code using Terraform - DevOps Krakow
Building infrastructure as code using Terraform - DevOps Krakow
 

Ähnlich wie Docker la rivoluzione nel deployment

Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerRoberto Messora
 
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 OpenstackPar-Tec S.p.A.
 
Homemade Linux Server
Homemade Linux ServerHomemade Linux Server
Homemade Linux ServerNaLUG
 
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 controAndrea Adami
 
MySQL 5
MySQL 5MySQL 5
MySQL 5jekil
 
Virtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVirtualizzazione&Cloud Computing
Virtualizzazione&Cloud ComputingVMEngine
 
Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011Proxmox Ve - Introduzione - MontelLUG Cs2011
Proxmox Ve - Introduzione - MontelLUG Cs2011Mirco Piccin
 
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 PERSONALEGianluigi Cogo
 
Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Valerio Radice
 
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 ItaliaYashi 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 ZFSMorlini Gabriele
 
Sistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxSistemi di virtualizzazione in ambiente Linux
Sistemi di virtualizzazione in ambiente LinuxTruelite
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggeraRoberto Polli
 
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 AWSGianluca Hotz
 

Ähnlich wie 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/