Transforma tu PC en un centro de servicios instalando Docker Desktop

  • Docker permite empaquetar y ejecutar servicios en contenedores ligeros, aislados y reproducibles, reduciendo la complejidad del sistema host.
  • Docker Desktop y WSL 2 convierten un PC con Windows en un entorno capaz de ejecutar contenedores Linux y Windows desde una misma interfaz.
  • Windows Server puede usar Docker como base para modernizar aplicaciones heredadas y desplegar servicios web o de infraestructura de forma eficiente.
  • La combinación de Docker, Docker Hub y VS Code facilita crear, versionar y compartir imágenes para convertir cualquier máquina en un centro de servicios flexible.

Transforma tu PC en un centro de servicios instalando Docker Desktop

Convertir un PC con Windows en un auténtico centro de servicios usando Docker Desktop es hoy en día una de las formas más rápidas y flexibles de montar servidores web, bases de datos, aplicaciones internas o incluso tu propia nube en casa o en la oficina. En lugar de llenarlo de programas instalados “a pelo”, puedes aislar cada servicio en un contenedor y levantarlo o tirarlo abajo en cuestión de segundos.

Docker nació en Linux pero el ecosistema de Windows se ha puesto las pilas: gracias a Docker Desktop, WSL 2 y el soporte de contenedores nativos de Windows Server, es posible ejecutar tanto contenedores Linux como Windows en la misma máquina, desarrollar desde VS Code dentro de contenedores, modernizar aplicaciones heredadas .NET e incluso ofrecer almacenamiento tipo nube a familiares y amigos sin volverte loco con configuraciones interminables.

Qué es Docker y por qué usarlo como base de tu centro de servicios

Docker es una plataforma de contenedores de código abierto que permite empaquetar aplicaciones junto con todo lo que necesitan (dependencias, librerías, configuración básica) en unidades ligeras llamadas contenedores. Estos contenedores se ejecutan como procesos aislados sobre el sistema operativo del host, sin tener que arrancar un sistema completo como ocurre con las máquinas virtuales.

La gran ventaja frente a la virtualización clásica basada en máquinas virtuales es que en lugar de tener varios sistemas operativos completos conviviendo, Docker comparte el mismo kernel del host. Eso reduce consumo de RAM y CPU, acelera los despliegues y hace que mover la aplicación de un entorno a otro sea tan simple como llevarte la imagen del contenedor.

En el núcleo de todo está el motor Docker (Docker Engine), una arquitectura cliente-servidor formada por el daemon que corre en segundo plano, una API REST y un cliente de línea de comandos (CLI). Cuando usas comandos como docker build, docker pull o docker run, el cliente habla con el daemon mediante la API y este se encarga de descargar imágenes, crear contenedores, gestionar redes y volúmenes, etc.

Las imágenes Docker son las plantillas inmutables a partir de las que nacen los contenedores: se definen en un Dockerfile de texto y se almacenan por capas (layers). Un contenedor no es más que una instancia en ejecución de una imagen, con su propio sistema de ficheros escribible encima de esas capas de solo lectura.

Docker Hub entra en juego como gran registro en la nube donde encuentras imágenes oficiales (Ubuntu, Nginx, MySQL, IIS, .NET, Windows Server Core, etc.) y también repositorios públicos y privados de la comunidad y de tu propia organización. Está accesible vía web y también desde la CLI con comandos como docker pull o docker push.

Transformar un PC con Windows 10/11 en un entorno Docker con Docker Desktop

PC como centro de servicios con Docker

Si usas Windows 10 o Windows 11, Docker Desktop es la puerta de entrada más sencilla para montar tu centro de servicios. Es una aplicación para escritorio que incluye el motor Docker, herramientas gráficas para gestionar imágenes y contenedores y toda la integración con WSL 2 para ejecutar contenedores Linux con un rendimiento prácticamente nativo.

Docker Desktop está disponible en edición Community (gratis para uso personal y pequeñas empresas) y en ediciones de pago para equipos y empresas más grandes. En la mayoría de escenarios domésticos o de laboratorio vas sobrado con la edición gratuita, que ya permite construir, ejecutar y publicar imágenes sin limitación práctica.

Para poder instalar Docker Desktop hay que cumplir varios requisitos previos: disponer de Windows 10/11 Professional o Enterprise de 64 bits, tener soporte de virtualización por hardware habilitado en la BIOS/UEFI (Intel VT-x o AMD-V) y activar ciertas características de Windows como Hyper-V, Containers, Plataforma de máquina virtual y, si quieres usar WSL 2, el Subsistema de Windows para Linux.

