Docker introducción - Flisol 2015 Huancayo
-
Upload
mario-j-inga-cahuana -
Category
Engineering
-
view
369 -
download
1
Transcript of Docker introducción - Flisol 2015 Huancayo
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
¿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
Instalación - Prerequisitos
● Linux Kernel 3.8+
- Namespaces: para manejo de procesos
- Cgroups: gestión de recursos
● AUFS
● *LXC
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
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
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
Nueva estructura del proyecto
carpeta_proyecto/ src_proyecto/ .git/ .gitignore Dockerfile docker-compose.yml