La función principal de la plataforma de contenedores de código abierto Docker está explícita en su eslógan: «Build, Ship and Run Any App, Anywhere», lo que significa «construye, distribuye y ejecuta cualquier app en cualquier parte». Concretamente, lo que propone Docker es simplificar las tareas de armar entornos de desarrollo o de prueba que emulen las condiciones de ejecución de una aplicación.
El concepto de contenedor en Docker reemplaza al concepto de máquina virtual, ofreciendo una alternativa más fácil de manejar para el desarrollo y testeo de aplicaciones. La principal diferencia entre una máquina virtual y un contenedor Docker es que la máquina virtual contiene todos los elementos que componen una máquina real: sistema operativo completo, BIOS, memoria, disco y demás recursos de hardware virtualizado.
En cambio, un contenedor Docker es un entorno de ejecuión que empaqueta el código y todas sus dependencias para correr aplicaciones de manera confiable, independientemente del hardware o del sistema operativo en donde se lleva a cabo la ejecución real. Los contenedores Docker son paquetes de software livianos, independientes y ejecutables que incluyen todo lo que puede necesitar una aplicación para ejecutar: código, runtimes, herramientas del sistema, bibliotecas del sistema y configuraciones.
El principal beneficio de utilizar entornos virtuales basados en contenedores Docker es que se pueden ejecutar aplicaciones con diferentes requisitos en forma aislada, sin necesidad de crear máquinas virtuales pesadas y difíciles de administrar.
Además de ahorrar recursos en comparación con la virtualización de hardware tradicional, los contenedores Docker nos permiten instalar aplicaciones multiplataforma en diferentes infraestructuras, sin obligarnos a adaptar la configuración específica de cada host.
Las copias portátiles del software de contenedores Docker se llaman imágenes. Las imágenes contienen las aplicaciones a ejecutar junto con todos los archivos binarios y de configuración más todas las bibliotecas que hagan falta para ejecutarlas.
Las imágenes Docker requieren muy poco del sistema anfitrión. Por este motivo, es fácil transportar un contenedor con todo su contenido entre diferentes máquinas, incluso con diferentes sistemas operativos (Linux, Windows o macOS).
La ejecución de un contenedor se lleva a cabo mediante el motor Docker, o Docker engine, que se encarga de levantar una imagen de docker y ejecutarla. Las imágenes Docker pueden ser creadas por el usuario u obtenidas en un repositorio llamado Docker Hub.
El Docker Hub es una colección de repositorios de imágenes Docker que se ofrece como un servicio basado en la nube. Se puede encontrar en hub.docker.com. En Docker Hub coexisten tanto repositorios públicos como privados.
En los repositorios públicos de Docker Hub, los usuarios pueden subir sus imágenes para compartirlas con toda la comunidad de desarrolladores. Muchas de las imágenes en los repositorios públicos son imágenes oficiales creadas por el equipo de desarrolladores de la plataforma y por proyectos de código abierto consolidados.
En los repositorios privados de Docker Hub, las imágenes pueden ser accedidas por grupos restringidos de usuarios. Por ejemplo, un usuario puede subir una imagen y compartirla con todos los desarrolladores de su misma empresa.
El motor de Docker, o Docker engine, es una suite de software de código abierto, basada en arquitectura cliente-servidor, que permite construir, administrar y utilizar contenedores Docker para ejecutar aplicaciones. Docker engine está formado por los siguientes componentes:
Con el cliente docker es posible ejecutar, detener y administrar contenedores mediante la terminal, ejecutando comandos como docker run, docker build y docker pull. Estos tres comandos se comunican con el proceso dockerd, el cual se encarga de llevar a cabo la instrucción enviada. El cliente y el daemon pueden estar instalados en el mismo sistema, o bien se puede utilizar el cliente para interactuar con el daemon que corre en otro sistema. La comunicación entre cliente y servidor puede llevarse a cabo directamente a través de sockets o mediante una API REST.
El software Docker Engine está disponible para múltiples plataformas, incluyendo varias plataformas Linux, macOS y Windows 10 (o posterior). En estos dos últimos la instalación puede hacerse mediante el paquete de Docker Desktop.
Los pasos para instalar Docker en Windows son bastante sencillos, similares a los de cualquier otro software que se instale en Windows con un asistente:
Docker Desktop no se inicia automáticamente luego de la instalación, por lo que para ejecutarlo es necesario buscar y seleccionar Docker Desktop entre las aplicaciones instaladas en Windows. La primera vez que se ejecuta la aplicación se deben aceptar los términos de licencia y luego hacer clic en Aceptar para continuar. Hecho esto, Docker Desktop se inicializará y luego lanzará automáticamente la Guía de Inicio Rápido.
El Docker Dashboard está disponible para Mac y Windows, brindando un acceso rápido a los registros de los contenedores y un intérprete de comandos dentro del contenedor. Además, permite gestionar fácilmente el ciclo de vida del contenedor (detener, eliminar, etc.).
Para acceder el dashboard, debes seguir las instrucciones del manual de Docker Desktop, con lo cual habrás llegado al punto de ejecutar un contenedor. Ahora probablemente te preguntes ¿qué es un contenedor? Es básicamente un proceso que corre en tu máquina (o en una máquina anfitriona) en forma aislada de todos los demás procesos. Al estar aislado, el contenedor aprovecha los espacios de nombres del kernel y los cgroups – ambas características que forman parte del sistema operativo Linux desde hace años. Usando la DockerAPI o el intérprete de comandos puedes crear, iniciar, detener, mover o eliminar un contenedor.
Los contenedores Docker presentan las siguientes características:
Si has instalado Docker Desktop y quieres explorar más, aquí tienes un ejemplo rápido para empezar:
1. Abre Docker Desktop.
2. Escribe el siguiente comando en tu terminal:
docker run -d -p 80:80 docker/getting-started
3. Abre tu navegador en http://localhost
4. Sigue las instrucciones para acceder a tu dashboard, ya sea en Mac o en Windows.
Deberías ver una pantalla semejante a la que sigue, con un contenedor visible en ejecución. Seguramente el nombre será diferente, ya que es asignado en forma aleatoria, combinando un adjetivo y el nombre de alguna persona famosa.
Si observas el comando anterior, verás algunos flags luego de «docker run» que se utilizan para dejar corriendo al contenedor. Estos comandos hacen lo siguiente:
Luego de ingresar el comendo, Docker reconocerá los flags, ejecutará el comando y buscará la imagen en tu sistema local. Si no tienes ninguna imagen con este nombre en tu sistema, Docker automáticamente lo buscará en Docker Hub, y en caso de encontrarlo, lo ejecutará. Para que tengas una idea, Docker Hub es a Docker lo que GitHub es a Git.
Dado que la imagen docker/getting-started está en Docker Hub, Docker la traerá directamente de allí. También puedes obtener esta imagen con el siguiente comando:
docker pull docker/getting-started
La imagen es una simple aplicación para manejar una lista de tareas escrita en Node.Js, pero para utilizarla como tutorial de Docker no requiere experiencia en JavaScript. Se puede encontrar información detallada en la página del tutorial o haciendo clic en http://localhost luego de ejecutar el contenedor.
Luego de dar los primeros pasos con Docker, es recomendable seguir el tutorial para ahondar en varios aspectos de Docker y Docker Desktop.
Escritor y periodista especializado en tecnología, desde el año 1992.
ASRock, fabricante de motherboards y tarjetas gráficas, anunció el lanzamiento de su nueva generación de…
Moonki, fabricante de soluciones de audio, anunció el lanzamiento y la disponibilidad en el país…
Biwin, empresa especializada en la fabricación de memoria y almacenamiento para computadoras, informó el lanzamiento…
Forza Power Technologies, empresa fabricante de soluciones de energía confiable, anunció el nombramiento de Juan Carlos…
La desarrolladora Whiteboard Games fue seleccionada por Supercell, una de las compañías de videojuegos más…
BIWIN Storage Technology, empresa especializada en la investigación, desarrollo, fabricación y venta de productos de…
Ver comentarios