SlideShare a Scribd company logo
1 of 24
Introduzione a Docker 30 nov
2017
Sponsored by
Roberto Messora
“
”
Chi sono
@robymes
robymes@gmail.com
roberto.messora@valuelab.it
robymes
Roberto Messora
L’esigenza
• Minimizzare fino ad eliminare il problema del deployment
in diversi ambienti di esecuzione
• Ottimizzare al massimo l'uso delle risorse hw (startup time
e densità di allocazione)
1/19
Capitolo 1
2/19
3/19
La tecnologia
“A container image is a lightweight, stand-alone, executable
package of a piece of software that includes everything
needed to run it: code, runtime, system tools, system
libraries, settings. Available for both Linux and Windows
based apps, containerized software will always run the
same, regardless of the environment. Containers isolate
software from its surroundings, for example differences
between development and staging environments and help
reduce conflicts between teams running different software
on the same infrastructure.”
4/19
Capitolo 2
Un po’ di storia
5/19
• Sviluppato inizialmente come progetto interno in dotCloud,
una società che si occupava di servizi PaaS
• Pubblicato su github come progetto open source nel
Marzo 2013
• Nel Marzo 2014 viene rilasciata la sua principale libreria,
libcontainer, sviluppata in Go
• Fra i maggiori contributori del progetto ci sono: il team di
Docker, Cisco, Google, Huawei, IBM, Microsoft, Red Hat
Dockersu Linux
6/19
• Docker è un progetto open-source che automatizza il
deployment di applicazioni all'interno di container software,
fornendo un'astrazione addizionale grazie alla
virtualizzazione a livello di sistema operativo di Linux
• Utilizza le funzionalità di isolamento delle risorse del kernel
Linux per consentire a container indipendenti di coesistere
sulla stessa istanza di Linux, evitando l'installazione e la
manutenzione di una macchina virtuale
• Le risorse possono essere isolate, i servizi limitati ed i
processi avviati in modo da avere una prospettiva
completamente privata del sistema operativo, col loro
proprio identificativo, file system ed interfaccia di rete
Dockersu Linux
7/19
• Namespace del kernel: isolano ciò che l'applicazione
può vedere dell'ambiente operativo (l'albero dei processi,
la rete, gli ID utente ed i file system montati)
• Cgroups del kernel: isolamento delle risorse (CPU,
memoria, I/O a blocchi, rete)
• Libreria libcontainer: uso delle funzionalità di
virtualizzazione del kernel
8/19
9/19
Dockersu Windows
10/19
• Con Windows Server 2016 Docker è disponibile
nativamente anche su Windows
• I principi di base sono gli stessi di Linux: accesso limitato
e controllato alle risorse del kernel
• Un container Linux NON può essere ospitato su un host
Windows e viceversa: i kernel sono differenti, le API
utilizzate dal container sono specifiche per i due sistemi
operativi (API Windows e API Linux)
• Un client Docker è in grado di supportare entrambe le API:
un solo prodotto per enrambi i sistemi operativi
Dockersu Windows
11/19
• I container Windows sono di due tipi
• Windows Container: i container condividono il kernel
con il sistema operativo host (Windows Server 2016),
altamente efficienti, ma adatti per ambienti trusted
• Hyper-V Container: ad ogni container è assegnato un
kernel virtualizzato e le relative risorse (CPU, memoria,
…), meno efficienti, ma isolamento totale
L’ecosistema
L’ecosistema Docker è composto da una serie di elementi
• Docker Engine
• Docker Machine
• Docker Compose
• Docker Swarm
• Docker Registry
12/19
Capitolo 3
13/19
Docker Engine
Docker Machine
Sviluppare con Docker 14/19
Capitolo 4
• Dockerfile
• Docker registry
• Docker-compose file
• Ottimizzare build-time e run-time
Demo
Dal Dockerfile al Docker Registry
Deploy con Docker 15/19
Capitolo 5
• One engine to rule them all
• CI/CD Docker pattern
• Production ready: Houston we need a cluster
16/19
Dockerin production:Swarm
17/19
ClustersDocker-ready
18/19
• Docker Swarm
• Apache Mesos
• Mesosphere DC/OS
• Kubernetes
• Service Fabric
Demo
Real world Docker Swarm
19/19
Grazie
Roberto Messora

