際際滷

際際滷Share a Scribd company logo
Introduzione pratica a Docker
 da chi lo ha appena conosciuto!
Milano 26.03.2015 @pugmi
di Daniele Megna
@DanieleMegna1 - about.me/danielemegna
Introduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Daniele Megna
I'm a passionate junior web software
developer from MIlan.
@DanieleMegna1 - about.me/danielemegna
Nyx Web Solutions
nyx.solutions
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
28-29 Novembre 2014
Codemotion Milano 2014
@ Politecnico di Milano, Bovisa
Quella
roba che
VIRTUALIZZI
ma in realt
NON
VIRTUALIZZI
E come le
macchine
virtuali, ma
le istruzioni
vanno
dirette sul
processore
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
https://www.youtube.com/watch?v=Ngy9BWH26Y4
Una definizione PRATICA
Carlo Bonamico, intervista al Codemotion
2014 di Milano: cos竪 Docker in due minuti
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
 Un sitema di Container-izzazione che assomiglia
ai tradizionali sistemi di virtualizzazione. [...]
Invece di avere un intero sistema di operativo che
gira dentro un altro sistema operativo, sfrutta una
caratteristica del kernel di Linux [...] che permette
di dividere lo spazio di esecuzione della macchina ,
in contenitori dedicati alle diverse applicazioni
- Carlo Bonamico
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Cosa ne dice Wikipedia?
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Dal sito
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Your words are
futile, your
schemas too.
I dont believe
you, let me
try.
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Installiamolo (su linux ubuntu, debian, etc ..)
$ wget -qO- https://get.docker.com/ | sh
per la versione apt-get maintained
(may not be the latest Docker release)
per lultima versione ufficiale
$ sudo apt-get install docker.io
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Demo 1: simple apache2 container
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Demo 1: cosa abbiamo visto
$ docker pull NOME_IMMAGINE
per scaricare un immagine da Docker Hub
$ docker search NOME_IMMAGINE
per cercare una immagine in Docker Hub
$ docker images
panoramica delle immagini disponibili sulla macchina host
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Demo 1: cosa abbiamo visto
per avviare un nuovo container interattivo, che usa una determinata immagine
ed avviare una tty allinterno del nuovo container
$ docker run -it NOME_IMMAGINE
panoramica dei container attivi e quelli inattivi
$ docker ps
$ docker ps -a
per fare commit (locale) delle modifiche effettuate sul container
e crearne una nuova immagine con un nuovo nome
$ docker commit ID_CONTAINER NOME_IMMAGINE
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Demo 1: cosa abbiamo visto
$ docker run -it -p 80:80 NOME_IMMAGINE
avviare un nuovo container interattivo, che usa una determinata immagine
e fa forwarding della porta 80 sulla macchina host
(ed avviare una tty allinterno del nuovo container)
$ docker rm ID_CONTAINER
$ docker rmi IMMAGINE
fare pulizia dei container e delle immagini non pi湛 utili
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Concetto base:
 Partenza da una immagine del Docker hub (o non)
 Customizzazione di tale immagine
 Commit del container in nuova immagine
 Riutilizzo delle immagini custom
Il sistema di versioning a layer permette di minimizzare il
peso delle immagini e velocizzare i trasferimenti
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Perch竪 non scriptare la cosa?
I Dockerfile ci permettono di definire la ricetta (di fatto i passaggi da eseguire in fase
di build) per creare limmagine di cui abbiamo bisogno a partire da una immagine di
partenza. In questo modo, possiamo includerlo nel repository del nostro progetto.
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Really we can
do that?
...let me try
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Demo 2: docker & wordpress
Credits: Fabrizio Frosali, CEO di Impulso - presentato al primo meetup di Docker Milano
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Demo 2: cosa abbiamo visto
$ docker build -t NAME .
permette di creare una nuova immagine, utilizzando la ricetta fornita dal
Dockerfile presente nella directory corrente;
al termine assegnare il nome NAME allimmagine
# Comment *
INSTRUCTION arguments
i Docker file sono composti da istruzioni che indicano a docker come
comporre limmagine che desideriamo comporre
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
FROM image:tag
indica limmagine di partenza per la ricetta
Demo 2: cosa abbiamo visto
esegue il comando (dentro una shell /bin/sh) allinterno del container
RUN <command>
RUN ["executable", "param1", "param2"]
ADD <src>... <dest>
copia files, directory o scarica url remoti da <scr>
dentro al filesystem del container alla posizione <dest>
lista completa dei comandi e documentazione su
https://docs.docker.com/reference/builder/
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Ragazzo, siamo
al php user
group...
dove diavolo 竪
il PHP?!?!
Ci arriviamo, attraverso un caso reale ....
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
 il NOSTRO caso reale
