Plantilla:Docker/conceptosGenerales

Qué es docker

 * Docker es una empresa que ofrece una tecnología de virtualización basada en contenedores.
 * Surge en 2013 y actualmente la compañía se llama Moby Proyect
 * Entre otras, en la idea inicial, surgió usar un sistema operativo,  pudiendo hacer instantáneas de él, igual que los commit de git y pudiendo en cualquier momento recuperar el sistema operativo a un determinado instante.
 * Para ello se usó en concepto de contenedor  un programa que virtualiza un determinado sistema operativo, pero solo el software. de este contenedor podemos comitear a imágenes nuevas en cualquier momento. una imagen concreta levanta un contendor de forma muy rápida (cuestión de segundos o menos....). En cada commit solo se guardan los cambios realizados desde el commit anterior.

Cómo actúa Docker en una máquina anfitriona

 * El elemento funcional u operativo de en un sistema basado en docker es el contenedor

Qué es un contenedor
Imagen:Docker_distancia_1.png


 * No se virtualiza el sistema operativo  entero, solo los servicios que queremos usar con sus dependencias (Esta es la idea de un contenedor)
 * El kernel del sistema operativo es compartido con el host anfitrión dónde el contenedor es ejecutado.
 * Con todo ello conseguimos:
 * Un sistema muy ligero, tanto en peso como en ejecución. Esto se consigue, ya que en realidad lo que voy almacenando en el contenedor son las diferencias respecto a una imagen o al kernel del sistema operativo, no tengo una réplica de todo como ocurre en una máquina virtual. Utilizo todo del sistema dónde me alojo y tengo en cuenta la peculiaridades o diferencias que he agregado en el contenedor que estoy ejecutando.
 * Totalmente portable: podemos desplegar un contenedor en cualquier otro anfitrión o máquina que soporte esa tecnología. El contenedor lo podemos llevar en un fichero tar
 * Es seguro, el docker está encerrado en un chroot, podemos asegurar las versiones de nuestros servicios y sistema operativo.
 * Muy flexible y de fácil adaptación con el exterior: es muy cómodo y sencillo pasar ficheros entre el contenedor y el host. Se puede mantener un volumen que sea compartido por ambos sistemas de ficheros (el del host y el del contenedor).

Vitualización basada en contenedores Vs Máquinas virtuales
Imagen:Docker_distancia_MV.png
 * Un sistema de virtualización basado en docker es muy diferente de un sistema basado en máquinas virtuales
 * En ambos perseguimos el objetivo de tener un sistema operativo diferente e independiente de la máquina anfitriona donde desplegamos la virtualización. Pero el método de conseguirlo es totalmente diferente.


 * Observamos en la imagen, como cada máquina virtual implementa la parte del hardware como parte de la máquina virtual, incluso reservando recursos físicos de la máquina anfitriona para cada máquina virtual.
 * Arrancar cada máquina puede constar minutos, al igual que cuando arrancamos físicamente nuestro equipo
 * Como ventaja tenemos realmente una máquina independiente, pero perdemos la flexibilidad, velocidad y ligero de un contenedor, no tiene nada que ver.

Docker en el desarrollo web
Imagen:Docker_1.jpg
 * Es una manera de que el desarrollador tenga justo lo que necesita, sin alterar el sistema o host principal dónde desarrolla