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 <mario21ic@gmail.com>
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?

Docker introducción - Flisol 2015 Huancayo

  • 1.
  • 2.
    Agenda ●  Introducción ●  ¿Quées? Ventajas / Desventajas ●  Docker vs VMs ●  Componentes ●  Instalación ●  Comandos básicos ●  Dockerfile ●  Docker-compose ●  Docker Hub
  • 3.
    Historia de virtualización • Comando chroot •  Virtualización: Qemu, KVM, vmware, Virtualbox, Xen, OpenVZ •  Cloud: IaaS, SaaS, PaaS •  Containerización: LXC - Docker
  • 4.
  • 5.
  • 6.
  • 7.
  • 10.
  • 11.
    ¿Qué es? ●  Manejadorde containers ●  Desarrollado en GO ●  Chroot con esteroides ●  Cliente - Servidor ●  OpenSource
  • 12.
    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
  • 13.
  • 14.
  • 15.
    Instalación - Prerequisitos ● Linux Kernel 3.8+ - Namespaces: para manejo de procesos - Cgroups: gestión de recursos ●  AUFS ●  *LXC
  • 16.
  • 17.
    Instalación - Linux ● Lanzar instalador docker: $ curl -sSL https://get.docker.com/ | sh ●  Agregar a grupo: $ sudo usermod -aG docker ${USER} ●  Verificar: $ docker info
  • 18.
    Instalación - MacOS X ●  Instalar vía brew: $ brew install boot2docker && brew install docker ●  Levantar boot2docker $ boot2docker init && boot2docker start ●  Exportar datos de acceso: $ eval "$(boot2docker shellinit)"
  • 19.
    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
  • 20.
    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
  • 21.
    Image, layouts &containers
  • 22.
    Comandos básicos -Linux ●  Estado: $ sudo service docker status ●  Reiniciar: $ sudo service docker restart ●  Parar: $ sudo service docker stop ●  Levantar: $ sudo service docker start
  • 23.
    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
  • 24.
    Crear imagen conDockerfile •  Dockerfile FROM php:5.4-apache MAINTAINER Mario Inga <mario21ic@gmail.com> 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
  • 25.
    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
  • 26.
  • 27.
    Docker-compose Sirve para manejardistintos 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
  • 28.
    Docker-compose ●  Crear archivodocker-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
  • 29.
    Docker-compose ●  Ejecutar elcomando: $ 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
  • 30.
  • 31.
    Nueva estructura delproyecto carpeta_proyecto/ src_proyecto/ .git/ .gitignore Dockerfile docker-compose.yml
  • 32.
  • 33.
    Docker Hub $ dockerlogin $ docker logout
  • 34.