Introduzione pratica a docker, da chi lo ha appena conosciuto

26
Introduzione pratica a Docker … da chi lo ha appena conosciuto! Milano 26.03.2015 @pugmi di Daniele Megna @DanieleMegna1 - about.me/danielemegna

Transcript of Introduzione pratica a docker, da chi lo ha appena conosciuto

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!

26.03.2015

Daniele Megna

I'm a passionate junior web software developer from MIlan.

@DanieleMegna1 - about.me/danielemegna

Nyx Web Solutionsnyx.solutions

Introduzione pratica a Docker … da chi lo ha appena conosciuto!

26.03.2015

28-29 Novembre 2014Codemotion Milano 2014@ Politecnico di Milano, Bovisa

Quellaroba che

VIRTUALIZZIma 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 don’t 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 l’ultima 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 immagineed avviare una tty all’interno 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 containere 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 immaginee fa forwarding della porta 80 sulla macchina host

(ed avviare una tty all’interno 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 l’immagine 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 & wordpressCredits: 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 all’immagine

# Comment ***********

INSTRUCTION arguments

i Docker file sono composti da istruzioni che indicano a docker come comporre l’immagine che desideriamo comporre

Introduzione pratica a Docker … da chi lo ha appena conosciuto!

26.03.2015

FROM image:tag

indica l’immagine di partenza per la ricetta

Demo 2: cosa abbiamo visto

esegue il comando (dentro una shell /bin/sh) all’interno 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 suhttps://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

Wordpressv 4.0.1

Wordpressv 4.1.1

Wordpress

v 3.9.4Wordpressv 3.5.0

Joomlav 2.5

Joomlav 3.5

Joomlav 3.3

Prestashopv 1.6.0.6

Prestashopv 1.4.7.3

Prestashopv 1.5.6.2

Prestashopv 1.5.5.0

Prestashopv 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- l’applicazione 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