SlideShare una empresa de Scribd logo
1 de 50
Descargar para leer sin conexión
Docker
Entorno de trabajo
configurado en 1 minuto
Ruben Egiguren (keopx)
13/05/2017
Acerca de mí
Drupal Developer, Software Libre enthusiast, new technologies and geek
Ruben Egiguren a.k.a. Keopx
Blog: www.keopx.net
Drupal: www.drupal.org/u/keopx
Miembro de:
Drupal association
Asociación Española de Drupal
G.D.O Basque Country
…
Drupal Developer
Definimos,
diseñamos
y construimos
negocios digitales
Introducción
Introducción
Hablaremos de
¿Qué es Docker?
Ventajas de trabajar con Docker (vs VM)
Instalación de Docker
Componentes de Docker
Principales comandos de Docker
Docker-Compose
Introducción a DockerHub
DevOps
Cómo usarlo en el día a día.
Demo time
¿Qué es Docker?
¿Qué es Docker?
Docker es un proyecto de código abierto que
automatiza el despliegue de aplicaciones dentro de
contenedores de software.
Permite crear, empaquetar y distribuir sus aplicaciones
rápidamente.
Docker sirve para ejecutar “máquinas virtuales” ligeras.
¿Qué es Docker?
Ventajas de trabajar con Docker
(vs VM)
Ventajas de trabajar con Docker
(vs VM)
Principales características:
Consume pocos recursos, lo que permite desplegar multitud
de contenedores en un mismo equipo físico.
Se elimina el problema de dependencias de las aplicaciones.
Los contenedores son livianos y facilitan su almacenaje,
transporte y despliegue.
Hubs de imagenes públicos y privados de imágenes
Compatibilidad Multi-Sistema, podremos desplegar nuestros
contenedores en multitud de plataformas.
Ventajas de trabajar con Docker
(vs VM)
aprovisionamiento ->
configuración ->
despliegue ->
ejecución
Ventajas de trabajar con Docker
Máquina Virtual (VM)
Simula a un ordenador
Un duplicado eficiente y aislado de una
máquina física.
Algunos sistemas:
VirtualBox (Libre - escritorio)
QEMU (Libre - escritorio)
VMWARE (Gratis/Pago - escritorio/server)
KVM (Libre - server)
XEN (Libre - server)
Ventajas de trabajar con Docker
Vagrant
Vagrant es una aplicación escrita en Ruby
Facilita considerablemente la creación de entornos
virtuales de desarrollo
Vagrant nos abstrae del sistema de virtualización
Nos permite instalar y configurar el software de la VM
Herramientas de automatización
Puppet, chef, ansible,...
Más info: www.vagrantup.com
Ventajas de trabajar con Docker
Vagrant
Ventajas de trabajar con Docker
Docker
Crear, enviar y ejecutar aplicaciones distribuidas.
Portable, ligero en ejecución y herramienta de
empaquetado.
Más info: www.docker.com/
15
Ventajas de trabajar con Docker
Docker
16
Ventajas de trabajar con Docker
VM (Vagrant) vs. Docker
17
Instalación de Docker
Instalación de Docker
Requisitos:
Linux
Docker funciona mejor con el kernel 3.8
Mac
Windows
Instalación de Docker
Linux (Ubuntu)
sudo apt-get remove docker docker-engine
sudo apt-get install apt-transport-https ca-certificates
curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg
| sudo apt-key add -
sudo apt-key fingerprint 0EBFCD88
sudo add-apt-repository "deb [arch=amd64]
https://download.docker.com/linux/ubuntu $(lsb_release
-cs) stable"
Fuente: https://docs.docker.com/engine/installation/linux/ubuntu/
Instalación de Docker
Linux (Ubuntu)
sudo apt-get update
sudo apt-get install docker-ce
sudo groupadd docker
sudo usermod -aG docker $USER
Fuente: https://docs.docker.com/engine/installation/linux/ubuntu/
Instalación de Docker
Mac
Descárgate la app para mac
Arrastrar e instalar.
Fuente: https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac
Instalación de Docker
Windows
Descárgate la app para Windows
Instalar (msi)
Fuente: https://docs.docker.com/docker-for-windows/install/
Componentes de Docker
Componentes de Docker
Image: una capa de sólo lectura que nunca cambia
(casi), semejante a una plantilla.
Container: una capa de lectura escritura. Una instancia
a partir de una image.
Hub: Es el repositorio de images docker.
Link: Acción de linkear un container con otro
Volume: Compartir carpeta/fichero entre
containers/Host
Componentes de Docker
Principales comandos de Docker
Principales comandos de Docker
Listar: $ docker images
Buscar: $ docker search alpine
Descargar: $ docker pull alpine:latest
Eliminar: $ docker rmi alpine:tag
Construir: $ docker build -t myimage:latest .
Subir: $ docker push myimage:latest
Principales comandos de Docker
Crear imagen con Dockerfile
Dockerfile
FROM debian:jessie
MAINTAINER keopx <keopx@keopx.net>
RUN apt-get -qq update && apt-get -qqy upgrade
RUN apt-get -qy install mysql-client mysql-server
RUN apt-get -q autoclean && 
rm -rf /var/lib/apt/lists/*
RUN sed -i "s/^bind-address/#bind-address/" /etc/mysql/my.cnf
VOLUME /var/lib/mysql
COPY scripts/docker-entrypoint.sh /usr/local/bin/
RUN chmod a+x /usr/local/bin/docker-entrypoint.sh
RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards
compat
ENTRYPOINT ["docker-entrypoint.sh"]
EXPOSE 3306
CMD ["mysqld"]
Fuente: https://github.com/keopx/docker-mysql/blob/master/5.5/Dockerfile
Principales comandos de Docker
Lanzar docker
Build
$ docker build -t .
Lanzar
$ docker run hello-world
Correr el bash de un Ubuntu
$ docker run -it ubuntu bash
Principales comandos de Docker
Comandos básicos containers
Listar
$ docker ps -a
Ejecutar a partir de un image:tag
$ docker run --name mycontainer -ti alpine:latest
/bin/sh
Start|Stop|Restart
$ docker start|stop|restart mycontainer
Eliminar
$ docker rm mycontainer
Docker Compose
Docker Compose
Instalación de Docker Compose
Sirve para manejar distintos containers.
Instalación:
Mediante curl:
$ curl -L
"https://github.com/docker/compose/releases/download/1.11.2/docker-com
pose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
$ chmod +x /usr/local/bin/docker-compose
Mediante pip:
$ sudo pip install docker-compose
Verificar:
$ docker-compose --version
Docker Compose
Crear docker-compose.yml
Sirve para manejar distintos containers.
Crear archivo docker-compose.yml:
version: '2'
services:
web:
image: keopx/apache-php:7.0
ports:
- "8008:80"
links:
- mysql
mysql:
image: keopx/mysql:5.5
ports:
- "3306:3306"
volumes:
- ./data/database:/var/lib/mysql
environment:
- MYSQL_ROOT_PASSWORD=root
- MYSQL_DATABASE=drupal
- MYSQL_USER=drupaluser
- MYSQL_PASSWORD=drupalpass
Fuente: https://github.com/keopx/docker-lamp/blob/master/docker-compose.yml
Docker Compose
Principales comandos de Docker
● Ejecutar el comando:
$ docker-compose up (-d)
● Abrir en browser: http://localhost:8008
● En caso de usar Mac OS X o Windows reemplazar
localhost con la ip de:
$ boot2docker ip
Fuente: https://github.com/keopx/docker-lamp/blob/master/docker-compose.yml
Introducción a DockerHub
Introducción a DockerHub
Crear un repositorio en Docker Hub que obtenga los
Dockerfile de un repositorio de GitHub y construya las
imágenes de los Dockerfile de forma automática
cuando haya cambios en los archivos dockerfile de
GitHub.
Crear una cuenta en Docker Hub
Subir el archivo Dockerfile a un repositorio de
GitHub/Bitbucket
Crear el repositorio en DockerHub y la build automática
Introducción a DockerHub
DevOps
DevOps
DevOps es un acrónimo inglés de development
(desarrollo) y operations (operaciones)
Qué ofrece
Entornos configurados para su uso
Entornos aislados
Evitar conflictos de versiones y/o configuraciones
Agilizar la puesta a punto de los entornos de
desarrollo/testing/producción
Entornos CI
DevOps
Pero la maquina virtual solo es una parte
Aísla el sistema pero…
No nos facilita muchas operaciones
Nos mantiene lo que hagamos, pero y si cambio
algo y se “rompe”
No podemos desplegarlo tal y como está a
producción
...
DevOps
DevOps es algo así como....
DevOps
http://i.imgur.com/b1YihdT.gif
Cómo usarlo en el día a día
Cómo usarlo en el día a día
Sistemas homogéneos
Mismas versiones
Mismas configuraciones
Todos en el proyecto usan el mismo entorno
Se acabó el, “en mi maquina funciona”
No hay excepciones
Si se requiere un cambio se realiza en la
configuración o en el contenedor
Exportable a producción *
Cómo usarlo en el día a día
Comienzas un nuevo proyecto
Clonas el repo del proyecto
Arrancas docker compose
Se supone que es más cómodo para sistemas
complejos.
Importas la base de datos
Puede que tengas incluso un setup.sh que haga
esto
Ya puedes comenzar a trabajar
Demo time
Eskerrik asko!
GNU/GPL Licence
Drupal Developer
Ruben Egiguren (keopx)

Más contenido relacionado

La actualidad más candente

La actualidad más candente (20)

Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven[ES] Primeros pasos con Maven
[ES] Primeros pasos con Maven
 
nerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshopnerdear.la 2016 - Docker workshop
nerdear.la 2016 - Docker workshop
 
Docker: la revolución en virtualización
Docker: la revolución en virtualizaciónDocker: la revolución en virtualización
Docker: la revolución en virtualización
 
Introduccion A Docker
Introduccion A DockerIntroduccion A Docker
Introduccion A Docker
 
Conceptos avanzados en docker
Conceptos avanzados en dockerConceptos avanzados en docker
Conceptos avanzados en docker
 
Contenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneasContenedores, creando infraestructuras homogeneas
Contenedores, creando infraestructuras homogeneas
 
Introducción a Docker
Introducción a DockerIntroducción a Docker
Introducción a Docker
 
Docker desde cero
Docker desde ceroDocker desde cero
Docker desde cero
 
Presentación Docker
Presentación DockerPresentación Docker
Presentación Docker
 
Fury - Docker Meetup
Fury - Docker MeetupFury - Docker Meetup
Fury - Docker Meetup
 
introducción a Docker
introducción a Dockerintroducción a Docker
introducción a Docker
 
Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf Devops episodio 1. devOpsTnf
Devops episodio 1. devOpsTnf
 
Docker y PostgreSQL
Docker y PostgreSQLDocker y PostgreSQL
Docker y PostgreSQL
 
Git y drupal
Git y drupalGit y drupal
Git y drupal
 
Divide y vencerás con docker y core os
Divide y vencerás con docker y core osDivide y vencerás con docker y core os
Divide y vencerás con docker y core os
 
Dockers y wp
Dockers y wpDockers y wp
Dockers y wp
 
DevOps: una breve introducción
DevOps: una breve introducciónDevOps: una breve introducción
DevOps: una breve introducción
 
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
Geekend 2018 - No trabajes en Local! (Utiliza Vagrant o Docker)
 
BEEVA | Introducción a Docker
BEEVA | Introducción a DockerBEEVA | Introducción a Docker
BEEVA | Introducción a Docker
 

Similar a Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]

Similar a Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao] (20)

Docker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJSDocker orientado al desarrollo de aplicaciones con NodeJS
Docker orientado al desarrollo de aplicaciones con NodeJS
 
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - QuaipWordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
WordPress, Nginx, Ghost y Telegram con Docker - I Meetup Docker Córdoba - Quaip
 
docker.pdf
docker.pdfdocker.pdf
docker.pdf
 
Gdglima docker-ecosystem
Gdglima docker-ecosystemGdglima docker-ecosystem
Gdglima docker-ecosystem
 
Corriendo SQL Server en Docker
Corriendo SQL Server en DockerCorriendo SQL Server en Docker
Corriendo SQL Server en Docker
 
FROM lost to the Docker 2020
FROM lost to the Docker 2020FROM lost to the Docker 2020
FROM lost to the Docker 2020
 
FROM lost to the docker
FROM lost to the dockerFROM lost to the docker
FROM lost to the docker
 
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019 Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
Docker y kubernetes para desarrolladores .NET - Meetup Barcelona 2019
 
Pruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOpsPruebas de integración con Docker en Azure DevOps
Pruebas de integración con Docker en Azure DevOps
 
Dockerparadesarrollo
DockerparadesarrolloDockerparadesarrollo
Dockerparadesarrollo
 
Jug málaga docker 101 - final
Jug málaga   docker 101 - finalJug málaga   docker 101 - final
Jug málaga docker 101 - final
 
Docker en el entorno de desarrollo
Docker en el entorno de desarrolloDocker en el entorno de desarrollo
Docker en el entorno de desarrollo
 
Curso gratuito de Docker
Curso gratuito de DockerCurso gratuito de Docker
Curso gratuito de Docker
 
administracion de sistemas de informacion
administracion de sistemas de informacionadministracion de sistemas de informacion
administracion de sistemas de informacion
 
Primeros pasos con Docker
Primeros pasos con DockerPrimeros pasos con Docker
Primeros pasos con Docker
 
Jenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker EcosystemJenkins Peru Meetup Docker Ecosystem
Jenkins Peru Meetup Docker Ecosystem
 
Docker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos AiresDocker 101 Workshop - WomenWhoCode Buenos Aires
Docker 101 Workshop - WomenWhoCode Buenos Aires
 
Seminario CLEFormacion-docker
Seminario CLEFormacion-dockerSeminario CLEFormacion-docker
Seminario CLEFormacion-docker
 
Docker - Sysmana 2014
Docker - Sysmana 2014Docker - Sysmana 2014
Docker - Sysmana 2014
 
Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.Instalacion y uso basico de Docker.
Instalacion y uso basico de Docker.
 

Más de Keopx

Más de Keopx (20)

[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
[DrupalCampSpain2023] Introducción al desarrollo de módulos en Drupal 10
 
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9
[DrupalCampSpain2022] Introducción al desarrollo de módulos en Drupal 9
 
Fucking copyright
Fucking copyrightFucking copyright
Fucking copyright
 
Segurtasuna sarean
Segurtasuna sareanSegurtasuna sarean
Segurtasuna sarean
 
[DrupalCampSpain2018] CircleCI
[DrupalCampSpain2018] CircleCI[DrupalCampSpain2018] CircleCI
[DrupalCampSpain2018] CircleCI
 
[DrupalCampSpain2018] Trabajando en remoto
[DrupalCampSpain2018] Trabajando en remoto[DrupalCampSpain2018] Trabajando en remoto
[DrupalCampSpain2018] Trabajando en remoto
 
[DrupalCampSpain2018] Contribuir a Drupal
[DrupalCampSpain2018] Contribuir a Drupal[DrupalCampSpain2018] Contribuir a Drupal
[DrupalCampSpain2018] Contribuir a Drupal
 
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.org
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.orgDrupalDay Bilbao 2014: Publica tu proyecto en drupal.org
DrupalDay Bilbao 2014: Publica tu proyecto en drupal.org
 
El poder de webform (antes yaml form)
El poder de webform (antes yaml form)El poder de webform (antes yaml form)
El poder de webform (antes yaml form)
 
Contribuir a Drupal - Entorno
Contribuir a Drupal - EntornoContribuir a Drupal - Entorno
Contribuir a Drupal - Entorno
 
Uso practico de git
Uso practico de gitUso practico de git
Uso practico de git
 
WorkShop: Introducción a GIT
WorkShop: Introducción a GITWorkShop: Introducción a GIT
WorkShop: Introducción a GIT
 
Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015  Drupal 8 WorkShop - e-Ghost 2015
Drupal 8 WorkShop - e-Ghost 2015
 
Drupal 8 WorkShop
Drupal 8 WorkShopDrupal 8 WorkShop
Drupal 8 WorkShop
 
Herramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMPHerramientas de trabajo para entorno LAMP
Herramientas de trabajo para entorno LAMP
 
Drupal Day Bilbao 2014 - Sesión de cierre
Drupal Day Bilbao 2014 - Sesión de cierreDrupal Day Bilbao 2014 - Sesión de cierre
Drupal Day Bilbao 2014 - Sesión de cierre
 
Drupal Day Bilbao 2014 - Sesión de apertura
Drupal Day Bilbao 2014 - Sesión de aperturaDrupal Day Bilbao 2014 - Sesión de apertura
Drupal Day Bilbao 2014 - Sesión de apertura
 
Introducción a git
Introducción a gitIntroducción a git
Introducción a git
 
Business inteligence
Business inteligenceBusiness inteligence
Business inteligence
 
Herramientas de reporte
Herramientas de reporteHerramientas de reporte
Herramientas de reporte
 

Docker - Entorno de trabajo configurado en 1 minuto [WCBilbao]

  • 1. Docker Entorno de trabajo configurado en 1 minuto Ruben Egiguren (keopx) 13/05/2017
  • 2. Acerca de mí Drupal Developer, Software Libre enthusiast, new technologies and geek Ruben Egiguren a.k.a. Keopx Blog: www.keopx.net Drupal: www.drupal.org/u/keopx Miembro de: Drupal association Asociación Española de Drupal G.D.O Basque Country … Drupal Developer
  • 5. Introducción Hablaremos de ¿Qué es Docker? Ventajas de trabajar con Docker (vs VM) Instalación de Docker Componentes de Docker Principales comandos de Docker Docker-Compose Introducción a DockerHub DevOps Cómo usarlo en el día a día. Demo time
  • 7. ¿Qué es Docker? Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software. Permite crear, empaquetar y distribuir sus aplicaciones rápidamente. Docker sirve para ejecutar “máquinas virtuales” ligeras.
  • 9. Ventajas de trabajar con Docker (vs VM)
  • 10. Ventajas de trabajar con Docker (vs VM) Principales características: Consume pocos recursos, lo que permite desplegar multitud de contenedores en un mismo equipo físico. Se elimina el problema de dependencias de las aplicaciones. Los contenedores son livianos y facilitan su almacenaje, transporte y despliegue. Hubs de imagenes públicos y privados de imágenes Compatibilidad Multi-Sistema, podremos desplegar nuestros contenedores en multitud de plataformas.
  • 11. Ventajas de trabajar con Docker (vs VM) aprovisionamiento -> configuración -> despliegue -> ejecución
  • 12. Ventajas de trabajar con Docker Máquina Virtual (VM) Simula a un ordenador Un duplicado eficiente y aislado de una máquina física. Algunos sistemas: VirtualBox (Libre - escritorio) QEMU (Libre - escritorio) VMWARE (Gratis/Pago - escritorio/server) KVM (Libre - server) XEN (Libre - server)
  • 13. Ventajas de trabajar con Docker Vagrant Vagrant es una aplicación escrita en Ruby Facilita considerablemente la creación de entornos virtuales de desarrollo Vagrant nos abstrae del sistema de virtualización Nos permite instalar y configurar el software de la VM Herramientas de automatización Puppet, chef, ansible,... Más info: www.vagrantup.com
  • 14. Ventajas de trabajar con Docker Vagrant
  • 15. Ventajas de trabajar con Docker Docker Crear, enviar y ejecutar aplicaciones distribuidas. Portable, ligero en ejecución y herramienta de empaquetado. Más info: www.docker.com/ 15
  • 16. Ventajas de trabajar con Docker Docker 16
  • 17. Ventajas de trabajar con Docker VM (Vagrant) vs. Docker 17
  • 19. Instalación de Docker Requisitos: Linux Docker funciona mejor con el kernel 3.8 Mac Windows
  • 20. Instalación de Docker Linux (Ubuntu) sudo apt-get remove docker docker-engine sudo apt-get install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - sudo apt-key fingerprint 0EBFCD88 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" Fuente: https://docs.docker.com/engine/installation/linux/ubuntu/
  • 21. Instalación de Docker Linux (Ubuntu) sudo apt-get update sudo apt-get install docker-ce sudo groupadd docker sudo usermod -aG docker $USER Fuente: https://docs.docker.com/engine/installation/linux/ubuntu/
  • 22. Instalación de Docker Mac Descárgate la app para mac Arrastrar e instalar. Fuente: https://docs.docker.com/docker-for-mac/install/#install-and-run-docker-for-mac
  • 23. Instalación de Docker Windows Descárgate la app para Windows Instalar (msi) Fuente: https://docs.docker.com/docker-for-windows/install/
  • 25. Componentes de Docker Image: una capa de sólo lectura que nunca cambia (casi), semejante a una plantilla. Container: una capa de lectura escritura. Una instancia a partir de una image. Hub: Es el repositorio de images docker. Link: Acción de linkear un container con otro Volume: Compartir carpeta/fichero entre containers/Host
  • 28. Principales comandos de Docker Listar: $ docker images Buscar: $ docker search alpine Descargar: $ docker pull alpine:latest Eliminar: $ docker rmi alpine:tag Construir: $ docker build -t myimage:latest . Subir: $ docker push myimage:latest
  • 29. Principales comandos de Docker Crear imagen con Dockerfile Dockerfile FROM debian:jessie MAINTAINER keopx <keopx@keopx.net> RUN apt-get -qq update && apt-get -qqy upgrade RUN apt-get -qy install mysql-client mysql-server RUN apt-get -q autoclean && rm -rf /var/lib/apt/lists/* RUN sed -i "s/^bind-address/#bind-address/" /etc/mysql/my.cnf VOLUME /var/lib/mysql COPY scripts/docker-entrypoint.sh /usr/local/bin/ RUN chmod a+x /usr/local/bin/docker-entrypoint.sh RUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compat ENTRYPOINT ["docker-entrypoint.sh"] EXPOSE 3306 CMD ["mysqld"] Fuente: https://github.com/keopx/docker-mysql/blob/master/5.5/Dockerfile
  • 30. Principales comandos de Docker Lanzar docker Build $ docker build -t . Lanzar $ docker run hello-world Correr el bash de un Ubuntu $ docker run -it ubuntu bash
  • 31. Principales comandos de Docker Comandos básicos containers Listar $ docker ps -a Ejecutar a partir de un image:tag $ docker run --name mycontainer -ti alpine:latest /bin/sh Start|Stop|Restart $ docker start|stop|restart mycontainer Eliminar $ docker rm mycontainer
  • 33. Docker Compose Instalación de Docker Compose Sirve para manejar distintos containers. Instalación: Mediante curl: $ curl -L "https://github.com/docker/compose/releases/download/1.11.2/docker-com pose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose $ chmod +x /usr/local/bin/docker-compose Mediante pip: $ sudo pip install docker-compose Verificar: $ docker-compose --version
  • 34. Docker Compose Crear docker-compose.yml Sirve para manejar distintos containers. Crear archivo docker-compose.yml: version: '2' services: web: image: keopx/apache-php:7.0 ports: - "8008:80" links: - mysql mysql: image: keopx/mysql:5.5 ports: - "3306:3306" volumes: - ./data/database:/var/lib/mysql environment: - MYSQL_ROOT_PASSWORD=root - MYSQL_DATABASE=drupal - MYSQL_USER=drupaluser - MYSQL_PASSWORD=drupalpass Fuente: https://github.com/keopx/docker-lamp/blob/master/docker-compose.yml
  • 35. Docker Compose Principales comandos de Docker ● Ejecutar el comando: $ docker-compose up (-d) ● Abrir en browser: http://localhost:8008 ● En caso de usar Mac OS X o Windows reemplazar localhost con la ip de: $ boot2docker ip Fuente: https://github.com/keopx/docker-lamp/blob/master/docker-compose.yml
  • 37. Introducción a DockerHub Crear un repositorio en Docker Hub que obtenga los Dockerfile de un repositorio de GitHub y construya las imágenes de los Dockerfile de forma automática cuando haya cambios en los archivos dockerfile de GitHub. Crear una cuenta en Docker Hub Subir el archivo Dockerfile a un repositorio de GitHub/Bitbucket Crear el repositorio en DockerHub y la build automática
  • 40. DevOps DevOps es un acrónimo inglés de development (desarrollo) y operations (operaciones) Qué ofrece Entornos configurados para su uso Entornos aislados Evitar conflictos de versiones y/o configuraciones Agilizar la puesta a punto de los entornos de desarrollo/testing/producción Entornos CI
  • 41. DevOps Pero la maquina virtual solo es una parte Aísla el sistema pero… No nos facilita muchas operaciones Nos mantiene lo que hagamos, pero y si cambio algo y se “rompe” No podemos desplegarlo tal y como está a producción ...
  • 42. DevOps DevOps es algo así como....
  • 44. Cómo usarlo en el día a día
  • 45. Cómo usarlo en el día a día Sistemas homogéneos Mismas versiones Mismas configuraciones Todos en el proyecto usan el mismo entorno Se acabó el, “en mi maquina funciona” No hay excepciones Si se requiere un cambio se realiza en la configuración o en el contenedor Exportable a producción *
  • 46. Cómo usarlo en el día a día Comienzas un nuevo proyecto Clonas el repo del proyecto Arrancas docker compose Se supone que es más cómodo para sistemas complejos. Importas la base de datos Puede que tengas incluso un setup.sh que haga esto Ya puedes comenzar a trabajar
  • 49.