Solución de la comunidad

Ubuntu o Debian en ZimaOS: por qué una imagen base de Docker se detiene y cuándo usar ZVM

An October 2025 ZimaOS 1.5.0 thread where a user entered ubuntu:latest into Install a customized app, but the container would not stay running. Community replies explained the difference between a Docker app and a standalone Debian/Ubuntu virtual machine, and suggested ZVM or a proper Compose service.

Escribir ubuntu:latest introducirlo en el campo «Instalar una aplicación personalizada» de ZimaOS no crea automáticamente un pequeño servidor Ubuntu siempre encendido. La imagen es un sistema de archivos de contenedor Ubuntu mínimo, no una máquina virtual preconfigurada con una secuencia de arranque completa, un demonio SSH, un gestor de servicios y una aplicación en segundo plano ya en ejecución.

Esa distinción explica el caso de origen de octubre de 2025. La imagen podía descargarse y se podía crear un contenedor, pero no permanecía en ejecución como esperaba el usuario. La solución adecuada depende del objetivo real: ejecutar una aplicación en un contenedor o ejecutar un sistema operativo Debian/Ubuntu completo y de propósito general dentro de una máquina virtual.

Un contenedor Docker no es una máquina virtual pequeña

Una máquina virtual emula un entorno informático completo e inicia su propia pila de sistema operativo. Un contenedor comparte el kernel de Linux del host y ejecuta uno o más procesos aislados en su propio espacio de usuario.

El modelo de Docker se centra en el proceso principal del contenedor. Si el proceso en primer plano se cierra, un contenedor desacoplado también se cierra. Por ello, los contenedores normalmente se construyen alrededor de un servicio de larga duración, como un servidor web, una base de datos, un demonio de sincronización o un trabajador de aplicaciones.

Las imágenes oficiales de Ubuntu y Debian son imágenes base mínimas

La imagen oficial actual de Ubuntu se basa en el sistema de archivos raíz mínimo de Canonical, y Docker la describe como una instalación mínima, no como un dispositivo de máquina virtual completo. De forma similar, la imagen oficial de Debian utiliza una instalación mínima minbase sistema de archivos raíz.

Si inicias una de forma interactiva con una terminal, parece un pequeño entorno Linux porque obtienes un shell. Cuando ese shell se cierra, puede que no quede ningún servicio en primer plano que mantenga activo el contenedor.

Consulta la información de la imagen base oficial de Ubuntu mantenida o la información de la imagen base oficial de Debian mantenida antes de considerar cualquiera de ellas como un dispositivo servidor preconfigurado.

Por qué ubuntu:latest puede detenerse inmediatamente

ZimaOS espera que una aplicación Docker instalada tenga un proceso significativo de larga duración. Una imagen de distribución básica suele ser la base de otra imagen o un entorno de shell interactivo. Si no hay ningún proceso de servicio configurado para permanecer como PID 1, el contenedor puede salir normalmente en lugar de «fallar».

Comprueba el registro del contenedor y su estado de salida antes de asumir que ZimaOS no pudo instalar la imagen. Un contenedor detenido sin ninguna aplicación configurada es un problema distinto del de un servicio que se inicia y genera un error.

Si solo necesitas una aplicación, empieza por la aplicación

El usuario original aclaró que en realidad no quería una máquina virtual completa. Quería una sola aplicación —iDrive— y acceso al almacenamiento NAS. En esa situación, el mejor diseño con Docker suele consistir en encontrar una imagen mantenida para la aplicación real o crear una imagen pequeña que instale e inicie esa aplicación.

El contenedor solo debe exponer los puertos, volúmenes, credenciales y dispositivos que la aplicación necesita. Los archivos persistentes deben almacenarse en el almacenamiento asignado de ZimaOS, no únicamente en la capa desechable del contenedor.

Usa Docker Compose para un servicio de contenedor real

La respuesta de la comunidad sugirió una definición de Compose adecuada en lugar de introducir únicamente ubuntu:latest y un nombre de contenedor. La versión actual de ZimaOS ha avanzado aún más en esa dirección: puede importar Docker Compose, editar archivos YAML y ejecutar pilas de varios contenedores con control del ciclo de vida.

Las directrices actuales de IceWhale indican que la configuración estándar del entorno de ejecución del contenedor debe estar en Docker Compose, mientras que los metadatos específicos de la tienda de ZimaOS deben estar en x-casaos.

