Implementar un sistema macOS dentro de un contenedor Docker exige una configuración precisa para asegurar su funcionalidad y rendimiento. Esta guía técnica analiza detalladamente las variables de antorno del proyecto, ofreciendo ejemplos de configuración y estrategias de optimización.
Resumen de variables de configuración
El proyecto se configura mediante un conjunto de variables de entorno que controlan parámetros fundamentales de la máquina virtual.
| Variable | Valor por defecto | Propósito | Valores aceptados |
|---|---|---|---|
VERSION |
"ventura" | Selecciona la distribución de macOS. | "sequoia", "sonoma", "ventura", "monterey", "bigsur", "catalina", "14", "13", etc. |
CPU_CORES |
"2" | Define el número de núcleos de CPU virtuales. | "1", "2", "4", "8", "16" |
RAM_SIZE |
"4G" | Asigna la cantidad de memoria RAM. | "2G", "4G", "8G", "16G", "32G" |
DISK_SIZE |
"64G" | Establece la capacidad del disco virtual. | "128G", "256G", "512G", "1T" |
BOOT_MODE |
"full" | Controla la resolución de pentalla durante el arranque. | "full", "hd", "default" |
ARGUMENTS |
"" | Envía parámetros personalizados al hipervisor QEMU. | Cualquier argumento QEMU válido. |
Gestión de versiones con VERSION
Esta variable es crucial para definir el sistema operativo objetivo. Se pueden utilizar tanto nombres de código como números de versión principal.
# Especificar por nombre de lanzamiento
VERSION: "sonoma"
# Especificar por número de versión mayor
VERSION: "14"
El sistema mapea internamente los números de versión a los nombres de código correspondientes.
Ajuste de recursos de hardware
Configuración de núcleos de CPU
La variable CPU_CORES determina la potencia de cómputo asignada. Un valor excesivo puede impactar negativamente al host en escenarios de virtualización anidada.
# Asignar cuatro núcleos al contenedor
CPU_CORES: "4"
Asignación de memoria RAM
La cantidad de RAM definida en RAM_SIZE influye directamente en el rendimiento de aplicaciones dentro del sistema macOS.
# Configurar 8 gigabytes de memoria
RAM_SIZE: "8G"
Dimensionamiento del disco virtual
DISK_SIZE permite crear un volumen de almacenamiento inicial. Esta configuración también puede utilizarse para expandir un disco existente sin pérdida de datos.
# Crear un disco de 256 gigabytes
DISK_SIZE: "256G"
Modos de visualización con BOOT_MODE
El modo de arranque establece la resolución de pantalla predeterminada de la máquina virtual.
| Modo | Resolución | Características |
|---|---|---|
full |
1920x1080 | Alta definición, ideal para pantallas modernas. |
hd |
1024x768 | Mayor compatibilidad, uso general. |
default |
Autodetectada | Resolución base del sistema, útil para diagnósticos. |
# Arrancar en modo HD
BOOT_MODE: "hd"
Personalización avanzada mediante ARGUMENTS
Para funcionalidades específicas, ARGUMENTS permite inyectar parámetros directamente en la línea de comandos de QEMU. Un caso de uso común es la passthrough de dispositivos USB.
# Ejemplo: Exponer un dispositivo USB específico al VM
ARGUMENTS: "-device usb-host,vendorid=0xABCD,productid=0x1234"
Primero, se debe identificar el dispositivo usando lsusb:
$ lsusb
Bus 001 Device 005: ID abcd:1234 Fabricante Ejemplo Dispositivo
Luego, se incorporan los identificadores (IDs) en la variable de entorno y se mapea el bus USB en el contenedor:
environment:
ARGUMENTS: "-device usb-host,vendorid=0xABCD,productid=0x1234"
devices:
- /dev/bus/usb
Ejemplo integral de despliegue
Configuración con Docker Compose
services:
macos-vm:
image: dockurr/macos
container_name: macos-production
environment:
VERSION: "14"
CPU_CORES: "4"
RAM_SIZE: "8G"
DISK_SIZE: "256G"
BOOT_MODE: "full"
ARGUMENTS: "-usbdevice tablet"
devices:
- /dev/kvm
cap_add:
- NET_ADMIN
ports:
- "8006:8006"
- "5900:5900/tcp"
- "5900:5900/udp"
volumes:
- macos-storage:/storage
stop_grace_period: 2m
volumes:
macos-storage:
Despliegue directo con Docker CLI
docker run -d \
--name macos-sandbox \
-p 8006:8006 \
-p 5900:5900 \
--device=/dev/kvm \
--cap-add NET_ADMIN \
-e VERSION="ventura" \
-e CPU_CORES="2" \
-e RAM_SIZE="4G" \
-e DISK_SIZE="128G" \
-e BOOT_MODE="hd" \
--stop-timeout 120 \
-v /path/on/host:/storage \
dockurr/macos
Recomendaciones de configuración y solución de problemas
La asignación de recursos debe ser acorde al hardware del host para evitar cuellos de botella.
| Perfil de Host | CPU_CORES | RAM_SIZE | DISK_SIZE |
|---|---|---|---|
| Básico (4 núcleos / 8GB RAM) | "2" | "4G" | "128G" |
| Estándar (8 núcleos / 16GB RAM) | "4" | "8G" | "256G" |
| Avanzado (16+ núcleos / 32GB+ RAM) | "8" | "16G" | "512G" |
Si se experimentan problemas de rendimiento, considerar los siguientes ajustes:
# Reducir núcleos para mitigar overhead por virtualización anidada
CPU_CORES: "2"
# Ampliar el período de gracia para un apagado controlado
stop_grace_period: "5m"
Requisitos y limitaciones operativas
- Soporte de virtualización: La aceleración por hardware KVM es obligatoria y solo está disponible de forma nativa en hosts Linux y Windows 11.
- Restricciones legales: La ejecución de este software debe realizarse exclusivamente en hardware de Apple para cumplir con los términos de licencia de macOS.
- Rendimiento: Las capas de virtualización anidada (ejecutar un VM dentro de otro VM) degradan significativamente el rendimiento.
- Persistencia de datos: Es fundamental mapear un volumen al directorio
/storagepara conservar el estado del sistema y los datos entre reinicios.