Saltar al contenido
Lectura7 minPreview

Contenedor vs máquina virtual

Bienvenida

Bienvenido a Su primer contenedor con Docker. Esta píldora es para quien ya se mueve en una terminal y quiere dejar de ver los contenedores como magia, sea de soporte, SOC o desarrollo. Necesita una computadora con Docker Desktop o Docker Engine instalado.

Son cuatro lecciones cortas, un laboratorio en el que levanta nginx con una página escrita por usted y un quiz de 4 preguntas, unos 55 minutos en total. Al terminar sabrá distinguir un contenedor de una VM, correr imágenes oficiales, publicar un puerto solo en local, leer logs y dejar el equipo limpio.

Qué es Docker y por qué importa

Docker empaqueta una aplicación con todo lo que necesita y la ejecuta como un contenedor aislado. La empresa dotCloud lo liberó como software libre en 2013 y popularizó funciones que el kernel Linux ya tenía. Hoy buena parte del software de servidor se entrega así.

A quien defiende le importa por dos lados: levanta herramientas en segundos sin ensuciar su equipo, y le toca revisar contenedores ajenos, donde una imagen dudosa o un puerto mal publicado son una entrada cómoda.

El problema que resuelve

Una aplicación necesita más que su código: versión del lenguaje, librerías, configuración. Basta que una librería cambie entre la laptop y el servidor para oír "en mi máquina sí funciona". El contenedor lleva todo adentro y se comporta igual en cualquier equipo con Docker.

Máquina virtual y contenedor

Una máquina virtual (VM) simula hardware y corre un sistema operativo entero, con su propio kernel: pesa gigabytes y tarda en arrancar, pero aísla muy bien.

Un contenedor no simula hardware ni trae kernel. Es un proceso normal del anfitrión al que el kernel le pone paredes: los namespaces hacen que solo vea sus propios procesos, su red y sus archivos, y los cgroups limitan cuánta CPU y memoria puede usar. Pesa megabytes y arranca en menos de un segundo.

Máquina virtual                      Contenedor
+------------------------+           +------------------------+
| App + librerías        |           | App + librerías        |
| SO invitado completo   |           +------------------------+
| con su kernel propio   |           | Motor de contenedores  |
+------------------------+           +------------------------+
| Hipervisor             |           | SO anfitrión y su      |
+------------------------+           | kernel (compartido)    |
| Hardware físico        |           +------------------------+
+------------------------+           | Hardware físico        |
                                     +------------------------+

En Windows y macOS, Docker Desktop crea por debajo una VM Linux pequeña, porque un contenedor Linux necesita un kernel Linux.

Mi regla: si necesita otro sistema operativo, o va a abrir malware, use una VM. Si quiere repetir un servicio, como un servidor web de pruebas, use un contenedor.

Comprobar la instalación

Instale Docker desde https://docs.docker.com y ejecute docker version. Muestra las dos piezas: el cliente (el comando que usted escribe) y el servidor o daemon (el servicio que crea los contenedores).

$ docker version
Client:
 Version:           27.3.1
Server: Docker Engine - Community
 Engine:
  Version:          27.3.1

Si falta la sección Server y aparece este error, el servicio no está corriendo:

Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?

Abra Docker Desktop y espere a que arranque, o en Linux ejecute sudo systemctl start docker. Si el error dice permission denied, su usuario no tiene acceso al socket de Docker: use sudo o pida que lo agreguen al grupo docker, sabiendo que ese grupo equivale en la práctica a ser root en la máquina.