24
Introduzione a Docker 30 nov 2017 Sponsored by Roberto Messora

Introduzione a Docker

Embed Size (px)

Citation preview

Page 1: Introduzione a Docker

Introduzione a Docker 30 nov2017

Sponsored by

Roberto Messora

Page 2: Introduzione a Docker

Chi sono@robymes

[email protected]

[email protected]

robymes

Roberto Messora

Page 3: Introduzione a Docker

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

Page 4: Introduzione a Docker

2/19

Page 5: Introduzione a Docker

3/19

Page 6: Introduzione a Docker

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

Page 7: Introduzione a Docker

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

Page 8: Introduzione a Docker

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

Page 9: Introduzione a Docker

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

Page 10: Introduzione a Docker

8/19

Page 11: Introduzione a Docker

9/19

Page 12: Introduzione a Docker

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

Page 13: Introduzione a Docker

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

Page 14: Introduzione a Docker

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

Page 15: Introduzione a Docker

13/19Docker Engine

Docker Machine

Page 16: Introduzione a Docker

Sviluppare con Docker14/19

Capitolo 4

• Dockerfile

• Docker registry

• Docker-compose file

• Ottimizzare build-time e run-time

Page 17: Introduzione a Docker

DemoDal Dockerfile al Docker Registry

Page 18: Introduzione a Docker

Deploy con Docker15/19

Capitolo 5

• One engine to rule them all

• CI/CD Docker pattern

• Production ready: Houston we need a cluster

Page 19: Introduzione a Docker

16/19

Page 20: Introduzione a Docker

Docker in production: Swarm

17/19

Page 21: Introduzione a Docker

Clusters Docker-ready

18/19• Docker Swarm

• Apache Mesos

• Mesosphere DC/OS

• Kubernetes

• Service Fabric

Page 22: Introduzione a Docker

DemoReal world Docker Swarm

Page 23: Introduzione a Docker

19/19

Page 24: Introduzione a Docker

Grazie

Roberto Messora