Inicio > Aplicación, Artículos, Contenedores, Docker > 1 – Introducción a Docker. ¿Qué es y cómo nos puede ayudar?

1 – Introducción a Docker. ¿Qué es y cómo nos puede ayudar?

lunes, 30 de septiembre de 2024 Dejar un comentario Ir a comentarios
Share Button

Introducción

La idea es crear una serie de entradas para exponer desde cero, qué es Docker, cómo nos puede ayudar a nosotros como desarrolladores y explicar todo el proceso desde cero hasta poderlo utilizar. Empezaré por la instalación y posteriormente veremos cómo configurar un par de ejemplos diferentes (desde la instalación hasta su utilización).

Para todo esto necesitaremos varias entradas. Os iré completando la lista de links a medida que vaya escribiendo cada una de ellas.

¿Qué es Docker?

Hay muchas definiciones en internet sobre docker, si las revisamos incluyen palabras como, contenedores, virtualización, opensource, plataforma, aplicaciones, imágenes,… Todas ellas tienen que ver con el concepto, pero para empezar a entenderlo tal vez son demasiadas…

Al final, si lo tengo que definir con mis propias palabras de la forma más sencilla posible(y seguramente no será la más correcta), sería algo así como:

«Es una plataforma que me permite ejecutar aplicaciones de forma virtualizada. Sería equivalente a tener una máquina virtual, pero sólo para una aplicación.»

Virtualización

De las palabras y de la definición anterior para entender docker, creo que esta es la más importante: Virtualización.
A día de hoy es raro que, como programadores no hayamos trabajado con algún tipo de virtualización. Ya sean máquinas virtuales «completas» como VirtualBox, VMWare, Parallels, etc. O con algún tipo de SandBox como las que traen algunos antivirus o la propia de las últimas versiones de Windows.

A partir de un problema tenemos diferentes solucionesSi estamos familiarizados con esto, nos será fácil entender Docker como la virtualización de una aplicación (pensemos por ahora en una sóla).
Lo intento explicar con un ejemplo:

PROBLEMA:
Yo como programador necesito trabajar con 3 versiones de SQLServer: 2014, 2017 y 2022, porque son las que tienen mis clientes y necesito poder ejecutar/probar/testear mi aplicación con todas ellas.

SOLUCIONES:

  • Solución 1: Tener instaladas en mi máquina (y en las del resto de programadores del equipo) las 3 versiones de SQLServer.
  • Solución 2: Trabajar con máquinas virtuales. Una para cada versión de SQLServer. Necesitaré 3 máquinas virtuales.
  • Solución 3: Trabajar con Docker y tener 3 contenedores, uno para cada versión de SQLServer.

Digamos que las tres soluciones anteriores nos funcionarán y podremos gestionar nuestras necesidades, pero que de arriba hacia abajo, cada una de ellas es más «fina»; Más «eficiente» en muchos sentidos; De las tres, la tercera tiene las siguientes ventajas:

  • Memoria/Costes: Será la que requiere menos memoria a utilizar en nuestro equipo (y eso se traduce en recursos y dinero).
  • Rapidez: La más rápida a la hora de tener un entorno que necesitamos disponible en cada momento.
  • Limpieza/Aislamiento: Junto con la segunda (a partes iguales) son las que mantienen mi máquina de desarrollo más «limpia» de diferentes versiones de software.
  • Portabilidad: Junto con la segunda es la que nos aporta mayor portabilidad, ya que más sencillo replicar los entornos necesarios.

Conceptos básicos

Una vez tenemos claro (o un poco), qué es Docker como idea, vamos a completar con una serie de conceptos que están relacionados con esta idea.

  • Docker/Docker Desktop: El programa principal y la herramienta visual en Windows (en nuestro caso) para gestionar nuestros contenedores y/o imágenes. Si pensamos en otros programas sería como Word (que nos permite gestionar Documentos de texto) o Excel (que nos permite gestionar hojas de cálculo).
  • Imagen (plantilla): Es el programa que queremos «virtualizar». En el ejemplo anterior, si yo necesito tener 3 versiones de SQLServer (2014, 2017, 2022), necesitaré 3 imágenes correspondientes a estas tres versiones.
    Esta imagen será la que utilizaré para crear el contenedor «final».
  • Contenedores (instancia): Las instancias reales de mis imágenes que yo voy a crear para trabajar con ellas. Por ejemplo, una vez que yo tengo una imagen para trabajar con SQLServer 2014, puedo necesitar crear 2 contenedores «reales» para trabajar:
    • SQLServer 2014 con Idioma Inglés (Estados unidos) y collation Latin1_General_CI_AI
    • SQLServer 2014 con Idioma Español (España Internacional) y collation Modern_Spanish_CI_AS

De esta forma, de una misma imagen, puedo acabar generando N contenedores, que realmente son los que voy a trabajar.

.

Instalación de Docker Desktop

Llegados a este punto vamos a descargar e instalar la última versión de Docker desde la propia página.
Seleccionamos la instalación de Windows y realizamos la instalación con las opciones por defecto.

Una vez finalizada la instalación os pedirá reiniciar la máquina y Docker Desktop os solicitará vuestro usuario para realizar un Login. Podéis crearos una cuenta en https://www.docker.com/ o continuar sin ella.

La imagen de «Docker Desktop» al iniciar es la siguiente:

NOTA: En la imagen aparece «Engine stopped», no es lo habitual ni lo que veréis si no hay ningún problema. Lo habitual es que una vez iniciada el «engine» ya quede arrancado.

A partir de este punto, ya podemos empezar a trabajar con Docker, pero eso será en la siguiente entrada, esta finaliza aquí.
Como siempre los comentarios, sugerencias y críticas son bienvenidas.

Hasta la próxima.

5/5 - (3 votos)
Subscribe
Notify of
guest

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

2 Comments
Inline Feedbacks
Ver todos los comentarios
David
David
14 days ago

¡Muy interesante, Germán! Esperando más sobre Docker en el futuro. :-)

2
0
Would love your thoughts, please comment.x
()
x