More Related Content

What's hot

Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad
Docker, Inc.
 
Docker Tutorial For Beginners | What Is Docker And How It Works? | Docker Tut...
Docker Tutorial For Beginners | What Is Docker And How It Works? | Docker Tut...Docker Tutorial For Beginners | What Is Docker And How It Works? | Docker Tut...
Docker Tutorial For Beginners | What Is Docker And How It Works? | Docker Tut...
Simplilearn
 

What's hot (20)

Introduction to Docker storage, volume and image
Introduction to Docker storage, volume and imageIntroduction to Docker storage, volume and image
Introduction to Docker storage, volume and image
 
Docker Basics
Docker BasicsDocker Basics
Docker Basics
 
Docker, LinuX Container
Docker, LinuX ContainerDocker, LinuX Container
Docker, LinuX Container
 
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
 
Docker on Docker
Docker on DockerDocker on Docker
Docker on Docker
 
Docker Introduction
Docker IntroductionDocker Introduction
Docker Introduction
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Containerization and Docker
Containerization and DockerContainerization and Docker
Containerization and Docker
 
Introduction to docker
Introduction to dockerIntroduction to docker
Introduction to docker
 
Introduction to Containers and Docker
Introduction to Containers and DockerIntroduction to Containers and Docker
Introduction to Containers and Docker
 
Containerized Applications Overview
Containerized Applications OverviewContainerized Applications Overview
Containerized Applications Overview
 
Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad Docker Compose by Aanand Prasad
Docker Compose by Aanand Prasad
 
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
Docker Explained | What Is A Docker Container? | Docker Simplified | Docker T...
 
Docker Tutorial For Beginners | What Is Docker And How It Works? | Docker Tut...
Docker Tutorial For Beginners | What Is Docker And How It Works? | Docker Tut...Docker Tutorial For Beginners | What Is Docker And How It Works? | Docker Tut...
Docker Tutorial For Beginners | What Is Docker And How It Works? | Docker Tut...
 
Docker Swarm 0.2.0
Docker Swarm 0.2.0Docker Swarm 0.2.0
Docker Swarm 0.2.0
 
Docker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker SlidesDocker Birthday #3 - Intro to Docker Slides
Docker Birthday #3 - Intro to Docker Slides
 
Docker introduction
Docker introductionDocker introduction
Docker introduction
 
Introduction to Docker
Introduction to DockerIntroduction to Docker
Introduction to Docker
 
Docker Container Introduction
Docker Container IntroductionDocker Container Introduction
Docker Container Introduction
 
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
Podman, Buildah, and Quarkus - The Latest in Linux Containers Technologies
 

Similar to Introduzione a Docker

LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
Maurizio Antonelli
 

Similar to Introduzione a Docker (20)

Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Elio Tondo - Linux In Azienda
Elio Tondo - Linux In AziendaElio Tondo - Linux In Azienda
Elio Tondo - Linux In Azienda
 
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of ThingsCodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
CodingGym - Lezione 1 - Corso Linux, Android e Internet of Things
 
Docker la rivoluzione nel deployment
Docker la rivoluzione nel deploymentDocker la rivoluzione nel deployment
Docker la rivoluzione nel deployment
 
debian gnu linux
debian gnu linuxdebian gnu linux
debian gnu linux
 
Software libero at ENEA
Software libero at ENEASoftware libero at ENEA
Software libero at ENEA
 
prova
provaprova
prova
 
Da DotNet a DotNetCore
Da DotNet a DotNetCoreDa DotNet a DotNetCore
Da DotNet a DotNetCore
 
Fabio Riccio - Un'esperienza di free-software nelle scuole
Fabio Riccio - Un'esperienza di free-software nelle scuoleFabio Riccio - Un'esperienza di free-software nelle scuole
Fabio Riccio - Un'esperienza di free-software nelle scuole
 