Ubuntu Server 12.04.5
- PHP 5.4.37
- Zend Engine v2.4.0
- Apache/2.2.22
- MySql 5.5.41
- 65 siti / e-commerce
Wordpress
v 4.0.1
Wordpress
v 4.1.1
Wordpress
v 3.9.4
Wordpress
v 3.5.0
Joomla
v 2.5
Joomla
v 3.5
Joomla
v 3.3
Prestashop
v 1.6.0.6
Prestashop
v 1.4.7.3
Prestashop
v 1.5.6.2
Prestashop
v 1.5.5.0
Prestashop
v 1.5.3.1
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Ubuntu Server 12.04.5
- PHP 5.4.37
- Zend Engine v2.4.0
- Apache/2.2.22
- MySql 5.5.41
- 65 siti / e-commerce
- DOCKER !!
- 65 container (o anche pi湛)
Il piano futuro
- la versione pi湛 adeguata di PHP
- la versione pi湛 adeguata di Apache
- la versione pi湛 adeguata di MySql
- lapplicazione Joomla / Wordpress..
- versionamento con possibilit di
rollback dopo gli aggiornamenti
- maggiore sicurezza in caso di
attacco esterno
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Il caso reale ..... realmente
Quindi tu speri
di poter
installare
questa roba sul
mio server di
produzione...
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
Docker come Vagrant
Ubuntu Server 12.04.5
- PHP 5.4.37
- Zend Engine v2.4.0
- Apache/2.2.22
- MySql 5.5.41
Introduzione pratica a Docker  da chi lo ha appena conosciuto!
26.03.2015
 Lo usate? Lo avete adottato per qualche progetto?
 In fase di sviluppo, test o produzione?
 Pensate sia una valida alternativa a Vagrant?
 Andrete ad approfondirlo dopo stasera? :)
Voi?
Grazie

More Related Content

