Original article: A beginner’s guide to Docker — how to create your first Docker application

¿Eres desarrollador y quieres empezar con Docker? Este artículo es para ti.

Luego de una corta introducción sobre qué es Docker y por qué utilizarlo, podrás crear tu primera aplicación con Docker.

¿Qué es Docker?

Docker es un software gratuito desarrollado por Docker Inc. Se presentó al público general el 13 de marzo del 2013 y desde entonces se ha convertido en un imprescindible en el mundo del desarrollo informático.

Le permite a los usuarios crear entornos independientes y aislados para desplegar sus aplicaciones. Estos entornos se denominan "contenedores".

Esto le permitirá al desarrollador ejecutar un contenedor en cualquier máquina.

Como puedes ver, con Docker ya no hay problemas de dependencia o compilación. Todo lo que tienes que hacer es lanzar tu contenedor y tu aplización se lanzará inmediatamente.

Pero, ¿es Docker una máquina virtual?

Esta es una de las preguntas más frecuentes sobre Docker. La respuesta es: en realidad, no del todo.

Puede parecer una máquina virtual al principio, pero la funcionalidad no es la misma.

A diferencia de Docker, una máquina virtual incluye un sistema operativo completo. Funcionará de forma independiente y actuará como un ordenador.

Docker solo compartirá los recursos de la máquina anfitriona para ejecutar sus entornos.

Blog.-Are-containers-..VM-Image-1-1024x435
Docker VS Virtual machines (Copyright to Docker blog)

¿Por qué utilizar Docker como desarrollador?

Esta herramienta realmente puede cambiar la vida diaria del desarrollador. Para responder esta pregunta de la mejor manera, he redactado una lista no exhaustiva de los beneficios que encontrará:

  • Docker es rápido. A diferencia de una máquina virtual, tu aplicación puede iniciarse en pocos segundos y detenerse igual de rápido.
  • Docker es multi-plataforma. Puedes lanzar tu contenedor en cualquier sistema.
  • Los contenedores pueden construirse y destruirse más rápido que en una máquina virtual.
  • Se acabaron las dificultades para configurar tu entorno de trabajo. Una vez configurado tu Docker, no tendrás que volver a instalar tus dependencias manualmente. Si cambias de ordenador o si un empleado se incorpora a tu empresa, solo tendrás que darle tu configuración.
  • Mantendrás tu espacio de trabajo limpio, ya que cada uno de tus entornos estará aislado y podrás eliminarlo en cualquier momento sin que afecte al resto.
  • Será más fácil desplegar tu proyecto en tu servidor para ponerlo en línea.

Ahora vamos a crear tu primera aplicación

Ahora que sabes lo que es Docker, ¡es momento de crear tu primera aplicación!

El propósito de este corto tutorial es crear un programa de Python que muestre una oración. Este programa deberá ser lanzado a través de un Dockerfile.

Verás que no es tan complicado una vez que entiendas el proceso.

Nota: No necesitarás instalar Python en tu ordenador. Será el entorno Docker el que contenga Python para poder ejecutar tu código.

1. Instala Docker en tu máquina

Para Ubuntu:

Primero, actualiza tus paquetes:

$ sudo apt update

Siguiente, instala Docker con apt-get:

$ sudo apt install docker.io

Finalmente, verifica que Docker se ha instalado correctamente:

$ sudo docker run hello-world

2. Crea tu proyecto

Para crear tu primera aplicación Docker, te invito a crear una carpeta en tu computadora. Debe contener los siguientes dos archivos:

  • Un archivo ‘main.py’ (un archivo python que tendrá el código a ejecutar).
  • Un archivo ‘Dockerfile’ (un archivo Docker que tendrá las instrucciones necesarias para crear el entorno).

Normalmente, tendrías esta arquitectura de carpeta:

.
├── Dockerfile
└── main.py
0 directories, 2 files

3. Edita el archivo Python

Puedes agregar el siguiente código a tu archivo ‘main.py’:

#!/usr/bin/env python3

print("¡Docker es mágico!")

