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.

docker execdriver diagram

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 respuestas a “Empezando con docker”

  1. Avatar de Instalando docker en Mac OS X | Jesús L.C.

    […] instalar y empezar a utilizar docker en Mac OS X. Hace unos días estuvimos haciendo una pequeña introducción a Docker y comentamos un poco acerca de como funcionaba. Hoy vamos a intstalarlo en Mac y vamos a terminar […]

    Me gusta

  2. Avatar de A tener en cuenta con Docker – Jesús L.C.

    […] el blog ya hemos hablado de Docker, vimos como instalar Docker en Mac y algunos concepto clave sobre docker así que espero que al menos les hayas echado un vistazo a los post […]

    Me gusta

  3. Avatar de Sacando partido a Docker – Jesús L.C.

    […] a intentar aliviar mi dolor sacándole más partido a Docker. Hace tiempo ya hablamos de Docker y empezamos con Docker tratando el vocabulario básico y poco después vimos como instalar Docker en Mac. Hoy vamos a […]

    Me gusta

Comenta la entrada

Este sitio utiliza Akismet para reducir el spam. Conoce cómo se procesan los datos de tus comentarios.

Jesús López

Soy un Ingeniero en Informática y apasionado de la programación. Me gusta disfrutar de mi familia, viajar y perdernos paseando.  Me mola programar, hacer tests y refactorizar código . Practico Test Driven Development (TDD) y me lo paso bien con el legacy codeLeer más

Sígueme en: