Barco con contenedores — una imagen de pixabay

Aprendiendo a usar Docker (parte 1)

Una herramienta que nos permitirá crear y lanzar aplicaciones de una forma muy simple, rápida y súper colaborativa.

Tomás Malio
5 min readOct 20, 2021

--

¿Qué es Docker?

Es un proyecto de código abierto que automatiza el despliegue de aplicaciones dentro de contenedores de software, proporcionando una capa adicional de abstracción y automatización de aplicaciones en múltiples sistemas operativos.

Veamos una definición más simple y fácil sobre qué es Docker:

Una plataforma para crear, correr y lanzar aplicaciones rápidamente.

Con Docker, vas a poder correr cualquier tipo de solución desde cualquier lugar, sin perder tiempo en configurar y leer documentación para poder correrlo en tu respectiva computadora.

¿Qué son los Contenedores o Container?

Un entorno aislado para ejecutar una aplicación 🚀.

¿Cuál es la diferencia entre Docker y una máquina virtual?
Los contenedores que se ejecutan comparten el núcleo del sistema operativo host. Una máquina virtual, por otro lado, no se basa en la tecnología de contenedores. Se componen de espacio de usuario más espacio de kernel de un sistema operativo. En máquinas virtuales, el hardware del servidor está virtualizado.

Beneficios del Container

  • Permite la ejecución de varias aplicaciones de forma aislada
  • Son ligeros
  • Utiliza el sistema operativo del anfitrión
  • Empieza mucho más rápido
  • Necesita menos recursos de hardware

Instalando Docker

Para comenzar, hay que instalar en nuestra computadora Docker, y para ello vamos a ir a la página de Docker ingresando al siguiente link.

Es importante❗️ que sigan la instrucciones de instalación, no es complicado pero puede haber alguna cosa por cada sistema operativo.
Una vez que finalicen la instalación recuerden abrir Docker, y para asegurarse de que está abierto, les tiene que aparecer en la barra de su computador.

Vamos a validar que todo esta bien y para ellos abramos una terminal de nuestros sistema operativo para ejecutar el siguiente comando:

$ docker version
docker version

Si no les aparecen el resultado similar al anterior, significa que no esta corriendo Docker.

Primeros pasos en nuestra aplicación

En la carpeta de la aplicación que deseamos dockerizar, vamos a tener que crear un archivo llamado Dockerfile 😉.

Dockerfile: es importante que este nombre lo recuerden y lo escriban tal cual, la D tiene que ir en mayúscula y ockerfile en minúscula. Este es un error muy común y es por eso que lo menciono.

¿Qué es Dockerfile?

Es un archivo de texto plano que contiene una serie de instrucciones necesarias para crear una imagen, la cual se convertirá en una sola aplicación utilizada para un determinado propósito.

¿Qué contiene dentro el Dockerfile?

  • Un sistema operativo reducido
  • Un entorno de ejecución (ejemplo: Node)
  • Archivos de aplicaciones
  • Bibliotecas de terceros
  • Variables de entorno

Construyendo una aplicación con Docker

Con el objetivo de aprender a armar un proyecto con Docker, vamos a armar un pequeño directorio para poder construir una aplicación de ejemplo:

- hello-docker/
-- app.js

Para poder hacer funcionar está aplicación, lo que tendríamos que hacer es ejecutar el app.js con Node, siempre y cuando estemos dentro del directorio hello-docker.

$ node app.js

Ahora entra Docker en acción, así que veamos cómo podemos hacer para que haga todo esto.

Instrucciones para crear nuestro Dockerfile

Creamos el archivo Dockerfile (sin extensión) y dentro de ese archivo vamos a escribir lo siguiente:

  1. Instalar Node

Primero vamos a traer la imagen de lo que necesitamos. En nuestro casi Node. Si no conocemos los nombres podemos ir a Docker Hub que es donde se encuentran todas las imágenes docker.

FROM node:alpine

2. Copiar los archivos de la aplicación

Luego vamos a copiar los archivos que queramos usar, en nuestro caso vamos a copiar todos a una carpeta que llamaremos app.

COPY . /app

3. Ejecutar node app.js (como lo hicimos anteriormente)

Ahora vamos a ejecutar la aplicación como hicimos en nuestra terminal.

CMD node /app/app.js

Si queremos obviar de estar escribiendo la ruta donde se encuentra la aplicación podemos definir previamente una variable WORKDIR y así siempre lo pondrá delante de nuestros archivos y directorios.

WORKDIR /app
CMD node app.js

¿Cuál es el resultado de nuestro archivo Dockerfile?

FROM node:alpine
COPY . /app
WORKDIR /app
CMD
node /app/app.js

Ya tenemos creado nuestro Dockerfile y ahora vamos a generar el paquete para convertirlo en imagen.
Para ello vamos a la terminal y escribimos lo siguiente:

$ docker build -t hello-docker .

Como pueden ver aparece un -t hello-docker, lo que significa que estamos asignado un tag a nuestra imagen. Por último, el punto (.) significa donde se encuentra el archivo Dockerfile el cual en nuestro caso esta en la misma ruta.

docker build -t hello docker .

Una vez finalizada la ejecución ya estará la imagen generada. Para visualizar las imágenes podemos hacerlo de la siguiente forma.

$ docker image ls
docker image ls

Con esta imagen podemos ejecutarla en cualquier computadora que tenga Docker instalado 😉. Para probar que cualquiera puede utilizar dicha imagen, pueden hacer lo siguiente:

$ docker run hello-docker

El hello-docker es el nombre del tag que hemos elegido anteriormente.

Si deseamos compartir nuestra imagen, podemos subirla a Docker Hub y así poder descargarla desde cualquier lugar. Por ejemplo, vamos a hacer la prueba de cómo sería.

Pueden ingresar en Play With Docker, una página que nos permite probar soluciones de Docker de una forma muy sencilla. Una vez que nos aparezca la terminal, tenemos que descargar la imagen de Docker Hub. Ejemplo:

$ docker pull tomasmalio/hello-docker

Una vez que finaliza podemos validar que esté descargada la imagen haciendo “docker image ls”:

$ docker image ls

De esta forma vamos a ver si se ha descargado la imagen y ahora si podemos ejecutar la aplicación:

$ docker run tomasmalio/hello-docker

Espero que les haya gustado este paso a paso para aprender a utilizar Docker de forma simple, fácil y sencilla.

En la siguiente parte estaremos utilizando más el comando de Docker, qué parámetros se les puede pasar y para luego sumergirnos en Docker Compose.

¡Un saludo!

--

--

Tomás Malio

Ingeniero Informático. CEO & Co-founder — COVREL