Nada excepcional, pero una vez que veas en tu terminal "¡Docker es mágico!", sabrás que tu Docker está funcionando.

3. Edita el archivo Docker

Un poco de teoría: lo primero que hay que hacer cuando quieres crear tu Dockerfile es preguntarte qué quieres hacer. Nuestro objetivo aquí es lanzar código Python.

Para ello, nuestro Docker debe contener todas las dependencias necesarias para lanzar Python. Un Linux (Ubuntu) con Python instalado en él debería ser suficiente.

El primer paso para crear un archivo Docker es acceder al sitio web DockerHub. Este sitio contiene muchas imágenes prediseñadas para ahorrarte tiempo (por ejemplo: todas las imágenes para Linux o lenguajes de código).

En nuestro caso, escribiremos ‘Python’ en la barra de búsqueda. El primer resultado es la imagen oficial creada para ejecutar Python. Perfecto, ¡lo usaremos!

# Un archivo docker (dockerfile) comienza siempre importanto la imagen base. 
# Utilizamos la palabra clave 'FROM' para hacerlo.
# En nuestro ejemplo, queremos importar la imagen de python.
# Así que escribimos 'python' para el nombre de la imagen y 'latest' para la versión.
FROM python:latest

# Para lanzar nuestro código python, debemos importarlo a nuestra imagen.
# Utilizamos la palabra clave 'COPY' para hacerlo.
# El primer parámetro 'main.py' es el nombre del archivo en el host.
# El segundo parámetro '/' es la ruta donde poner el archivo en la imagen.
# Aquí ponemos el archivo en la carpeta raíz de la imagen. 
COPY main.py /

# Necesitamos definir el comando a lanzar cuando vayamos a ejecutar la imagen.
# Utilizamos la palabra clave 'CMD' para hacerlo.
# El siguiente comando ejecutará "python ./main.py".
CMD [ "python", "./main.py" ]

4. Crea la imagen Docker

Una vez que tu código esté listo y el Dockerfile está escrito, todo lo que tienes que hacer es crear tu imagen para contener tu aplicación.

$ docker build -t python-test . 

La opción ’-t’ te permite definir el nombre de tu imagen. En nuestro caso hemos elegido ’python-test’ pero le puedes poner lo que quieras.

5. Corre la imagen Docker

Una vez la imagen esté creada, tu código está listo para lanzar.

$ docker run python-test

Tienes que poner el nombre de tu imagen después de un ‘docker run’.

Ya está, eso es todo. Normalmente, deberías ver "¡Docker es mágico!", en tu terminal.

El código está disponible

Si quieres el código completo para encontrarlo fácilmente o ejecutarlo, lo he puesto a tu disposición en mi GitHub.

-> GitHub: Ejemplo de primera aplicación en Docker

Comandos útiles para Docker

Antes de dejarte, he preparado una lista de comandos que te pueden ser útiles en Docker:

  • Lista de imágenes
$ docker image ls
  • Elimina una imagen específica
$ docker image rm [nombre de la imagen]
  • Elimina todas las imágenes existentes
$ docker image rm $(docker images -a -q)
  • Lista todos los contenedores existentes (en funcionamiento y no en funcionamiento)
$ docker ps -a
  • Detener un contenedor específico
$ docker stop [nombre del contenedor]
  • Detener todos los contenedores en funcionamiento
$ docker stop $(docker ps -a -q)
  • Elimina un contenedor específico (solo si está detenido)
$ docker rm [nombre del contenedor]
  • Elimina todos los contenedores (solo si están detenidos)
$ docker rm $(docker ps -a -q)
  • Mostrar los registros de un contenedor
$ docker logs [nombre del contenedor]

Conclusión

Puedes consultar este artículo cada vez que necesites un ejemplo sencillo y concreto sobre cómo crear tu primera aplicación Docker. Si tienes alguna pregunta o comentario, no dudes en preguntar.

Si quieres más contenido como este, puedes seguirme en Twitter, donde tuiteo sobre desarrollo web, superación personal y mi viaje como desarrollador full stack.

Puedes encontrar otros artículos como este en mi website: herewecode.io.