Virtualización con Docker: primeros pasos

por:

Virtualización con Docker primeros pasos

Hoy queremos hablaros de Docker un proyecto que cada día es más usado, porque permite desplegar programas en contenedores de software.

¿Qué es y cómo funciona Docker?

Como hemos comentado, Docker es un proyecto Open Source creado y liderado por Solomon Hykes que afronta el problema de la virtualización de servicios y programas. Este tema es muy importante, ya que se busca aprovechar al máximo el recurso disponible (un servidor) para ejecutar los servicios que necesitemos.

El funcionamiento de Docker es distinto a los métodos más comunes que se han utilizado anteriormente, ya que no necesita un sistema operativo invitado para ejecutar sobre él los servicios, sino que lo hace sin este intermediario. Esta tecnología se denomina de contenedores, siendo un contenedor un programa, servicio o sistema que queremos desplegar. Esta arquitectura se puede ver en la siguiente ilustración:

Contenedores de Docker

Al no utilizar máquinas virtuales es capaz de conseguir un mayor rendimiento, ya que el consumo de recursos es menor. Sin embargo, gracias al uso del kernel de Linux es capaz de aislar cada contenedor. Esta decisión también aporta otras características como una mayor seguridad (gracias a estar aislados) o un despliegue más rápido de los recursos.

¿Quién usa Docker?

Muchos se preguntarán, bueno esto parece todo muy bonito, pero realmente se usa o es algo complejo y que no compensa utilizarlo. La respuesta es bastante clara, lo usan los principales proveedores de computación en la nube: Amazon Web Services, Google Cloud Platform, IBM Bluemix, Microsoft Azure …

¿Cómo instalar Docker?

Docker está disponible para los principales sistemas operativos, en mi caso he usado Ubuntu y os dejo los pasos que debéis seguir, para otros sistemas visitad su manual de instalación.

 

sudo apt-get install apt-transport-https ca-certificates
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
sudo echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" >> /etc/apt/sources.list
sudo apt-get update
sudo apt-get purge lxc-docker
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
sudo apt-get install docker-engine
sudo service docker start
sudo docker run hello-world

Estos comandos lo que van a hacer es añadir el repositorio de Docker, instalarlo, arrancarlo y probar que todo funciona correctamente. El resultado de la ejecución será el siguiente:

Docker instalado correctamente

Como se puede ver en la explicación, Docker ha contactado con su sistemas de virtualización, ha bajado la imagen “hello-word” del Docker Hub, ha creado un nuevo contenedor, ha iniciado la imagen y ha mostrado el resultado de la ejecución mediante la terminal.

¿Qué es Docker Hub?

Docker Hub es un repositorio de imágenes para Docker, en él podemos encontrar gran cantidad de imágenes con el software más popular listo para ser ejecutado. Sería similar a un conjunto de máquinas virtuales ya listas, que nosotros en virtual box bajaríamos e importaríamos. Pero en este caso, como ya se ha comentado, no es necesario que a todo software le acompañe un sistema operativo, sino que podemos tener imágenes con un programa como nginx o MySQL.

Docker hub el repositorio de imágenes de docker

 

Ejecutando Debian en un contenedor de Docker

Para el ejemplo práctico, vamos a instalar Debian (una de las distribuciones Linux más ligeras) en un contenedor de Docker. Para ello lo primero es buscar las imágenes disponibles de Debian:

Buscar imágenes de Debian en Docker

Como podemos ver hay muchas, en nuestro caso vamos a utilizar la imagen oficial:

Instalar Debian en Docker

Con ese comando ya hemos bajado una imagen de Debian destinada a ser ejecutada en un contenedor.

Ahora vamos a proceder a ejecutar una serie de comandos en nuestro Debian, para ello iniciamos su contenedor y le pasamos como argumento lo que queremos que ejecute:
Docker ejecutando Debian

En la imagen superior podemos ver cómo nuestro Debian es la versión 8.

 

Ejecuntado Nginx en un contenedor de Docker

Si en lugar de querer ejecutar un Debian completo, sólo necesitamos un servidor web como Nginx podemos ejecutarlo de la siguiente manera:

Docker ejecutando Nginx en un contenedor y sirviendo una página

Lo primero que hago es crear un fichero (index.html) de prueba con el texto “Hola Binarios”, luego mando a Docker que me ejecute un contenedor de Nginx:

  • Con -d indico que la ejecución va a ser autónoma, es decir que no pare de ejecutarse.
  • Con -p indico que quiero reenviar la información que Nginx va a servir por el puerto 80 al 8888, ya que en mi ordenador el puerto 80 ya está ocupado.
  • Con -v indico la carpeta donde están los archivos que quiero que sean servidos y los permisos que tienen.

Finalmente descargo con curl el contenido de la página que se está sirviendo Nginx y muestra el contenido. Esto funciona ya que por defecto si hay múltiples archivos en una carpeta, Nginx sirve el que se llame index.html.

Ahora vamos a modificar el archivo index.html y veremos como el contenido que sirve Nginx es el actualizado:

Docker sigue ejecutando Nginx el cual sirve contenido actualizado

Gestionando Docker con interfaz gráfica

Muchos se preguntarán si la única manera de realizar la gestión de Docker es mediante la terminal, la respuesta es que se puede utilizar también una interfaz gráfica, que no es más que otro contenedor de Docker, el cual podemos ejecutar con:

sudo docker run -d -p 9000:9000 -v /var/run/docker.sock:/docker.sock --name dockerui abh1nav/dockerui:latest -e="/docker.sock"

Ahora visitamos con un navegador web localhost:9000 y tenemos nuestra interfaz gráfica para manejar Docker.

Interfaz gráfica de Docker

Interfaz gráfica de Docker imágenes disponibles

 

Otras cosas que se pueden hacer con Docker son utilizar otros repositorios de imágenes o crear las nuestras propias, pero eso ya se sale del objetivo de este manual. Esperamos que os haya parecido interesante.

Nueva interfaz gráfica para gestionar Docker

La interfaz gráfica anterior ha quedado en un segundo plano y actualmente no está siendo mantenida. Pero ahora, hay otra imagen de referencia, la ofrecida por portainer. Para iniciarla tienes que ejecutar el siguiente comando:

docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock portainer/portainer

Ahora solo tienes que entrar con tu navegador a http://localhost:9000 y verás una pantalla principal donde con un simple vistazo, podrás conocer el estado de toda tu infraestructura Docker

Interfaz gráfica principal para conocer todos los datos de tu infraestructura Docker

 

Un saludo y gracias a @hectorgoan por proporcionarme parte del material de este artículo.

Actualización: He encontrado en GitHub un proyecto llamado Awesome Docker que recoge multitud de recursos para iniciarse y conocer en profundidad todos los aspectos de Docker, lo cual lo convierte en un punto de consulta básico.

The following two tabs change content below.

Jorge Durán

Administrador, redactor y creador de Somos Binarios
Entusiasta de la tecnología desde los 10 años, desarrollador y creador de varios proyectos de software y autodidacta por naturaleza. Ingeniero Informático por la USAL

One Response to “Virtualización con Docker: primeros pasos”

  1. Raul martinez perera

    Estupendo muy bien explicado, un 10

    Responder

Deja una Respuesta