Docker esta de moda, pero ¿qué es docker? Hace tiempo estuvimos hablando de Vagrant y de como provisionar máquinas utilizando Chef hoy vamos a ver que es Docker y como empezar a utilizarlo en Mac OSX.
¿Qué es Docker?
Docker es un proyecto Open Source que automatiza el despliegue de aplicaciones dentro de contenedores. Docker aisla permite aislar recursos del kernel con lo que se permite que «contenedores» independientes se ejecuten en una única instancia de Linux, evitando la sobrecarga de iniciar varias máquinas virtuales.
Para que nos entendamos lo que hacemos con Docker es crear un «contenedor» donde instalamos el software que necesitemos ejecutar. Ese contenedor comparte recursus con la maquina donde se lanza, pero a la vez es independiente. Con esto conseguimos poder portar nuestras apps sin necesidad de instalar nada en una nueva maquina.
¿Qué diferencia hay entre docker y Vagrant?
Docker y Vagrant son diferentes. Docker es ligero al compartir el kernel, pero mantiene aislado cada contenedor. Por otro lado Vagran es un gran herramienta para aprovisionar automáticamente múltiples másquinas virtuales, pudiendo configurar dichas máquinas utilizando Chef, Puppet,…
la jerga de Docker
Cuando empecé a leer sobre docker, encontré mucha terminología, muchas palabras que no terminaban de cuadrarme, así que aquí dejo un pequeño «diccionario sobre docker»:
Principalmente hay 2 términos que se manejan en docker, images y containers (contenedores), además también tenemos otros términos como links, o volumenes
- Images: Una imagen es una especie de «maquina virtual» pero más ligera.
Crear una imagen es fácil, tan solo tenemos que seguir unos sencillos pasos http://docs.docker.com/articles/baseimages/, aun más fácil es utilizar imágenes de otras personas y modificarlas. Creando así imágenes hijas.
Aquí tenemos el repositorio oficial de imágenes de Docker. Si necesitamos «tunear» una imagen tan solo tenemos que editar su Dockerfile para realizar los cambios. -
Containers: Es el dicrectorio que contiene toda tu aplicación.
-
Dockerfile: Script que automatiza el proceso de construir la imagen. En este script indicamos que necesitamos instalar en nuestro contenedor.
-
Volumenes: Son una serie de datos que Docker guarda fuera del contenedor para poder persistir los datos de la aplicación. Los volúmenes son diferentes en cada contenedor aunque pueden compartirse, con lo que podríamos compartir datos entre 2 contonedores 🙂
-
Link: Como hemos comentado antes, los contededores de Docker pueden compartir información, De la misma forma estos contenedores también pueden comunicarse. De esta manera podemos crear un contenedor donde ejecutar una app de Laravel (por ejemplo) y crear otro contenedor donde ejecutar la base de datos.
Conclusiones sobre Docker
Docker es una plataforma en la que podemos ejecutar nuestras aplicaciones de manera sencilla. Así haremos que nuestras aplicaciones sean portables y evitaremos problemas de versiones entre los distintos entornos de reproducción, producción,…
De la misma manera al utilizar contenedores podemos escalar nuestras aplicaciones de manera sencilla, ya que solo tenemos «levantar» nuevos contenedores.
3 comentarios en “Empezando con docker”