Ejecutando macOS en contenedores Docker: Guía completa de variables de entorno

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 /storage para conservar el estado del sistema y los datos entre reinicios.

Etiquetas: macos Docker variables de entorno qemu KVM

Publicado el 6-24 20:37