La instalación se hace desde la web oficial de Docker, descargando el instalador de Docker Desktop y siguiendo el asistente sin tocar apenas las opciones por defecto. Al terminar suele pedir reiniciar el equipo; tras el reinicio, Docker Desktop se lanzará automáticamente y propondrá habilitar Hyper-V y Containers si aún no lo estaban activos, e incluso forzará un nuevo reinicio para terminar de aplicar los cambios.

Un detalle importante para muchos casos de uso es activar el motor basado en WSL 2 desde el panel de Settings de Docker Desktop, en el apartado General. Además, en la sección Resources > WSL Integration puedes elegir con qué distribuciones de Linux (Ubuntu, Debian, etc.) integrará Docker. Así podrás lanzar comandos Docker directamente desde la terminal de WSL y tener las imágenes y contenedores compartidos.

  EarTrumpet para controlar el audio por aplicación en Windows

Para comprobar que todo está bien instalado, basta con abrir una terminal (PowerShell, CMD o una distro de WSL como Ubuntu) y ejecutar docker --version para ver la versión del cliente. Después puedes lanzar docker run hello-world, lo que disparará la descarga de una imagen mínima de prueba y ejecutará un contenedor que imprime un mensaje de bienvenida.

Instalación y uso de Docker en Windows Server como base de servicios

Si en lugar de un PC de escritorio tienes un servidor con Windows Server, también puedes configurar Docker para montar servicios productivos o de laboratorio. En este caso no se recomienda usar Docker Desktop, sino el runtime de Docker a secas, instalado como servicio de Windows.

Los requisitos mínimos pasan por tener Windows Server 2016 o superior (2019, 2022, 2025), con las últimas actualizaciones aplicadas, acceso como administrador y, si vas a usar aislamiento basado en Hyper-V, soporte de virtualización y al menos 4 GB de RAM. Además, la función Contenedores debe estar habilitada en el sistema.

En Windows Server 2016 puedes seguir la ruta de PowerShell para activar la funcionalidad de contenedores con un comando como Install-WindowsFeature -Name Containers -IncludeAllSubFeature -Restart, que reiniciará el sistema. Después se instala el proveedor DockerMsftProvider y el propio paquete docker con Install-Module e Install-Package, finalizando con un reinicio y una verificación con docker version.

En Windows Server 2022 hay un enfoque aún más cómodo usando un script oficial de Microsoft, descargado con Invoke-WebRequest desde GitHub y ejecutado como administrador. Ese script instala Docker CE como servicio, configura la red por defecto de contenedores y reinicia automáticamente el host.

Tras la instalación, es clave asegurarse de que el servicio Docker arranca automáticamente, para lo que puedes usar Start-Service y Set-Service -StartupType Automatic. Como siempre, un docker run hello-world te confirma que todo responde correctamente y que el servidor está listo para cargar contenedores reales.

La filosofía de trabajo en Windows Server es la misma que en Linux: se descargan imágenes desde un registro (por ejemplo, docker pull nginx) y se levantan contenedores con docker run, exponiendo puertos, asignando nombres y montando volúmenes persistentes. Por ejemplo, docker run -d -p 80:80 --name mi-nginx nginx lanza un Nginx accesible desde el navegador apuntando a la IP del servidor por el puerto 80.

Contenedores Windows: modernizar aplicaciones heredadas con Docker

Aunque la mayoría de despliegues de Docker se basan en Linux, los contenedores Windows tienen un papel clave en empresas con aplicaciones ASP.NET clásicas, IIS o componentes que dependen de APIs específicas de Windows y que no se pueden portar fácilmente.

Microsoft y Docker han colaborado para ofrecer imágenes base oficiales para Windows, disponibles en Docker Hub: Nano Server, Server Core, Windows y Windows Server. Cada una tiene distinto tamaño y conjunto de APIs expuestas; Nano Server es la más ligera, ideal para apps modernas; Server Core da más funcionalidades de servidor; Windows y Windows Server aportan compatibilidad total con la mayoría de APIs.

La forma de trabajar con imágenes Windows es muy similar a como se hace con Linux. Por ejemplo, puedes buscar imágenes compatibles con docker search windowsservercore y descargar una base con docker pull mcr.microsoft.com/windows/servercore:ltsc2022. Una vez bajada, levantar un contenedor interactivo con PowerShell se reduce a algo como docker run -it mcr.microsoft.com/windows/servercore:ltsc2022 powershell.

Dentro del contenedor la shell por defecto no es bash, sino PowerShell, así que los comandos de administración son los habituales del mundo Windows. Ojo con un detalle que confunde a muchos: al lanzar hostname desde dentro del contenedor verás el ID del contenedor, no el nombre del host físico, aunque el prompt pueda parecer idéntico.

Un caso típico es ejecutar IIS dentro de un contenedor Server Core, montando una carpeta del host como raíz web para que el contenido se mantenga fuera del contenedor. Un comando representativo podría ser docker run -ti -p 8081:80 -v c:\wwwdata:c:\inetpub\wwwroot --name myIISTest mcr.microsoft.com/windows/servercore/iis, que expone el puerto 80 del contenedor como 8081 en el host y mapea la ruta web.

