SlideShare a Scribd company logo
Docker: come
"inscatolare" la propria
app?
JUG TAA - giugno 2015
Cristian Consonni e Mario A. Santini
Agenda
Teorica Pratica
Cos'è un LXC (Linux Container)
E’ un programma in user space che emula un
sistema operativo.
Sfrutta il kernel che lo ospita, ma tiene separati
i contesti.
Virtualizzazione vs container
Container
Virtualizzazione
Che cosa è Docker
Docker container
libs / tools
Your App
Docker daemon
Docker
Registry
Docker
client
Che cosa è il Dockerfile
●
FROM java:7-jre
●
●
ENV CATALINA_HOME /usr/local/tomcat
●
ENV PATH $CATALINA_HOME/bin:$PATH
●
RUN mkdir -p "$CATALINA_HOME"
●
WORKDIR $CATALINA_HOME
Che cosa è il Dockerfile 2
●
# see https://www.apache.org/dist/tomcat/tomcat-8/KEYS
●
RUN gpg --keyserver pool.sks-keyservers.net --recv-keys 
●
05AB33110949707C93A279E3D3EFE6B686867BA6 
●
07E48665A34DCAFAE522E5E6266191C37C037D42 
●
...
●
●
ENV TOMCAT_MAJOR 6
●
ENV TOMCAT_VERSION 6.0.44
●
ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat-
$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-
$TOMCAT_VERSION.tar.gz
Che cosa è il Dockerfile 3
●
RUN set -x 
●
&& curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz 
●
&& curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc 
●
&& gpg --verify tomcat.tar.gz.asc 
●
&& tar -xvf tomcat.tar.gz --strip-components=1 
●
&& rm bin/*.bat 
●
&& rm tomcat.tar.gz*
●
●
EXPOSE 8080
●
CMD ["catalina.sh", "run"]
DockerHub
Docker Hub: registry pubblico/privato
Docker registry: registry locale (aziendale)
Docker Trusted Registry: servizio a pagamento
DockerHub
Docker Hub: registry pubblico/privato
Docker registry: registry locale (aziendale)
Docker Trusted Registry: servizio a pagamento

More Related Content

Similar to Docker jug taa

Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
Gerardo Di Iorio
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
Daniele Mondello
 
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
Gabriele Baldoni
 
TuxIsAlive
TuxIsAliveTuxIsAlive
TuxIsAlive
Claudio Mignanti
 
Docker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITDocker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti IT
Yefry Figueroa
 
Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]
Valerio Radice
 
Docker vs Virtualizzazioni
Docker vs VirtualizzazioniDocker vs Virtualizzazioni
Docker vs Virtualizzazioni
Giuliano Latini
 
Laravelday2018
Laravelday2018Laravelday2018
Laravelday2018
Santo Caruso
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
Antonio Di Motta
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazione
Daniele Costarella
 
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
Paolo Montalto
 
Introduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a docker, da chi lo ha appena conosciutoIntroduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a docker, da chi lo ha appena conosciuto
Daniele Megna
 
Introduzione al java
Introduzione al javaIntroduzione al java
Introduzione al java
Giovanni Pace
 
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
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e Docker
Luca Congiu
 
Introduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.itIntroduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.it
Fabio Ros
 
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
blexin
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxDeveler S.r.l.
 
Git best practices
Git best practicesGit best practices
Git best practices
Matteo Gavagnin
 
Hadoop SAR
Hadoop SARHadoop SAR

Similar to Docker jug taa (20)

Docker & DevOps
Docker  & DevOpsDocker  & DevOps
Docker & DevOps
 
Vagrant e Docker a confronto;scegliere ed iniziare
Vagrant e  Docker a confronto;scegliere ed iniziareVagrant e  Docker a confronto;scegliere ed iniziare
Vagrant e Docker a confronto;scegliere ed iniziare
 
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
 
TuxIsAlive
TuxIsAliveTuxIsAlive
TuxIsAlive
 
Docker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti ITDocker e Kubernetes per professionisti IT
Docker e Kubernetes per professionisti IT
 
Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]Introduzione a Docker (Maggio 2017) [ITA]
Introduzione a Docker (Maggio 2017) [ITA]
 
Docker vs Virtualizzazioni
Docker vs VirtualizzazioniDocker vs Virtualizzazioni
Docker vs Virtualizzazioni
 
Laravelday2018
Laravelday2018Laravelday2018
Laravelday2018
 
Introduzione a Docker
Introduzione a DockerIntroduzione a Docker
Introduzione a Docker
 
Linux Embedded per l'automazione
Linux Embedded per l'automazioneLinux Embedded per l'automazione
Linux Embedded per l'automazione
 
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
 
Introduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a docker, da chi lo ha appena conosciutoIntroduzione pratica a docker, da chi lo ha appena conosciuto
Introduzione pratica a docker, da chi lo ha appena conosciuto
 
Introduzione al java
Introduzione al javaIntroduzione al java
Introduzione al java
 
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
 
ASP.NET Core 2 e Docker
ASP.NET Core 2 e DockerASP.NET Core 2 e Docker
ASP.NET Core 2 e Docker
 
Introduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.itIntroduzione a docker - DockerTutorial.it
Introduzione a docker - DockerTutorial.it
 
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
 
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linuxTrace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
Trace32 lo-strumento-piu-completo-per-il-debug-di-un-sistema-linux
 
Git best practices
Git best practicesGit best practices
Git best practices
 
Hadoop SAR
Hadoop SARHadoop SAR
Hadoop SAR
 

More from Mario Alexandro Santini

A Safe Dock for our Programs
A Safe Dock for our ProgramsA Safe Dock for our Programs
A Safe Dock for our Programs
Mario Alexandro Santini
 
Rust With async / .await
Rust With async / .awaitRust With async / .await
Rust With async / .await
Mario Alexandro Santini
 
Rust_Threads.pdf
Rust_Threads.pdfRust_Threads.pdf
Rust_Threads.pdf
Mario Alexandro Santini
 
The_Borrow_Checker.pdf
The_Borrow_Checker.pdfThe_Borrow_Checker.pdf
The_Borrow_Checker.pdf
Mario Alexandro Santini
 
Vuejs
VuejsVuejs
The Rust Programming Language
The Rust Programming LanguageThe Rust Programming Language
The Rust Programming Language
Mario Alexandro Santini
 
Introduction to typescript
Introduction to typescriptIntroduction to typescript
Introduction to typescript
Mario Alexandro Santini
 

More from Mario Alexandro Santini (7)

A Safe Dock for our Programs
A Safe Dock for our ProgramsA Safe Dock for our Programs
A Safe Dock for our Programs
 
Rust With async / .await
Rust With async / .awaitRust With async / .await
Rust With async / .await
 
Rust_Threads.pdf
Rust_Threads.pdfRust_Threads.pdf
Rust_Threads.pdf
 
The_Borrow_Checker.pdf
The_Borrow_Checker.pdfThe_Borrow_Checker.pdf
The_Borrow_Checker.pdf
 
Vuejs
VuejsVuejs
Vuejs
 
The Rust Programming Language
The Rust Programming LanguageThe Rust Programming Language
The Rust Programming Language
 
Introduction to typescript
Introduction to typescriptIntroduction to typescript
Introduction to typescript
 

Docker jug taa

  • 1. Docker: come "inscatolare" la propria app? JUG TAA - giugno 2015 Cristian Consonni e Mario A. Santini
  • 3. Cos'è un LXC (Linux Container) E’ un programma in user space che emula un sistema operativo. Sfrutta il kernel che lo ospita, ma tiene separati i contesti.
  • 5. Che cosa è Docker Docker container libs / tools Your App Docker daemon Docker Registry Docker client
  • 6. Che cosa è il Dockerfile ● FROM java:7-jre ● ● ENV CATALINA_HOME /usr/local/tomcat ● ENV PATH $CATALINA_HOME/bin:$PATH ● RUN mkdir -p "$CATALINA_HOME" ● WORKDIR $CATALINA_HOME
  • 7. Che cosa è il Dockerfile 2 ● # see https://www.apache.org/dist/tomcat/tomcat-8/KEYS ● RUN gpg --keyserver pool.sks-keyservers.net --recv-keys ● 05AB33110949707C93A279E3D3EFE6B686867BA6 ● 07E48665A34DCAFAE522E5E6266191C37C037D42 ● ... ● ● ENV TOMCAT_MAJOR 6 ● ENV TOMCAT_VERSION 6.0.44 ● ENV TOMCAT_TGZ_URL https://www.apache.org/dist/tomcat/tomcat- $TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat- $TOMCAT_VERSION.tar.gz
  • 8. Che cosa è il Dockerfile 3 ● RUN set -x ● && curl -fSL "$TOMCAT_TGZ_URL" -o tomcat.tar.gz ● && curl -fSL "$TOMCAT_TGZ_URL.asc" -o tomcat.tar.gz.asc ● && gpg --verify tomcat.tar.gz.asc ● && tar -xvf tomcat.tar.gz --strip-components=1 ● && rm bin/*.bat ● && rm tomcat.tar.gz* ● ● EXPOSE 8080 ● CMD ["catalina.sh", "run"]
  • 9. DockerHub Docker Hub: registry pubblico/privato Docker registry: registry locale (aziendale) Docker Trusted Registry: servizio a pagamento
  • 10. DockerHub Docker Hub: registry pubblico/privato Docker registry: registry locale (aziendale) Docker Trusted Registry: servizio a pagamento