Usa el modelo actual de Compose de ZimaOS para aplicaciones autoalojadas en lugar de tratar el nombre de una imagen de distribución como una definición completa de la aplicación.

Asigna almacenamiento NAS al contenedor

Si la aplicación solo necesita acceso a un directorio, asigna esa carpeta real de ZimaOS al contenedor. El lado del host debe apuntar a una carpeta de copias de seguridad o de datos del grupo de almacenamiento previsto, mientras que el lado del contenedor expone una ruta sencilla que la aplicación espera.

La versión actual de ZimaOS explica cómo se asigna el almacenamiento del host a las rutas de los contenedores. Por lo general, esto es más ligero que ejecutar una máquina virtual Debian completa solo para acceder a una carpeta.

Usa ZVM cuando el software espera una máquina Linux completa

Una máquina virtual es la opción más adecuada cuando el instalador de la aplicación espera elementos como:

  • un gestor de paquetes convencional y un sistema de archivos del sistema modificable;
  • systemd o varios servicios a nivel del sistema operativo;
  • comportamiento a nivel del kernel que no se puede proporcionar de forma segura mediante un contenedor;
  • un entorno de servidor Linux tradicional administrado mediante SSH;
  • software de un proveedor que admite explícitamente instalaciones de Ubuntu/Debian, pero no Docker.

Eso coincide con la primera respuesta de la comunidad: si el objetivo es un sistema operativo Debian o Ubuntu independiente, usa ZVM en lugar de obligar a una imagen de contenedor base a comportarse como una VM completa.

No instales la aplicación en el sistema de archivos raíz de ZimaOS

Pasar de «el contenedor de Ubuntu se cierra» a «instalaré el software con apt directamente en ZimaOS» suele ser la dirección equivocada. El ZimaOS actual mantiene la mayoría de las carpetas del sistema en modo de solo lectura por diseño y no es un host Debian/Ubuntu general con apt como su modelo normal de gestión de aplicaciones.

Los contenedores y las máquinas virtuales existen precisamente para que las dependencias de las aplicaciones permanezcan separadas del sistema base de ZimaOS.

Cuándo sigue siendo útil una imagen base de Debian/Ubuntu

Hay razones válidas para crear una imagen a partir de ubuntu o debian: el software de destino puede publicar pasos de instalación solo para esas distribuciones, o quizá necesites sus repositorios de paquetes durante la compilación de la imagen.

En ese caso, crea un Dockerfile o una imagen basada en Compose que instale la aplicación y defina un comando real en primer plano. No dependas de entrar manualmente en un shell, instalar paquetes de forma interactiva y esperar que el contenedor modificado se convierta en una aplicación persistente. La recreación del contenedor puede descartar los cambios que no se hayan integrado en la imagen o almacenado en volúmenes persistentes.

Una política de reinicio no sustituye la ausencia de un proceso principal

Las políticas de reinicio de Docker son útiles para un servicio real que deba volver a iniciarse después de un reinicio o una salida inesperada. No convierten una sesión de shell que ya ha terminado en un servidor de aplicaciones. Si el trabajo previsto del contenedor ya se completó, reiniciarlo repetidamente solo crea un bucle.

Elige la capa de aislamiento más pequeña que se adapte al software

  • La aplicación ya tiene una imagen Docker mantenida: usa esa imagen.
  • La aplicación puede empaquetarse a partir de dependencias de Ubuntu/Debian: crea un contenedor de aplicación adecuado.
  • La aplicación necesita un host Linux convencional completo: usa ZVM.
  • Solo necesitas acceso al almacenamiento: asigna las carpetas NAS necesarias en lugar de virtualizar todo el disco.

Preguntas frecuentes sobre Ubuntu y Debian en ZimaOS

¿Por qué ubuntu:latest se instala, pero no permanece en ejecución?

Una imagen de distribución base no es automáticamente un servicio siempre activo. Un contenedor Docker necesita un proceso principal que permanezca en ejecución.

¿Es ubuntu:latest una máquina virtual completa de Ubuntu?

No. Es un espacio de usuario de contenedor mínimo que comparte el kernel del host.

¿Debería usar ZVM para todas las aplicaciones de Linux?

No. Una aplicación Docker real suele ser más ligera y fácil de gestionar cuando el software admite contenedores.

¿Cuándo es ZVM la mejor opción?

Usa una VM cuando el software espera un servidor Ubuntu/Debian mutable tradicional, con servicios a nivel del sistema o supuestos de instalación que no encajan en un contenedor.