Corso linux base
Corso linux baseCorso linux base
Corso linux base
 
Amministrazione base dei sistemi Linux
Amministrazione base dei sistemi LinuxAmministrazione base dei sistemi Linux
Amministrazione base dei sistemi Linux
 
Docker - virtualizzazione leggera
Docker - virtualizzazione leggeraDocker - virtualizzazione leggera
Docker - virtualizzazione leggera
 
Alfresco meetup Roma - docker
Alfresco meetup Roma - dockerAlfresco meetup Roma - docker
Alfresco meetup Roma - docker
 
Introduzione CMS Alfresco
Introduzione CMS AlfrescoIntroduzione CMS Alfresco
Introduzione CMS Alfresco
 
Microservizi & DevOps
Microservizi & DevOpsMicroservizi & DevOps
Microservizi & DevOps
 
Open Source Parallel Computing ltcsp
Open Source Parallel Computing ltcspOpen Source Parallel Computing ltcsp
Open Source Parallel Computing ltcsp
 
Introduzione a .Net Core
Introduzione a .Net CoreIntroduzione a .Net Core
Introduzione a .Net Core
 
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
LinuxDay 2005 - Linux e FS - Storia e caratteristiche vincenti - versione rid...
 
DevOps in a Microservices World
DevOps in a Microservices WorldDevOps in a Microservices World
DevOps in a Microservices World
 

More from Roberto Messora

Self-adaptive geospatial web applications
Self-adaptive geospatial web applicationsSelf-adaptive geospatial web applications
Self-adaptive geospatial web applications
Roberto Messora
 
Web technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mappingWeb technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mapping
Roberto Messora
 

More from Roberto Messora (17)

Azure Synapse: data lake & modern data warehouse dalla A alla Z
Azure Synapse: data lake &  modern data warehouse dalla A alla ZAzure Synapse: data lake &  modern data warehouse dalla A alla Z
Azure Synapse: data lake & modern data warehouse dalla A alla Z
 
Azure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integrationAzure Data Factory: l'evoluzione della specie della data integration
Azure Data Factory: l'evoluzione della specie della data integration
 
Seminario Big Data
Seminario Big DataSeminario Big Data
Seminario Big Data
 
Real world Visual Studio Code
Real world Visual Studio CodeReal world Visual Studio Code
Real world Visual Studio Code
 
Da JavaScript a TypeScript
Da JavaScript a TypeScriptDa JavaScript a TypeScript
Da JavaScript a TypeScript
 
Docker as a hosting target
Docker as a hosting targetDocker as a hosting target
Docker as a hosting target
 
Da imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JSDa imperativo a reattivo: Bacon.JS
Da imperativo a reattivo: Bacon.JS
 
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extensionEvent streaming pipeline with Windows Azure and ArcGIS Geoevent extension
Event streaming pipeline with Windows Azure and ArcGIS Geoevent extension
 
Code quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScriptCode quality e test automatizzati con JavaScript
Code quality e test automatizzati con JavaScript
 
Single Page Applications
Single Page ApplicationsSingle Page Applications
Single Page Applications
 
Javascript Unit Testing
Javascript Unit TestingJavascript Unit Testing
Javascript Unit Testing
 
Single Page web Application
Single Page web ApplicationSingle Page web Application
Single Page web Application
 
Javascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il webJavascript avanzato: sfruttare al massimo il web
Javascript avanzato: sfruttare al massimo il web
 
Self-adaptive geospatial web applications
Self-adaptive geospatial web applicationsSelf-adaptive geospatial web applications
Self-adaptive geospatial web applications
 
Web technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mappingWeb technologies and patterns in HTML5 mapping
Web technologies and patterns in HTML5 mapping
 
Usare Knockout JS
Usare Knockout JSUsare Knockout JS
Usare Knockout JS
 
MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!MV* presentation frameworks in Javascript: en garde, pret, allez!
MV* presentation frameworks in Javascript: en garde, pret, allez!
 

