docker
WhoAmI
Giuliano Latini:
• Classe 1969
• Si interessa di I.T. dal 1986
• Lavora presso l’Università
Politecnica delle Marche dal
1991
• Inizia ad usare i computer
perché s’illudeva di aver trovato
qualcuno
che lavorerà al suo posto.
Internet Avatar
latini.giuliano@gmail.com
Twitter: @giulianolatini
Linkedin: https://www.linkedin.com/pub/giuliano-latini/a/aa6/274
Pagina Feedback: https://it.surveymonkey.com/s/Y8YW537
Pagina Feedback
Docker
Ottimizziamo i nostri ambienti
virtuali usando la filosofia di
Henry Ford e i mattoncini Lego
la modularità
Vince Sempre
Giuanin
go to
Dopo gli anni passati a
macinare scarpe tra lezioni e
cacce ai prof. per gli esami,
Giuanin ha finalmente la sua
occasione, viene chiamato da
Google per un colloquio alla
sede centrale.
Progetto interno a Google.
Datacenter progettato dalle prime classi (elementari) della
scuola aziendale. I componenti base sono: 3 scatole di
mattoncini lego; 32 Raspberry Pi B; 2 switch 24 porte, cavi.
L’infrastruttura è un private cloud per sostenere i 48 blog
Wordpress degli alunni che l’hanno costruita.
Giuanin
dopo il quesito
proposto
Giuanin
ha un’idea meravigliosa,
meglio di Cesare
Ragazzi.
Usare DOCKER
SI PUO FARE!!!
Chi è Giuanin
www.dotcloud.com
Cos’è Docker???
• Un collante di Tecnologie e Componenti Infrastrutturali
• Un strumento con cui Devs & Ops raggiungono i propri scopi senza
litigare
• Un modo intelligente di risolvere le sfide del continuous
integration
Il mondo docker
Il mondo docker
Mettiamo ordine nel caos
Matrice d’usabilità
Matrice d’usabilità
Schemi Architetturali
Timeline da LXC a Docker
VM versus Docker
Grafici comparativi per operazioni atomiche su:
sistema installato (Native) - Docker - VM (KVM)
Architettura Storage
VM versus Docker
Grafici comparativi per sistemi DBMS su:
sistema installato (Native) - Docker - VM (KVM)
Workflow Sviluppo/Produzione
Workflow Sviluppo/Produzione
Workflow Verbi Docker
boot2docker
docker su Windows&OSX
boot2docker.io
Architettura boot2docker
Schema di comunicazione tra Internet (l’esterno) e i
container che sono running nell’infrastruttura boot2docker
Container über alles
Container: usiamo docker come i mattoncini Lego, per
costruire un’infrastruttura slim e modulare.
Container über alles
Container: usiamo docker come i mattoncini Lego, per
costruire un’infrastruttura slim e modulare.
docker build dockerfile
docker run -i
apriamo una sessione shell per
interagire con un’istanza docker
Go Language
golang.org
Go Language
golang.org
Conclusioni
Bibliografia
• Introduction on Docker - Solomon Hykes
• An Updated Performance Comparison of
Virtual Machines and Linux Containers - Wes
Felter, Alexandre Ferreira, Ram Rajamony,
Juan Rubio
• Sito - www.docker.com
• Sito - www.dotcloud.com
• Docker ansible-make-chef-puppet-unnecessary-
minnihan
WhoAmI
Giuliano Latini:
• Classe 1969
• Si interessa di I.T. dal 1986
• Lavora presso l’Università
Politecnica delle Marche dal
1991
• Inizia ad usare i computer
perché s’illudeva di aver trovato
qualcuno
che lavorerà al suo posto.
Internet Avatar
latini.giuliano@gmail.com
Twitter: @giulianolatini
Linkedin: https://www.linkedin.com/pub/giuliano-latini/a/aa6/274
Pagina Feedback: https://it.surveymonkey.com/s/Y8YW537
Pagina Feedback

Automation Night (Docker)