La mentalidad con contenedores Windows debe ser igual que con los de Linux: son desechables. No se parchean “a mano” ni se convierten en mascotas; si algo hay que cambiar, se modifica la imagen y se despliega una nueva versión, sustituyendo contenedores viejos por otros nuevos, lo que simplifica enormemente actualizaciones y rollbacks.

  Conversión de archivos multimedia: sácale el jugo a HandBrake

Docker Desktop + WSL 2: el combo perfecto para desarrollo en Windows

Para desarrollar aplicaciones modernas y luego servirlas desde tu propio “mini datacenter” casero, Docker Desktop con backend WSL 2 y Visual Studio Code es una combinación muy potente. Te permite trabajar como si estuvieras en Linux pero desde Windows, con integración transparente.

El flujo arranca instalando WSL 2 y una distribución como Ubuntu, activando el backend de WSL 2 en Docker Desktop y habilitando la integración con esa distro. Así, desde la terminal de Ubuntu en WSL podrás ejecutar docker ps, docker build o cualquier comando igual que harías en un Linux nativo.

La guinda la pone VS Code con tres extensiones clave: WSL (para abrir proyectos directamente dentro de la distro Linux), Dev Containers (para trabajar dentro de un contenedor como entorno de desarrollo) y Docker (para gestionar imágenes y contenedores desde el propio editor).

El proceso típico sería clonar tu proyecto dentro de la distro WSL —por ejemplo con git clone sobre una app Django—, entrar en la carpeta del proyecto, lanzar code . para abrir esa ruta en VS Code y comprobar en la esquina inferior izquierda que estás conectado al entorno remoto de WSL.

Con Dev Containers puedes reabrir la carpeta en un contenedor de desarrollo, eligiendo una definición preconfigurada (por ejemplo “Python 3” para Django). VS Code generará una carpeta .devcontainer con un Dockerfile y un devcontainer.json, construirá la imagen y levantará un contenedor donde correrá toda la herramienta de desarrollo.

Desde el terminal integrado de VS Code comprobarás que estás realmente dentro del contenedor con comandos como uname (debería devolver “Linux”) y python3 --version, que mostrará la versión de Python definida por el contenedor, no la que tenga tu distribución base de WSL.

