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

Introduzione a Docker

  • 1.
    Introduzione a Docker30 nov 2017 Sponsored by Roberto Messora
  • 2.
  • 3.
    L’esigenza • Minimizzare finoad 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
  • 4.
  • 5.
  • 6.
    La tecnologia “A containerimage 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’ distoria 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 • Namespacedel 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.
  • 11.
  • 12.
    Dockersu Windows 10/19 • ConWindows 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 • Icontainer 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
  • 15.
  • 16.
    Sviluppare con Docker14/19 Capitolo 4 • Dockerfile • Docker registry • Docker-compose file • Ottimizzare build-time e run-time
  • 17.
    Demo Dal Dockerfile alDocker Registry
  • 18.
    Deploy con Docker15/19 Capitolo 5 • One engine to rule them all • CI/CD Docker pattern • Production ready: Houston we need a cluster
  • 19.
  • 20.
  • 21.
    ClustersDocker-ready 18/19 • Docker Swarm •Apache Mesos • Mesosphere DC/OS • Kubernetes • Service Fabric
  • 22.
  • 23.
  • 24.