Sunteți pe pagina 1din 30

Introduccin a

1 | Docker

FLISOL 2016
Quito Ecuador

Luis Fernando Alvear Coronel


(@luchoalco)
http://alvear.ec
2 | Docker

Contenedores

3 | Docker

Contenedores
Son como un directorio, contiene todo lo necesario para que una aplicacin pueda funcionar sin necesidad de acceder a un
repositorio externo al contenedor. Cada uno de stos es una plataforma de aplicaciones segura y aislada del resto que podamos
encontrar o desplegar en la misma mquina host.
Contenedor = namespaces + cgroups + chroot
Namespaces: Vistas de los recursos del SO
Cgroups: Limitan y miden los recursos del SO
Chroot: Cambia el root directory de un proceso

4 | Docker

Contenedor
Los contenedores son
ms livianos que las VMs
No es necesario instalar
un OS por contenedor
Menor utilizacin de
recursos
Mayor cantidad de
contenedores por equipo
fsico
Mejor portabilidad
Menor tiempo de inicio de
5 | Docker
una
instancia

Docker

6 | Docker

Docker
Docker es un proyecto de cdigo abierto.
Automatiza el despliegue de aplicaciones dentro de contenedores de software.
Proporcionando una capa adicional de abstraccin y automatizacin de Virtualizacin a nivel de sistema
operativo en Linux.
Las caractersticas principales de los contenedores son la portabilidad, la ligereza y la autosuficiencia.

7 | Docker

Portabilidad
El contenedor Docker podemos desplegarlo en cualquier otro sistema (que
soporte esta tecnologa), con lo que nos ahorraremos el tener que instalar en este
nuevo entorno todas aquellas aplicaciones que normalmente usemos.

8 | Docker

Ligereza
El peso de este sistema no tiene comparacin con cualquier otro sistema de
virtualizacin ms convencional que estemos acostumbrados a usar.
Cualquier imagen de Ubuntu virtualizado pesar alrededor de 5Gb si contamos
nicamente con la instalacin limpia del sistema.
En cambio, un contenedor con Centos, pesa alrededor de 200Mb, lo que nos
demuestra un significativo ahorro a la hora de almacenar diversos contenedores
que podamos desplegar con posterioridad.

9 | Docker

Autosuficiencia
Un contenedor Docker no contiene todo un sistema completo, sino nicamente
aquellas libreras, archivos y configuraciones necesarias para desplegar las
funcionalidades que contenga.
Adems Docker se encarga de la gestin del contenedor y de las aplicaciones
que contenga.

10 | Docker

Docker Engine en Linux


Distribuciones soportadas (desde repositorios):
Arch Linux
CentOS
CRUX Linux
Debian
Fedora
FrugalWare
Gentoo
Oracle Linux
Red Hat Enterprise Linux
openSUSE and SUSE Linux Enterprise
Ubuntu

Para otros casos podemos instalarlo desde sus binarios

11 | Docker

Instalando Docker

12 |
Docker

Docker Engine en Debian


Versiones soportadas (desde repositorios):
Debian testing stretch (64-bit)
Debian 8.0 Jessie (64-bit)
Debian 7.7 Wheezy (64-bit) (backports requerido)

Prerrequisitos
Sistema operativo base de 64 bits
Versin mnima de Kernel 3.10

13 | Docker

Preparando los repositorios


Habilitamos APT para que use HTTPS
$ apt-get install apt-transport-https ca-certificates
Aadimos una nueva llave GPG
$ apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys
58118E89F3A912897C070ADBF76221572C52609D
Aadimos el repositorio en /etc/apt/sources.list.d/docker.list
deb https://apt.dockerproject.org/repo debian-jessie main

14 | Docker

Instalamos
Actualizamos el ndice de paquetes APT.
$ sudo apt-get update
Instalamos Docker.
$ sudo apt-get install docker-engine
Iniciamos el demonio de Docker.
$ sudo service docker start
Verificamos que haya iniciado
$ sudo docker run hello-world

15 | Docker

Instalando en Windows y Mac OS X

https://www.docker.com/products/docker-toolbox
16 | Docker

Primeros pasos con Docker

17 |
Docker

Imgenes (https://hub.docker.com)
Buscar imgenes
$ docker search ubuntu
Descargar imgenes
$docker pull ubuntu
Listar imgenes disponibles localmente
$docker images

18 | Docker

Ciclo de vida de los contenedores


Ciclo de vida bsico
Se crea el contenedor a partir de una imagen
Se ejecuta un proceso determinado en el contenedor
El proceso finaliza y el contenedor se detiene
Se destruye el contenedor
Ciclo de vida avanzado
Se crea el contenedor a partir de una imagen
Se ejecuta un proceso determinado en el contenedor
Realizar acciones dentro del contenedor
Detener el contenedor
Lanzar el contenedor nuevamente

19 | Docker

Ejecucin Bsica
$docker run ubuntu ls

$docker run ubuntu cat /etc/*release*

20 | Docker

Contenedores interactivos
$docker run -it ubuntu bash
Utilizar las banderas -i y -t en el comando docker run
La bandera -i le indica a docker utilizar el STDIN del contenedor
La bandera -t indica que se requiere de una pseudo terminal
ctrl + PQ -> sale del proceso de bash sin matar el contenedor

exit -> sale y termina la ejecucin del contenedor


docker attach [id] -> unirse a un contenedor que est en ejecucin

21 | Docker

Contenedores como demonio


$docker run -P -d nginx
La bandera -P expone los puertos utilizados por el contenedor
Utilizar la bandera -d para correr de fondo (background) o como demonio

22 | Docker

Acciones sobre un Contenedores


docker stop y docker kill detienen un contenedor en ejecucin
docker start se utiliza para arrancar un contenedor en estado STOPPED o KILLED
La bandera `-a` en docker start se utiliza para adjuntarse automticamente al
contenedor

23 | Docker

Redireccin de puertos especficos


docker run -d -p 8080:80 --name webserver nginx
La bandera -p [puerto en el host:puerto en el contenedor] permite especificar a
qu puerto redireccionar el trfico del puerto interno del contenedor,
--name [nombre] permite especificar un nombre especfico para el contenedor que
se va a construir.

24 | Docker

Volmenes

25 | Docker

Volmenes
Un directorio designado en el contenedor en el cual es persistente, la informacin es
independiente del ciclo de vida del contenedor.
Los cambios en un volmen son excluidos cuando se guarda una imagen
La informacin se persiste aunque se elimine el contenedor
Pueden estn mapeados a un directorio del host.
Pueden compartirse entre contenedores
Las instrucciones`RUN` del Dockerfile no modifican la informacin de los volmenes

26 | Docker

Volmenes
El comando docker volume contiene sub comando para gestionar los volmenes en docker:
docker volume create --name [nombre_volumen]
docker volume ls
docker volume inspect [nombre_volumen]
docker volume rm [nombre_volumen]

Para montar un volmen se utiliza la bandera -v en el comando docker run (puede


utilizarse ms de una vez)
Se pueden montar directorios del host con el formato -v [host path]:[container path]:[ro|rw]
27 | Docker

Que ms?

28 | Docker

Dockerfiles
Provee una forma ms efectiva de generar imgenes
Se integra de manera automtica en el flujo de desarrollo y de integracin continua
Las instrucciones ms utilizadas son FROM y RUN
Una vez construido el Dockerfile, utilizar `docker build` para generar la nueva imagen
El comando docker history muestra las capas de las cuales se encuentra creada una
imagen.

29 | Docker

Preguntas?
GRACIAS
30 | Docker

S-ar putea să vă placă și