Date post: | 21-Jan-2018 |
Category: |
Technology |
Upload: | roberto-messora |
View: | 144 times |
Download: | 1 times |
Introduzione a Docker 30 nov2017
Sponsored by
Roberto Messora
L’esigenza
• Minimizzare fino ad eliminare il problema del deploymentin 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
Docker su 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
Docker su 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
Docker su 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
Docker su 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/19Docker Engine
Docker Machine
Sviluppare con Docker14/19
Capitolo 4
• Dockerfile
• Docker registry
• Docker-compose file
• Ottimizzare build-time e run-time
DemoDal Dockerfile al Docker Registry
Deploy con Docker15/19
Capitolo 5
• One engine to rule them all
• CI/CD Docker pattern
• Production ready: Houston we need a cluster
16/19
Docker in production: Swarm
17/19
Clusters Docker-ready
18/19• Docker Swarm
• Apache Mesos
• Mesosphere DC/OS
• Kubernetes
• Service Fabric
DemoReal world Docker Swarm
19/19
Grazie
Roberto Messora