SlideShare una empresa de Scribd logo
1 de 26
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 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 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 immagine
ed 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 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 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 & 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 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 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
- 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

Más contenido relacionado

La actualidad más candente

Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerRoberto Messora
 
Introduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.itIntroduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.itFabio Ros
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017MongoDB
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloudGabriele Baldoni
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioPar-Tec S.p.A.
 
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Gerardo Di Iorio
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Natale Vinto
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationTiziano Serritella
 
Alfresco meetup Roma - docker
Alfresco meetup Roma - dockerAlfresco meetup Roma - docker
Alfresco meetup Roma - dockerDavid Ciamberlano
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Romualdo Gobbo
 
La mia prima lezione di pozioni
La mia prima lezione di pozioniLa mia prima lezione di pozioni
La mia prima lezione di pozioniGianluca Padovani
 
Maven from dummies
Maven from dummiesMaven from dummies
Maven from dummiesfirenze-gtug
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker dotnetcode
 
Infrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACSInfrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACSNucleode Srl
 

La actualidad más candente (20)

Architetture a Microservizi con Docker Container
Architetture a Microservizi con Docker ContainerArchitetture a Microservizi con Docker Container
Architetture a Microservizi con Docker Container
 
Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Introduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.itIntroduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.it
 
Docker
Docker Docker
Docker
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017Microservices webinar EMEA Aug. 2017
Microservices webinar EMEA Aug. 2017
 
High specialized vm on open stack cloud
High specialized vm on open stack cloudHigh specialized vm on open stack cloud
High specialized vm on open stack cloud
 
Open Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studioOpen Source Day 2015 - DBaaS con Docker: un caso di studio
Open Source Day 2015 - DBaaS con Docker: un caso di studio
 
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
Git/Continuous Integration/Docker: la terna dello sviluppo moderno.
 
Laravelday2018
Laravelday2018Laravelday2018
Laravelday2018
 
Maven Eclipse
Maven EclipseMaven Eclipse
Maven Eclipse
 
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
Un'Infrastruttura di Sviluppo Web Enterprise Distribuita Basata su Modelli Pa...
 
Apache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automationApache Maven - Gestione di progetti Java e build automation
Apache Maven - Gestione di progetti Java e build automation
 
Alfresco meetup Roma - docker
Alfresco meetup Roma - dockerAlfresco meetup Roma - docker
Alfresco meetup Roma - docker
 
Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20Omnis italianmeeting 2016-10-20
Omnis italianmeeting 2016-10-20
 
La mia prima lezione di pozioni
La mia prima lezione di pozioniLa mia prima lezione di pozioni
La mia prima lezione di pozioni
 
Apache Maven
Apache MavenApache Maven
Apache Maven
 
Maven from dummies
Maven from dummiesMaven from dummies
Maven from dummies
 
Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker Meetup ASP.NET Core 2 e Docker
Meetup ASP.NET Core 2 e Docker
 
Infrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACSInfrastructure as code: Kubernetes on ACS
Infrastructure as code: Kubernetes on ACS
 

Similar a Introduzione pratica a docker, da chi lo ha appena conosciuto

Docker vs Virtualizzazioni
Docker vs VirtualizzazioniDocker vs Virtualizzazioni
Docker vs VirtualizzazioniGiuliano Latini
 
Distribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradleDistribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradlePaolo Montalto
 
Italy vmug 2019 PowerCLI pret-a-porter
Italy vmug 2019 PowerCLI pret-a-porterItaly vmug 2019 PowerCLI pret-a-porter
Italy vmug 2019 PowerCLI pret-a-porterMarco Scandaletti
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerLuca Congiu
 
I containers in azure, light vm o un vero cambio di paradigma?
I containers in azure, light vm o un vero cambio di paradigma?I containers in azure, light vm o un vero cambio di paradigma?
I containers in azure, light vm o un vero cambio di paradigma?Giuliano Latini
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetesblexin
 
Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)Giancarlo Valente
 