Introduzione a Docker

  • 1. Introduzione a Docker 30 nov 2017 Sponsored by Roberto Messora
  • 3. L’esigenza • Minimizzare fino ad eliminare il problema del deployment in diversi ambienti di esecuzione • Ottimizzare al massimo l'uso delle risorse hw (startup time e densità di allocazione) 1/19 Capitolo 1
  • 6. La tecnologia “A container image is a lightweight, stand-alone, executable package of a piece of software that includes everything needed to run it: code, runtime, system tools, system libraries, settings. Available for both Linux and Windows based apps, containerized software will always run the same, regardless of the environment. Containers isolate software from its surroundings, for example differences between development and staging environments and help reduce conflicts between teams running different software on the same infrastructure.” 4/19 Capitolo 2
  • 7. Un po’ di storia 5/19 • Sviluppato inizialmente come progetto interno in dotCloud, una società che si occupava di servizi PaaS • Pubblicato su github come progetto open source nel Marzo 2013 • Nel Marzo 2014 viene rilasciata la sua principale libreria, libcontainer, sviluppata in Go • Fra i maggiori contributori del progetto ci sono: il team di Docker, Cisco, Google, Huawei, IBM, Microsoft, Red Hat
  • 8. Dockersu Linux 6/19 • Docker è un progetto open-source che automatizza il deployment di applicazioni all'interno di container software, fornendo un'astrazione addizionale grazie alla virtualizzazione a livello di sistema operativo di Linux • Utilizza le funzionalità di isolamento delle risorse del kernel Linux per consentire a container indipendenti di coesistere sulla stessa istanza di Linux, evitando l'installazione e la manutenzione di una macchina virtuale • Le risorse possono essere isolate, i servizi limitati ed i processi avviati in modo da avere una prospettiva completamente privata del sistema operativo, col loro proprio identificativo, file system ed interfaccia di rete
  • 9. Dockersu Linux 7/19 • Namespace del kernel: isolano ciò che l'applicazione può vedere dell'ambiente operativo (l'albero dei processi, la rete, gli ID utente ed i file system montati) • Cgroups del kernel: isolamento delle risorse (CPU, memoria, I/O a blocchi, rete) • Libreria libcontainer: uso delle funzionalità di virtualizzazione del kernel
  • 10. 8/19
  • 11. 9/19
  • 12. Dockersu Windows 10/19 • Con Windows Server 2016 Docker è disponibile nativamente anche su Windows • I principi di base sono gli stessi di Linux: accesso limitato e controllato alle risorse del kernel • Un container Linux NON può essere ospitato su un host Windows e viceversa: i kernel sono differenti, le API utilizzate dal container sono specifiche per i due sistemi operativi (API Windows e API Linux) • Un client Docker è in grado di supportare entrambe le API: un solo prodotto per enrambi i sistemi operativi
  • 13. Dockersu Windows 11/19 • I container Windows sono di due tipi • Windows Container: i container condividono il kernel con il sistema operativo host (Windows Server 2016), altamente efficienti, ma adatti per ambienti trusted • Hyper-V Container: ad ogni container è assegnato un kernel virtualizzato e le relative risorse (CPU, memoria, …), meno efficienti, ma isolamento totale
  • 14. L’ecosistema L’ecosistema Docker è composto da una serie di elementi • Docker Engine • Docker Machine • Docker Compose • Docker Swarm • Docker Registry 12/19 Capitolo 3
  • 16. Sviluppare con Docker 14/19 Capitolo 4 • Dockerfile • Docker registry • Docker-compose file • Ottimizzare build-time e run-time
  • 17. Demo Dal Dockerfile al Docker Registry
  • 18. Deploy con Docker 15/19 Capitolo 5 • One engine to rule them all • CI/CD Docker pattern • Production ready: Houston we need a cluster
  • 19. 16/19
  • 21. ClustersDocker-ready 18/19 • Docker Swarm • Apache Mesos • Mesosphere DC/OS • Kubernetes • Service Fabric
  • 23. 19/19