Docker ofrece ventajas clave para el desarrollo y despliegue de aplicaciones, especialmente cuando necesitas portabilidad, consistencia y eficiencia. Estas son las principales ventajas de usar Docker:
- Portabilidad total: Los contenedores Docker encapsulan la aplicación junto con todas sus dependencias, lo que permite ejecutarla en cualquier sistema que tenga Docker instalado, independientemente del sistema operativo o la configuración de la máquina anfitriona
- Aislamiento: Cada aplicación corre en su propio contenedor, lo que evita conflictos entre diferentes aplicaciones o versiones de librerías. Esto facilita el desarrollo de múltiples proyectos en paralelo y mejora la seguridad.
- Consistencia de entornos: Docker elimina el clásico problema de «funciona en mi máquina» porque garantiza que el entorno de desarrollo, pruebas y producción sean idénticos para todos los usuarios y equipos.
- Eficiencia en el uso de recursos: Los contenedores son mucho más ligeros que las máquinas virtuales tradicionales, ya que no requieren un sistema operativo completo para cada instancia. Esto permite ejecutar más aplicaciones en el mismo hardware, ahorrando recursos y costes.
- Escalabilidad y rapidez: Es fácil escalar aplicaciones añadiendo o eliminando contenedores según la demanda. Además, los contenedores se inician en segundos, acelerando el despliegue y la respuesta ante cambios o picos de trabajo.
- Automatización y DevOps: Docker se integra perfectamente con flujos de trabajo DevOps y herramientas de CI/CD, facilitando la automatización de pruebas, despliegues y actualizaciones de aplicaciones.
- Control de versiones y modularidad: Docker permite versionar imágenes, retroceder a versiones anteriores y reutilizar componentes, facilitando el mantenimiento y la colaboración en equipos grandes
- Facilidad de colaboración: Los equipos pueden compartir imágenes Docker preconfiguradas, asegurando que todos trabajen en el mismo entorno y reduciendo errores por diferencias de configuración.
En resumen, Docker te permite desarrollar, probar y desplegar aplicaciones de forma más rápida, consistente, eficiente y segura, facilitando la colaboración y la portabilidad entre diferentes sistemas y equipos.
Aquí vamos a ver paso a paso para implementar la solución híbrida WSL 2 + Docker de un entorno funcional en Ubuntu y que tiene instalado NILMTK, NILMTK-CONTRIB y NILMTK-METADATA:
📦 Paso 1: Exportar entorno Ubuntu desde máquina física
1.1 Preparar sistema Ubuntu
# En tu máquina física Ubuntu:
sudo apt update && sudo apt upgrade -y
sudo apt install docker.io tar -y
sudo systemctl enable docker
1.2 Crear imagen Docker del entorno
# Crear Dockerfile
cat <<EOF > Dockerfile
FROM ubuntu:22.04
RUN apt update && apt install -y python3.8 python3-pip \
&& pip install nilmtk==0.4.3 nilm_metadata==0.2.4
EOF
# Construir imagen
sudo docker build -t nilmtk-env .
1.3 Exportar imagen Docker
sudo docker save nilmtk-env > nilmtk-env.tar
🖥️ Paso 2: Configurar WSL 2 en Windows 11
2.1 Habilitar WSL 2
powershell# Ejecutar como Administrador
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
wsl --set-default-version 2
2.2 Instalar distribución Ubuntu
powershellwsl --install -d Ubuntu-22.04
🔄 Paso 3: Importar entorno a WSL 2
3.1 Transferir archivo .tar
bash# Desde Ubuntu físico:
scp nilmtk-env.tar usuario@windows:/mnt/c/Users/tu_usuario/
3.2 Importar imagen en WSL 2
bash# En WSL Ubuntu:
docker load < /mnt/c/Users/tu_usuario/nilmtk-env.tar
🐳 Paso 4: Configurar Docker Desktop
4.1 Instalar Docker Desktop
- Descargar desde docker.com
- Instalar con opción WSL 2 backend activada
4.2 Integrar WSL 2
- Abrir Docker Desktop
- Ir a Settings > Resources > WSL Integration
- Activar integración con Ubuntu-22.04
:/nilmtk \
--gpus all \
nilmtk-env \
bash
5.2 Verificar instalación
bash# Dentro del contenedor:
python3 -c "import nilmtk; print(nilmtk.__version__)"
# Debe mostrar: 0.4.3
textgraph TD
A[Windows 11] --> B[WSL 2 Ubuntu]
B --> C[Docker Desktop]
C --> D[Contenedor nilmtk-env]
D --> E[VS Code]
Comandos útiles:
| Función | Comando |
|---|---|
| Acceder WSL | wsl -d Ubuntu-22.04 |
| Limpiar memoria | wsl --shutdown |
| Ver recursos | docker stats |
⚠️ Solución de problemas comunes
Error: «WSL integration not available»
powershellwsl --update
Restart-Service LxssManager
Error: «GPU not detected»
- Actualizar drivers NVIDIA
- Instalar WSL CUDA support
Espacio en disco insuficiente
bash# Compactar VHDX de WSL
wsl --shutdown
diskpart
select vdisk file="C:\Users\tu_usuario\AppData\Local\Packages\...\ext4.vhdx"
attach vdisk readonly
compact vdisk
detach vdisk
exit
Con este setup tendrás un entorno 100% funcional de NILMTK en Windows 11, combinando lo mejor de WSL 2 y Docker. 🐧+🪟=💥
Debe estar conectado para enviar un comentario.