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

50
Docker Entorno de trabajo configurado en 1 minuto Ruben Egiguren (keopx) 13/05/2017

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

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.netDrupal: www.drupal.org/u/keopx

Miembro de:Drupal associationAsociación Española de DrupalG.D.O Basque Country…

Drupal Developer

Definimos,diseñamosy construimosnegocios digitales

Introducción

Introducción

Hablaremos de¿Qué es Docker?Ventajas de trabajar con Docker (vs VM)Instalación de DockerComponentes de DockerPrincipales comandos de DockerDocker-ComposeIntroducción a DockerHubDevOpsCó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 ordenadorUn 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 DockerLinux (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 DockerLinux (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 DockerMac

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 DockerWindows

Descárgate la app para Windows

Instalar (msi)

Fuente: https://docs.docker.com/docker-for-windows/install/

c

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 DockerCrear imagen con Dockerfile

DockerfileFROM debian:jessieMAINTAINER keopx <[email protected]>RUN apt-get -qq update && apt-get -qqy upgradeRUN 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.cnfVOLUME /var/lib/mysqlCOPY scripts/docker-entrypoint.sh /usr/local/bin/RUN chmod a+x /usr/local/bin/docker-entrypoint.shRUN ln -s usr/local/bin/docker-entrypoint.sh /entrypoint.sh # backwards compatENTRYPOINT ["docker-entrypoint.sh"]EXPOSE 3306CMD ["mysqld"]

Fuente: https://github.com/keopx/docker-mysql/blob/master/5.5/Dockerfile

Principales comandos de DockerLanzar docker

Build

$ docker build -t .

Lanzar

$ docker run hello-world

Correr el bash de un Ubuntu

$ docker run -it ubuntu bash

Principales comandos de DockerComandos 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 ComposeInstalació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-compose-$(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 ComposeCrear 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: - mysqlmysql: 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 ComposePrincipales 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)