Acerca del proyecto
Antes de empezar a trabajar con docker, descargar las imágenes y crear nuestros propios contenedores, debemos tener clara la definición y las características que posee esta plataforma. En este post vamos a dar la definición de docker sus principales características y qué se puede hacer con este programa, adicionalmente vamos a dejar los links de las siguientes definiciones para que también las puedan leer antes de iniciar con el curso.
Conocimiento previo
Para realizar este proyecto se requiere conocimiento previo de los siguientes temas, si aun no has trabajado con lo que se menciona en la siguiente tabla, allí están los links a los post para que puedas dar un repaso adicional o puedas recordar el conocimiento necesario para poder realizar este proyecto.
Proyecto | Descripción |
---|---|
Introducción docker | Iniciamos con docker, donde conoceremos los temas que vamos a trabajar en este curso, aprenderemos a usar este gestor de contenedores con todas sus funcionalidades, ademas realizaremos ejercicios prácticos para reforzar el conocimiento aprendido. |
¿Qué es un contenedor? | ¿Qué es un contenedor de docker?, lo podemos definir como una forma de limitar los recursos para una aplicación, donde solo va a contener sus librerías, configuraciones, entre otros. En este post explicamos a detalle los contenedores. |
¿Qué es una imagen en docker? | ¿Qué es una imagen en docker?, es un archivo compuesto por múltiples capas, que se utiliza para ejecutar código en un contenedor de docker. En este post aprenderás la definición y como usar las imagenes para crear contenedores. |
¿Qué es Docker?
Docker es un proyecto de código abierto que automatiza el despliegue de aplicaciones [1] en un contenedor, su principal característica es el aislamiento de recurso kernel de linux tales como cgroups y espacios de nombre para que los contenedores sean independientes y se ejecuten en una sola instancia de linux.
La idea detrás de docker es crear contenedores para las aplicaciones se pueda ejecutar en cualquier máquina que contenga docker[2], independientemente del sistema operativo que se encuentre instalado.
Como mencionamos anteriormente, docker crea contenedores, pero ¿qué son?, un contenedor es envolver software en un completo sistema de archivos que contiene lo necesario para ejecutar una aplicación, como por ejemplo: código, herramientas del sistema, librerías o lo que pueda instalar en un servidor.[3]
Los contenedores incluyen la aplicación y todas sus dependencias, además comparten el kernel con otros contenedores. Cada contenedor se ejecuta como un proceso aislado en el espacio de usuario del sistema operativo huésped.
Docker es una plataforma de contenedores que permite ejecutarse en Windows Linux y Mac os, lo que nos permiten la facilidad de poder ejecutar cualquier contenedor en cualquier plataforma ya que va utilizar un fichero de definición dockerfile, las instrucciones necesarias para crear dicho contenedor el cual va a contener la imagen base del programa que usemos, las librerías, el comportamiento que va a realizar, la aplicación y muy importante el Software que nosotros estamos trabajando. Con el archivo dockerfile se ejecuta en los sistemas operativos mencionados anteriormente y eso permite que cualquier contenedor que nosotros creamos pueda ser replicado en cualquier máquina que contenga docker y esa es una de las ventajas grandes que tiene en esta plataforma.
Características de Docker
A continuación podemos encontrar las principales características de Docker.
- Docker implementa una API de alto nivel para proporcionar contenedores livianos.
- Cada contenedor que se crea y ejecuta corre de manera aislada en el kernel de linux.
- Los contenedores son más livianos que las máquinas virtuales.
- No es necesario instalar un sistema operativo por cada contenedor.
- Capacidad para desplegar multitud de contenedores en un mismo equipo físico.
- Capacidad Multi-sistema, podemos desplegar nuestro sistema en múltiples plataformas.
- Podremos compartir nuestros contenedores para aumentar los repositorios de Docker.
¿Qué se puede hacer con Docker?
Con Docker podemos crear diferentes entornos de trabajo y poderlos desplegar en cualquier otro sistema que soporte esta tecnología con lo que podemos ahorrarnos tiempo y recursos al tener que instalar todas las características de la app que estamos trabajando.
Un ejemplo que podemos usar es un entorno de trabajo para desarrollo de una aplicación en python con servidor ngnex, si hacemos esto en un ambiente convencional, necesitaríamos instalar cada aplicación y paquete por separado, ademas cada desarrollador que desee trabajar con nuestra aplicación tendría que instalar el mismo entrono de trabajo. Con docker podemos crear un contenedor con todo el entorno de trabajo y las configuraciones que tendrá nuestro proyecto, luego creamos la imagen y esta la podemos compartir a nuestro equipo de trabajo.
¿Cómo funciona Docker?
En principio contamos con una imagen base la cual es un kernel de linux, la principal caracteristica de los grupos de control y los espacios de nombre es separar los procesos para que se ejecuten de forma independiente con sus propios recursos.[4]
Arquitectura de docker
Observemos la siguiente imagen, la cual está mostrando la comparación de un sistema tradicional de virtualización con la virtualización que utiliza docker.
Podemos observar que el sistema tradicional de virtualización utiliza un sistema operativo el cual se le instala un hypervisor, este se le instala el software para las maquinas virtuales las cuales se encuentran el siguiente nivel, cada aplicacion requiere su propia maquina, así que al tener varias aplicaciones por separado, vamos a tener varias maquinas virtuales. Ahora a cada VM se le instala el sistema operativo huésped y de ahí realizamos la configuración y carga de paquetes, librerías, entre otros para que la aplicación funciones en las VM.
Con el nuevo sistema de virtualización lo único que tenemos que hacer es instalar docker en el sistema operativo que vayamos a trabajar, cómo docker ya cuenta con sus características y funcionalidades para separar cada contenedor por medio de nombres de grupo, que hemos explicado en este post, lo único que tenemos que hacer es descargar la imagen o utilizar un dockerfile para crear un contenedor y en este ejecutar la aplicación o el servicio.
Referencias
[1] Docker Wikipedia, Tomado de https://es.wikipedia.org/wiki/Docker_(software), Consultado Diciembre 2017
[2] javiergarzas, Tomado de http://www.javiergarzas.com/2015/07/que-es-docker-sencillo.html, Consultado Diciembre 2017
[3] html5facil, Tomado de http://html5facil.com/tutoriales/intro-docker-contenedor/, Consultado Diciembre 2017
[4] openwebinars, Tomado de https://openwebinars.net/blog/docker-que-es-sus-principales-caracteristicas/, Consultado Diciembre 2017