Para ejecutar y depurar la aplicación dentro del contenedor basta con configurar una entrada en launch.json desde el menú de ejecución de VS Code (por ejemplo, “Django” en el caso del framework de Python) y lanzar la depuración. El servidor se abrirá en un puerto local (tipo http://127.0.0.1:8000/) y el navegador de Windows accederá a la aplicación que en realidad está corriendo dentro de ese contenedor Linux gestionado por Docker Desktop.

Gestionar, crear y publicar imágenes: de usuario a “chef” de contenedores

Usar imágenes de otros es solo la mitad de la historia; la otra mitad es crear las tuyas para encapsular servicios con tu configuración, tus dependencias y tu lógica de despliegue. Ahí entra en juego el Dockerfile y la gestión de imágenes en Docker Hub.

Un Dockerfile describe paso a paso cómo construir una imagen: se parte de una base con la instrucción FROM (por ejemplo FROM ubuntu:latest o FROM docker/whalesay:latest), se instalan paquetes con RUN, se copian ficheros con COPY, se definen variables de entorno con ENV y se indica el comando por defecto con CMD o ENTRYPOINT.

Cada línea del Dockerfile crea una capa nueva de la imagen, identificada por un ID. Cuando lanzas docker build -t miimagen:1.0 . en el directorio donde está el Dockerfile, el daemon analiza el contexto (archivos disponibles), ejecuta los pasos en contenedores temporales y va generando esas capas hasta obtener la imagen final, lista para ser usada.

Un ejemplo simpático clásico es extender la imagen de prueba “whalesay” para que en vez de decir siempre el mismo texto, use un generador de frases aleatorias como fortune. En un Dockerfile sencillo se partiría de FROM docker/whalesay:latest, se instalaría fortune con el gestor de paquetes correspondiente y se establecería un CMD que ejecute fortune -a | cowsay, logrando que la ballena muestre un mensaje distinto cada vez.

Una vez creada tu imagen personalizada, puedes comprobar su presencia local con docker images o docker image ls, donde verás su repositorio, tag, ID y tamaño. Para iniciar un contenedor bastará con docker run nombreimagen seguido de los parámetros que necesites (puertos, volúmenes, etc.).

Si quieres compartir la imagen con el mundo o con tu equipo, tienes que subirla a Docker Hub. Para ello necesitas una cuenta (Docker ID), crear un repositorio con el mismo nombre en la web y hacer un tag local del tipo docker tag id_imagen usuario/docker-whale:latest. Tras iniciar sesión con docker login, un docker push usuario/docker-whale:latest publicará la imagen en tu espacio de nombres.

  Sincronizar tus dotfiles y configuraciones con Git en cualquier sistema

Es buena práctica usar tags distintos para diferentes versiones de la misma imagen, como :1.0, :2.0 o :stable. Así puedes mantener varias revisiones en el mismo repositorio y elegir cuál desplegar, mientras que proyectos diferentes deben ir en repositorios separados para no mezclar conceptos.

Control del motor Docker y gestión básica de contenedores

Detrás de cualquier centro de servicios basado en Docker está el motor funcionando de forma estable. Sobre todo en Linux (pero también en Windows) es útil conocer cómo se controla el daemon desde el sistema operativo para arrancarlo, pararlo o revisar su estado.

En distribuciones como Ubuntu, Docker se integra con systemd, el sistema de inicio que gestiona servicios. Con systemctl enable docker y systemctl disable docker decides si el servicio se arranca al inicio. Comandos como systemctl start docker, stop o restart te permiten lanzar, detener o reiniciar el daemon cuando haga falta.

Para ver si el servicio está vivo, systemctl status docker da bastante información: mostrará si está activo, el PID principal, posibles errores recientes y los logs asociados. Si el daemon está caído, ningún contenedor arrancará, así que este comando suele ser el primer sitio donde mirar ante problemas.

En cuanto a los contenedores en sí, la gestión básica se apoya en unos pocos comandos. Con docker ps ves los que están activos; añadiendo -a también aparecen los detenidos. Para pararlos se usa docker stop nombre_o_id, para borrarlos docker rm y para eliminar imágenes que ya no necesitas docker rmi.

Inspectores como docker logs y docker stats son mano de santo para solucionar problemas. El primero muestra el log del contenedor (añadiendo -tf con marcas de tiempo y streaming) y se puede redirigir a fichero; el segundo da métricas casi en tiempo real de CPU, memoria y disco por contenedor, útil para detectar cuál se está comiendo los recursos del host.

En entornos Windows con interfaz gráfica, el Windows Admin Center ofrece una extensión de contenedores que permite listar, arrancar, parar y revisar contenedores sin tirar tanto de línea de comandos. Aun así, conviene dominar los comandos Docker básicos, porque son los mismos que usarás en Linux, en servidores remotos o en pipelines de CI/CD.

Integrar servicios reales: web, aplicaciones, nube personal y más

Una vez tienes Docker operativo, tu PC o servidor puede convertirse en un auténtico centro de servicios montando sobre contenedores todo tipo de aplicaciones: servidores web, APIs, bases de datos, herramientas de monitorización o incluso soluciones de almacenamiento en la nube para amigos y familia.

Para servicios web simples, imágenes oficiales como Nginx o Apache son un buen punto de partida. Basta con lanzar contenedores mapeando el puerto 80 o 443 y montando un volumen con tu código o contenido estático. Combinar un contenedor web con otro de base de datos (MySQL, PostgreSQL, MariaDB) es una forma rápida de levantar entornos de prueba o pequeñas webs internas.

En el mundo Windows, IIS en contenedor resuelve muchos dolores de cabeza con aplicaciones heredadas. Empaquetar una app ASP.NET clásica en una imagen basada en Server Core o Windows Server, con sus librerías y configuración, te garantiza despliegues homogéneos entre entornos de desarrollo, test y producción.

En el ámbito doméstico surgen a menudo dudas con el almacenamiento en la nube. Plataformas como Nextcloud son muy potentes pero también exigentes en configuración, y no todo el mundo tiene tiempo o ganas de pelearse con cada detalle. En la práctica, existen contenedores de soluciones más sencillas que, combinadas con Docker y un panel tipo Portainer u OMV, permiten exponer carpetas por la red de forma bastante amigable para usuarios poco técnicos.

Sea cual sea el servicio, la clave es aprovechar la naturaleza desechable y reproducible de los contenedores: cuando quieras actualizar un servicio, construyes una nueva imagen con los cambios, la despliegas y rediriges el tráfico al nuevo contenedor; si algo sale mal, vuelves rápidamente a la imagen anterior sin tocar el host ni depender de instalaciones manuales frágiles.

Un PC con Windows 10/11 o un servidor con Windows Server puede pasar de ser “un ordenador más” a un verdadero centro de servicios modular, soportado sobre Docker Desktop o Docker CE, capaz de ejecutar contenedores Linux y Windows, con pipelines de desarrollo integrados en WSL 2 y VS Code y con herramientas para monitorizar, depurar y escalar servicios sin perderse en laberintos de configuraciones tradicionales.