Docker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITDocker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITYefry Figueroa
 
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...Giulio Vian
 
Visual Studio Release Management - una nuova Weltanschauung o un'evoluzione n...
Visual Studio Release Management - una nuova Weltanschauung o un'evoluzione n...Visual Studio Release Management - una nuova Weltanschauung o un'evoluzione n...
Visual Studio Release Management - una nuova Weltanschauung o un'evoluzione n...Giulio Vian
 
Basta problemi-con-tensorflow-usando-docker-nvidia-docker
Basta problemi-con-tensorflow-usando-docker-nvidia-dockerBasta problemi-con-tensorflow-usando-docker-nvidia-docker
Basta problemi-con-tensorflow-usando-docker-nvidia-dockerNicola Landro
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOpsFabio Mora
 
Drush make vs composer
Drush make vs composer Drush make vs composer
Drush make vs composer sparkfabrik
 
Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Luca Lusso
 

Similar a Introduzione pratica a docker, da chi lo ha appena conosciuto (20)

Docker vs Virtualizzazioni
Docker vs VirtualizzazioniDocker vs Virtualizzazioni
Docker vs Virtualizzazioni
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
Distribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradleDistribuire una libreria Java per usarla come dipendenza gradle
Distribuire una libreria Java per usarla come dipendenza gradle
 
Italy vmug 2019 PowerCLI pret-a-porter
Italy vmug 2019 PowerCLI pret-a-porterItaly vmug 2019 PowerCLI pret-a-porter
Italy vmug 2019 PowerCLI pret-a-porter
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e Docker
 
I containers in azure, light vm o un vero cambio di paradigma?
I containers in azure, light vm o un vero cambio di paradigma?I containers in azure, light vm o un vero cambio di paradigma?
I containers in azure, light vm o un vero cambio di paradigma?
 
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e KubernetesWorkshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
Workshop ASP.NET Core e Angular in produzione con Docker e Kubernetes
 
Introduzione A Docker
Introduzione A DockerIntroduzione A Docker
Introduzione A Docker
 
Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)Inversion of control e Dependency Injection (ITA)
Inversion of control e Dependency Injection (ITA)
 
Docker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITDocker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti IT
 
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
Usare SQL Server for Linux e Docker per semplificare i processi di testing - ...
 
Visual Studio Release Management - una nuova Weltanschauung o un'evoluzione n...
Visual Studio Release Management - una nuova Weltanschauung o un'evoluzione n...Visual Studio Release Management - una nuova Weltanschauung o un'evoluzione n...
Visual Studio Release Management - una nuova Weltanschauung o un'evoluzione n...
 
Basta problemi-con-tensorflow-usando-docker-nvidia-docker
Basta problemi-con-tensorflow-usando-docker-nvidia-dockerBasta problemi-con-tensorflow-usando-docker-nvidia-docker
Basta problemi-con-tensorflow-usando-docker-nvidia-docker
 
Drush make vs composer
 Drush make vs composer Drush make vs composer
Drush make vs composer
 
La Unix Way vista da un DevOps
La Unix Way vista da un DevOpsLa Unix Way vista da un DevOps
La Unix Way vista da un DevOps
 
Docker jug taa
Docker   jug taaDocker   jug taa
Docker jug taa
 
Azure dev ops meetup one
Azure dev ops meetup oneAzure dev ops meetup one
Azure dev ops meetup one
 
Silex, iniziamo
Silex, iniziamoSilex, iniziamo
Silex, iniziamo
 
Drush make vs composer
Drush make vs composer Drush make vs composer
Drush make vs composer
 
Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8Come portare il profiler di symfony2 in drupal8
Come portare il profiler di symfony2 in drupal8
 

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
  • 2.
  • 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 don’t 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 l’ultima 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 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 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 all’interno 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 l’immagine 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 all’immagine # Comment *********** INSTRUCTION arguments i Docker file sono composti da istruzioni che indicano a docker come comporre l’immagine che desideriamo comporre
  • 20. 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 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 - l’applicazione 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