Docker en Windows, macOS y Linux

diferencias-docker-windows-macos-linux
diferencias-docker-windows-macos-linux

En esta lección vas a comparar Docker en Windows macOS y Linux desde un punto de vista práctico. Los comandos pueden parecer iguales, pero el rendimiento, la red, los volúmenes y la integración con el sistema de archivos cambian bastante.

La idea clave es sencilla: Linux ejecuta contenedores Linux de forma nativa, mientras que Windows y macOS suelen apoyarse en WSL 2, Docker Desktop o una máquina virtual Linux. Esa capa extra explica muchos problemas habituales con bind mounts, watchers, localhost, DNS, VPN y consumo de recursos.

👉 Y recuerda, si quieres aprender más de Linux, pincha en este curso de Linux gratis.

🐳 Si quieres aprender más de Docker, pincha en este curso de Docker gratis.

Docker en Windows macOS y Linux

SistemaCómo suele ejecutar contenedores LinuxVentaja principalPunto delicado
LinuxDocker Engine usa el kernel Linux del host.Menos capas y mejor paridad con servidores.Permisos, servicio del daemon y seguridad del socket.
macOSDocker Desktop levanta una VM Linux.Instalación cómoda para escritorio.Bind mounts y consumo de recursos pueden notarse más.
WindowsDocker Desktop suele integrarse con WSL 2.Muy buena experiencia si trabajas dentro del filesystem Linux.Proyectos en C:\Users o /mnt/c pueden ir más lentos.

Si tu producción está en servidores Linux, cuanto más acerques tu entorno local a Linux, menos sorpresas tendrás al desplegar. En Windows eso suele significar trabajar dentro de WSL 2; en macOS, entender los límites de la VM que usa Docker Desktop.

Arquitectura por sistema

Linux

En Linux, Docker usa primitivas del propio kernel: namespaces, cgroups, capabilities y sistemas de archivos en capas. Por eso la experiencia es más directa y suele parecerse más a VPS, servidores y CI/CD.

macOS

macOS no usa kernel Linux. Docker Desktop crea una máquina virtual y ejecuta ahí Docker Engine. Tus contenedores viven en esa VM, aunque edites archivos desde el sistema anfitrión.

Windows

En Windows moderno, el camino más cómodo para contenedores Linux suele ser WSL 2. La recomendación práctica es guardar el proyecto dentro del filesystem de la distribución Linux, no en rutas de Windows si notas lentitud.

# Dentro de WSL 2
cd ~
git clone https://github.com/usuario/proyecto.git
cd proyecto
code .

Filesystem y rendimiento

El rendimiento de archivos es una de las diferencias más visibles. Montar el código del host dentro de un contenedor es habitual, pero no cuesta lo mismo en todos los sistemas.

docker run --rm -v "$PWD":/app -w /app node:20 npm test
  • En Linux, el bind mount suele ser directo y rápido.
  • En macOS, el contenedor cruza la frontera entre host y VM.
  • En Windows con WSL 2, trabajar dentro de ~/proyecto suele ir mejor que usar /mnt/c.
  • Si un watcher no detecta cambios, activa polling solo si hace falta y con intervalos razonables.
  • Evita montar directorios enormes o dependencias generadas si no son necesarias.

Red, localhost y puertos

Publicar puertos se escribe igual, pero internamente puede cambiar. En Linux suele ser más directo; en Docker Desktop hay que conectar host, VM y contenedor.

docker run --rm -p 8080:80 nginx:1.27-alpine
# Desde el navegador del host: http://localhost:8080

Desde el host normalmente entras por localhost. Dentro de un contenedor, localhost apunta al propio contenedor, no a tu máquina. Para llegar a servicios del host, Docker Desktop suele exponer host.docker.internal.

Buenas prácticas según tu equipo

Si usas Linux

Instala Docker Engine, revisa permisos del grupo docker y controla el servicio con systemd. Recuerda que dar acceso al socket de Docker equivale a dar mucho control sobre el host.

Si usas macOS

Usa Docker Desktop, asigna CPU/RAM de forma razonable y evita bind mounts gigantes. Para dependencias pesadas, los volúmenes suelen funcionar mejor que montar todo desde el host.

Si usas Windows

Usa WSL 2, trabaja dentro del filesystem Linux y edita con VS Code Remote WSL si quieres una experiencia cómoda desde Windows.

Errores comunes

  • Pensar que Windows, macOS y Linux tendrán el mismo rendimiento de disco.
  • Guardar el proyecto en una ruta lenta y culpar al contenedor.
  • Creer que localhost significa lo mismo dentro y fuera del contenedor.
  • Montar el socket de Docker dentro de un contenedor sin entender el riesgo de seguridad.
  • Usar Docker Desktop como si fuera obligatorio en servidores Linux.

Lecciones relacionadas del curso Docker

Documentación oficial y recursos

En resumen, Docker no se comporta igual en todos los sistemas porque no todos ejecutan contenedores Linux de la misma forma. Entender esa diferencia te ayuda a elegir dónde guardar el proyecto, cómo montar volúmenes y qué esperar de la red local.

Si vas a trabajar a diario con Docker en Windows macOS y Linux, prioriza paridad con producción, proyectos pequeños de prueba y una configuración clara de recursos antes de culpar al contenedor por cada problema.

Comentarios

No hay comentarios aún. ¿Por qué no comienzas el debate?

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *