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?
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