Introduzione pratica a docker, da chi lo ha appena conosciuto

  • 1. Introduzione pratica a Docker da chi lo ha appena conosciuto! Milano 26.03.2015 @pugmi di Daniele Megna @DanieleMegna1 - about.me/danielemegna
  • 3. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Daniele Megna I'm a passionate junior web software developer from MIlan. @DanieleMegna1 - about.me/danielemegna Nyx Web Solutions nyx.solutions
  • 4. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 28-29 Novembre 2014 Codemotion Milano 2014 @ Politecnico di Milano, Bovisa Quella roba che VIRTUALIZZI ma in realt NON VIRTUALIZZI E come le macchine virtuali, ma le istruzioni vanno dirette sul processore
  • 5. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 https://www.youtube.com/watch?v=Ngy9BWH26Y4 Una definizione PRATICA Carlo Bonamico, intervista al Codemotion 2014 di Milano: cos竪 Docker in due minuti
  • 6. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Un sitema di Container-izzazione che assomiglia ai tradizionali sistemi di virtualizzazione. [...] Invece di avere un intero sistema di operativo che gira dentro un altro sistema operativo, sfrutta una caratteristica del kernel di Linux [...] che permette di dividere lo spazio di esecuzione della macchina , in contenitori dedicati alle diverse applicazioni - Carlo Bonamico
  • 7. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Cosa ne dice Wikipedia?
  • 8. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Dal sito
  • 9. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Your words are futile, your schemas too. I dont believe you, let me try.
  • 10. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Installiamolo (su linux ubuntu, debian, etc ..) $ wget -qO- https://get.docker.com/ | sh per la versione apt-get maintained (may not be the latest Docker release) per lultima versione ufficiale $ sudo apt-get install docker.io
  • 11. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Demo 1: simple apache2 container
  • 12. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Demo 1: cosa abbiamo visto $ docker pull NOME_IMMAGINE per scaricare un immagine da Docker Hub $ docker search NOME_IMMAGINE per cercare una immagine in Docker Hub $ docker images panoramica delle immagini disponibili sulla macchina host
  • 13. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Demo 1: cosa abbiamo visto per avviare un nuovo container interattivo, che usa una determinata immagine ed avviare una tty allinterno del nuovo container $ docker run -it NOME_IMMAGINE panoramica dei container attivi e quelli inattivi $ docker ps $ docker ps -a per fare commit (locale) delle modifiche effettuate sul container e crearne una nuova immagine con un nuovo nome $ docker commit ID_CONTAINER NOME_IMMAGINE
  • 14. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Demo 1: cosa abbiamo visto $ docker run -it -p 80:80 NOME_IMMAGINE avviare un nuovo container interattivo, che usa una determinata immagine e fa forwarding della porta 80 sulla macchina host (ed avviare una tty allinterno del nuovo container) $ docker rm ID_CONTAINER $ docker rmi IMMAGINE fare pulizia dei container e delle immagini non pi湛 utili
  • 15. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Concetto base: Partenza da una immagine del Docker hub (o non) Customizzazione di tale immagine Commit del container in nuova immagine Riutilizzo delle immagini custom Il sistema di versioning a layer permette di minimizzare il peso delle immagini e velocizzare i trasferimenti
  • 16. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Perch竪 non scriptare la cosa? I Dockerfile ci permettono di definire la ricetta (di fatto i passaggi da eseguire in fase di build) per creare limmagine di cui abbiamo bisogno a partire da una immagine di partenza. In questo modo, possiamo includerlo nel repository del nostro progetto.
  • 17. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Really we can do that? ...let me try
  • 18. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Demo 2: docker & wordpress Credits: Fabrizio Frosali, CEO di Impulso - presentato al primo meetup di Docker Milano
  • 19. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Demo 2: cosa abbiamo visto $ docker build -t NAME . permette di creare una nuova immagine, utilizzando la ricetta fornita dal Dockerfile presente nella directory corrente; al termine assegnare il nome NAME allimmagine # Comment * INSTRUCTION arguments i Docker file sono composti da istruzioni che indicano a docker come comporre limmagine che desideriamo comporre
  • 20. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 FROM image:tag indica limmagine di partenza per la ricetta Demo 2: cosa abbiamo visto esegue il comando (dentro una shell /bin/sh) allinterno del container RUN <command> RUN ["executable", "param1", "param2"] ADD <src>... <dest> copia files, directory o scarica url remoti da <scr> dentro al filesystem del container alla posizione <dest> lista completa dei comandi e documentazione su https://docs.docker.com/reference/builder/
  • 21. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Ragazzo, siamo al php user group... dove diavolo 竪 il PHP?!?! Ci arriviamo, attraverso un caso reale ....
  • 22. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 il NOSTRO caso reale Ubuntu Server 12.04.5 - PHP 5.4.37 - Zend Engine v2.4.0 - Apache/2.2.22 - MySql 5.5.41 - 65 siti / e-commerce Wordpress v 4.0.1 Wordpress v 4.1.1 Wordpress v 3.9.4 Wordpress v 3.5.0 Joomla v 2.5 Joomla v 3.5 Joomla v 3.3 Prestashop v 1.6.0.6 Prestashop v 1.4.7.3 Prestashop v 1.5.6.2 Prestashop v 1.5.5.0 Prestashop v 1.5.3.1
  • 23. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Ubuntu Server 12.04.5 - PHP 5.4.37 - Zend Engine v2.4.0 - Apache/2.2.22 - MySql 5.5.41 - 65 siti / e-commerce - DOCKER !! - 65 container (o anche pi湛) Il piano futuro - la versione pi湛 adeguata di PHP - la versione pi湛 adeguata di Apache - la versione pi湛 adeguata di MySql - lapplicazione Joomla / Wordpress.. - versionamento con possibilit di rollback dopo gli aggiornamenti - maggiore sicurezza in caso di attacco esterno
  • 24. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Il caso reale ..... realmente Quindi tu speri di poter installare questa roba sul mio server di produzione...
  • 25. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Docker come Vagrant Ubuntu Server 12.04.5 - PHP 5.4.37 - Zend Engine v2.4.0 - Apache/2.2.22 - MySql 5.5.41
  • 26. Introduzione pratica a Docker da chi lo ha appena conosciuto! 26.03.2015 Lo usate? Lo avete adottato per qualche progetto? In fase di sviluppo, test o produzione? Pensate sia una valida alternativa a Vagrant? Andrete ad approfondirlo dopo stasera? :) Voi? Grazie