Docker

Organización de los ejercicios

Sólo hay una página de ejercicios de Docker:

Contenedores: Docker

Logotipo Docker

Docker es un sistema de virtualización de aplicaciones mediante contenedores, creado por Solomon Hykes y otros ingenieros. En 2013 se convirtió en un proyecto de software libre (licencia Apache) en el que participan cada vez más empresas. La versión 1.0 se publicó en junio de 2014 y ha tenido un desarrollo muy rápido.

A partir de marzo de 2017, Docker quiere publicar una nueva versión cada mes y ha cambiado su numeración al formato AA.MM (año y mes). Estas versiones se mantendrán solamente durante un mes, aunque habrá una versión trimestral que se mantendrá durante cuatro meses

Docker Actualizado 02-03-2017 2013 2014 2015 2016 2017 2018 0.1 0.5 0.10 1.0 1.1 1.2 1.3 1.4 1.5 1.6 1.7 1.8 1.9 1.10 1.11 1.12 1.13 17.03 17.04

Los contenedores se distinguen de las máquinas virtuales en que las máquinas virtuales emulan un ordenador físico en el que se instala un sistema operativo completo, mientras que los contenedores usan el kernel del sistema operativo anfitrión pero contienen las capas superiores (sistema de ficheros, utilidades, aplicaciones).

Al ahorrarse la emulación del ordenador y el sistema operativo de la máquina virtual, los contenedores son más pequeños y rápidos que las máquinas virtuales. Pero al incluir el resto de capas de software, se consigue el aislamiento e independencia entre contenedores que se busca con las máquinas virtuales.

Los contenedores son útiles en los servidores, pero también para pruebas de software, ya que incluyen todos los elementos que necesitan las aplicaciones, lo que facilita la instalación y elimina los problemas de incompatibilidad de versiones en bibliotecas y aplicaciones auxiliares. También podría utilizarse para la distribución de software en general, pero en ese caso juega en contra la duplicidad que supone el que cada contenedor incluye todas las capas de software.

Docker empezó estando disponible solamente para distribuciones GNU/Linux, pero desde Windows Server 2016 y Windows 10 también está disponible en Windows.

Para utilizar Docker, se debe instalar el Docker Engine, pero Docker ofrece también una serie de herramientas para administrar, distribuir e instalar contenedores: Docker Compose, Docker Machine, etc.


Aunque un contenedor puede incluir cualquier número de aplicaciones, lo habitual es que un contenedor contenga una sola aplicación (y los programas necesarios para ponerse en marcha). Por ejemplo, si una aplicación web guarda la información en una base de datos, en vez de incluir la aplicación y la base de datos en el mismo contenedor, se suelen crear dos contenedores: uno con la aplicación web y otro con la base de datos. Por supuesto, en el contenedor de la aplicación web sí que se incluiría un servidor web.

Para que varios contenedores puedan comunicarse entre sí, Docker permite la creación de redes virtuales privadas en la que se incluyen los contenedores.

Cuando varios contenedores contienen aplicaciones web, los servidores web de cada contenedor en principio entrarían en conflicto puesto que todos atienden al puerto 80. Ese problema se presenta siempre que contenedores distintos incluyen aplicaciones que atienden a través de los mismos puertos (base de datos, etc.). Para resolver este problema, Docker permite que los contenedores escuchen por un puerto cualquiera, aunque internamente el servidor sigue utilizando su puerto habitual. En estos casos se debe utilizar un proxy inverso que redirija las peticiones exteriores al puerto correspondiente.


El proceso de creación de un contenedor incluye varias fases.

No es necesario realizar todas estas fases para crear un contenedor, pues cada vez más podemos encotnrar en Internet imágenes ya preparadas por los creadores de las aplicaciones o por terceros (como Bitnami).

Aprender más

Algunos comandos de Docker

Imágenes

En los comandos siguientes REPOSITORIO es el nombre del repositorio en el que se encuentra la imagen (por ejemplo bitnami/phpmyadmin) e IMAGEN es el nombre de la imagen descargada. Realmente, las imágenes descargadas se llaman igual que los repositorios de donde se han descargado, pero he distinguido los nombres para dejar claro cuándo nos estamos haciendo referencia a la imagen del repositiorio y cuándo a la imagen local.

Contenedores

En los comandos siguientes CONTENEDOR es el nombre del contenedor, que podemos elegir al crearlo, y RED es el nombre de una red ya existente.

Redes

En los comandos siguientes RED es el nombre de la red privada.

Sistema

Contenedores Docker de Bitnami

Los contenedores Docker de aplicaciones de Bitnami incluyen únicamente la aplicación, aunque también están disponibles contenedores de aplicaciones de infraestructura (lenguajes de programación, bases de datos, servidores web, etc.).

Actualmente (enero de 2017) el número de contenedores que ofrece Bitnami es bastante menor que el que ofrece en forma de instaladores (unas 50 aplicaciones frente a unas 150 aplicaciones).

Los contenedores de Bitnami están creados por una herramienta llamada Stacksmith que Bitnami ofrece para crear contenedores personalizados.