Editor's Notes

  • #4 Perché Mobile SUIT Gundam e “la modularità Vince Sempre”: autolesionismo, Gundam lo vedevo alle medie e mi ricorda quanto so’ “veccio”; perché la serie Gundam introduce, sia nel design dei “robottoni” buoni, che nella storia la contrapposizione tra due filosofie, l’all-in-one (arma dal Principato di Zeon) e il Gundam, prototipo robot da combattimento modulare e multifunzione (la cabina del pilota è un caccia, che si trasforma nel tronco del robot, giunzione tra gambe e spalle/testa) che consentirà alla Federazione Terreste di ribaltare le sorti della guerra. Docker ha caratteristiche simili. In buona sostanza sposta il paradigma della virtualizzazione dalla VM (S.O., Framework, Applicazione) alla composizione di tecnologie viste come moduli collegabili fruttando i concetti di resource isolation di LXC (LinuX Container).
  • #5 Giuanin è il classico prodotto del sistema universitario italiano: capace, intelligente, testardo, un candidato ideale al gruppo dei “cervelli in fuga”. Dopo aver escluso di rimanere parcheggiato in facoltà con un dottorato da fame, la grande occasione, viene selezionato per un colloquio in Google. Gasato e sognando un futuro lavorativo radioso e finanziariamente esaltante investe i risparmi di 3 anni passati a raccogliere uva, servire pizze, correggere bozze e passare tesine agli studenti danarosi in un biglietto aereo solo andata per Mountain View, CA, Stati Uniti d’America (spera che il viaggio gli basti per smaltire lo shock di un’azienda che ti offre vitto&alloggio, tanto per non far la figura del solito italiano provincialotto).
  • #6 Arrivato, dopo essersi rinfrescato nella stanza messagli a disposizione della foresteria aziendale, un gentile impiegato gli mostra la struttura, mentre aspetta il giorno successivo quando dovrà affrontare il test d’ingresso per il lavorare in Google. Costruire un PrivateCloud per realizzare 48 blog in Wordpress, uno per ogni alunno che ha concorso alla realizzazione del progetto.
  • #7 Giuanin si sente perso, non sa cosa fare. Come riesce a far funzionare 48 wordpress con 32 schede montate con i mattoncini della Lego??? L’occasione della vita è finita prima di cominciare. Oppure no. Con l’intuito dei momenti di disperazione assoluta, ricorda i discorsi fatti con un suo amico smanettone, mai laureato e ora sepolto nel sottoscala di un datacenter della CariVerona a badare ai server bancari. LXC, LinuX Container, forse è questa la risposta. Rimasto solo difronte al datacenter delle elementari di Google apre il portatile, si collega ad internet ed apre www.docker.io…
  • #8 Giuanin, alla fine della giornata di ricerche e studi su www.docker.io, dopo litri di caffè, ciambelline glassate al cioccolato che avrebbero arricchito generazioni di dentisti e abbastanza coca-cola per ruttare fino a fine 2015 può urlare: SI PUO FARE!!! Ora sa che al termine della settimana a disposizione potrà firmare il contratto e iniziare la vita che voleva dalla cima del mondo.
  • #9 Ma riveliamo chi è il nostro protagonista, che spero non se ne abbia a male se ne ho sfruttato l’immagine, è il CTO della dotCloud, un’azienda che fornisce, appunto servizi PaaS scalabili per applicazioni web sfruttando come infrastruttura di base Docker.
  • #22 boot2docker è la soluzione per i sistemi Windows&OSX. Docker, nativamente, richiede un’architettura LXC per funzionare, Windows e OSX non consentono questo tipo di archiettura, percui il pacchetto prevede l’installazione di una VM minimale che contenga un ubuntu con installato docker.io e le sue dipendenze, unito a questo boot2docker ha la predisposizione per usare la docker-cli direttamente dalla shell del sistema host. boot2docker installa nativamente Virtualbox come hypervisor. Nei sistemi Windows con il ruolo Hyper-V attivo il Virtualbox installato non funziona, la soluzione più funzionale è convertire la VM fornita in un VHD o installare un ubuntu server minimale (l’Hyper-V supporta nativamente ubuntu) aggiungendo il pacchetto docker.io
  • #24 Uno dei vantaggi di docker è l’estrema facilità con cui derivare da un servizio una sua variante. Esempio: partendo da un’immagine ubuntu deriviamo tre servizi: node.js, nginx e mongodb. Dall’immagine node.js possiamo generare due immagini con l’applicazione custom per due clienti. Questo si ottiene stratificando elementi singoli, costruendo così la struttura necessaria. Rispetto l’architettura basata su VM il confronto mostra in modo evidente il risparmio di risorse.
  • #25 Uno dei vantaggi di docker è l’estrema facilità con cui derivare da un servizio una sua variante. Esempio: partendo da un’immagine ubuntu deriviamo tre servizi: node.js, nginx e mongodb. Dall’immagine node.js possiamo generare due immagini con l’applicazione custom per due clienti. Questo si ottiene stratificando elementi singoli, costruendo così la struttura necessaria. Rispetto l’architettura basata su VM il confronto mostra in modo evidente il risparmio di risorse.
  • #26 FROM: image da cui parte la build MAINTAINER: riferimenti del builder/maintainer RUN: esegue il comando e fà la commit dell’immagine memorizzando le modifiche prodotte nell’immagine prodotta dalla build EXPOSE: la porta indicata viene “esposta” dal sistema, sarà utilizzata per il dialogo via rete con l’esterno ADD <src> <dst> : copia il contenuto di <src> (dir dell’host, URL, archivio .tar) nel container in <dst>. WORKDIR: imposto la working-directory per i successivi RUN,CMD, ENTRYPOINT. ENTRYPOINT: comando che viene eseguito di default allo start del container. VOLUME: predispongo un punto di mount a cui collegare un volume esterno al run del container CMD: indico il comando da eseguire allo statup del container.
  • #27 docker run: -d : modalità detach o daemon, la comunicazione con il il container avviene via rete -i : modalità interattiva -t : alloco una pseudo-tty, necessario per gestire l’I/O in modalità interattiva -rm : al termine della sessione il contenuto del filesystem dell’istanza non è conservato (immagine non persistente) -p : associazione porta host:container, la porta del container viene pubblicata dall’host -v : VolumeShare eseguo il mount di una cartella presente nel filesystem dell’host come volume del container (sintassi estesa -v [“host path”]:[”container path”]:[ro|rw])