Docker introducción - Flisol 2015 Huancayo

34
Docker by @mario21ic

Transcript of Docker introducción - Flisol 2015 Huancayo

Docker by @mario21ic

Agenda

●  Introducción ●  ¿Qué es? Ventajas / Desventajas ●  Docker vs VMs ●  Componentes ●  Instalación ●  Comandos básicos ●  Dockerfile ●  Docker-compose ●  Docker Hub

Historia de virtualización

•  Comando chroot •  Virtualización: Qemu, KVM, vmware,

Virtualbox, Xen, OpenVZ •  Cloud: IaaS, SaaS, PaaS •  Containerización: LXC - Docker

Reto

The Matrix from Hell

Transporte antes del 1960

Also Matrix from Hell

Solución

¿Qué es?

●  Manejador de containers ●  Desarrollado en GO ●  Chroot con esteroides ●  Cliente - Servidor ●  OpenSource

Ventajas - Desventajas

•  Si corre en Linux, corre en en container •  Solo entorno Linux •  Creación de entornos aislados •  Escalar de manera rápida •  Rápidos despliegues en cliente •  Usuario root en container

Docker vs VMs

Docker lightweight

Instalación - Prerequisitos

●  Linux Kernel 3.8+

- Namespaces: para manejo de procesos

- Cgroups: gestión de recursos

●  AUFS

●  *LXC

Componentes: Linux OS X/Windows

Instalación - Linux

●  Lanzar instalador docker: $ curl -sSL https://get.docker.com/ | sh

●  Agregar a grupo:

$ sudo usermod -aG docker ${USER}

●  Verificar: $ docker info

Instalación - Mac OS X

●  Instalar vía brew: $ brew install boot2docker && brew install docker

●  Levantar boot2docker

$ boot2docker init && boot2docker start

●  Exportar datos de acceso: $ eval "$(boot2docker shellinit)"

Instalación - Windows

●  Descargar e instalar: https://github.com/boot2docker/windows-

installer/releases/latest

●  Correr línea de comandos y lanzar: Boot2Docker Start

●  Verificar:

docker info

Términos básicos

●  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 entre containers/

Host

Image, layouts & containers

Comandos básicos - Linux

●  Estado: $ sudo service docker status

●  Reiniciar: $ sudo service docker restart

●  Parar: $ sudo service docker stop

●  Levantar: $ sudo service docker start

Comandos básicos - Images

●  Listar: $ docker images

●  Buscar: $docker search alpine

●  Descargar: $ docker pull alpine:latest

●  Eliminar: $ docker rmi alpine:tag

●  Contruir: $ docker build -t myimage:latest .

●  Subir: $ docker push myimage:latest

Crear imagen con Dockerfile •  Dockerfile FROM php:5.4-apache MAINTAINER Mario Inga <[email protected]> RUN ln -s /etc/apache2/mods-available/rewrite.load /etc/apache2/mods-enabled RUN sed -i 's/AllowOverride None/AllowOverride All/g’ -l /etc/apache2/sites-available/default •  Build $ docker build -t nuevaimagen:1.0 . •  Probar $ docker run -d -p 80:80 -v /Users/mario21ic/repo/lucci/src:/app tutum/apache-php

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

Sirve para manejar distintos containers. Instalación: ●  Mediante curl:

$ curl -L https://github.com/docker/compose/releases/download/1.1.0/docker-compose-`uname -s`-`uname -m` > /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 archivo docker-compose.yml:

web: image: odoo:8 volumes: - ./mimodulo:/mnt/extra-addons/mimodulo links: - db ports: - "8069:8069" db: image: postgres:latest environment: POSTGRES_USER: odoo POSTGRES_PASSWORD: odoo

Docker-compose

●  Ejecutar el comando: $ docker-compose up

●  Abrir en browser: http://localhost:8069 ●  En caso de usar Mac OS X o Windows

reemplazar localhost con la ip de: $ boot2docker ip

Docker-compose

Nueva estructura del proyecto

carpeta_proyecto/ src_proyecto/ .git/ .gitignore Dockerfile docker-compose.yml

Docker hub

https://registry.hub.docker.com/

Docker Hub

$ docker login $ docker logout

¿Preguntas?