{ "meta": { "title": "Cómo se adapta una imagen OCI | ProxMenux", "description": "Del repositorio de la imagen y su archivo Compose a una plantilla que puedes revisar, un plan de despliegue y un LXC nativo de Proxmox VE, sin Docker dentro." }, "header": { "title": "Cómo se adapta una imagen OCI", "description": "Del repositorio de la imagen y su archivo Compose a una plantilla que puedes revisar, un plan de despliegue y un LXC nativo, sin instalar Docker dentro.", "section": "OCI manager Apps" }, "sections": [ { "id": "pipeline", "title": "El proceso de adaptación", "blocks": [ { "mermaid": { "chartCode": "flowchart TB\n A[\"{{repo}}\"] --> B[\"Compose + README\"]\n B --> C[\"{{converter}}\"]\n C --> D[\"{{template}}\"]\n D --> E{\"{{blockers}}\"}\n E -- \"{{no}}\" --> F[\"{{review}}\"]\n F --> D\n E -- \"{{yes}}\" --> G[\"{{plan}}\"]\n G --> H[\"pct create\"]\n H --> I[\"{{lxc}}\"]", "labels": { "repo": "Repositorio de la imagen", "converter": "Conversor", "template": "Plantilla JSON", "blockers": "¿Sin impedimentos?", "no": "No", "yes": "Sí", "review": "Revisión / overlay", "plan": "Plan de despliegue", "lxc": "LXC nativo" } } }, { "p": "El conversor lee la imagen y el archivo Compose publicados por el proyecto y genera una plantilla JSON. Si quedan requisitos que no se han podido adaptar y que impiden la instalación, la plantilla pasa por una revisión: un archivo de ajustes revisados, llamado overlay, los resuelve antes de publicarla en el catálogo. Solo se ofrecen para instalar las plantillas que no tienen impedimentos pendientes." } ] }, { "id": "template", "title": "Qué conserva la plantilla", "blocks": [ { "cards": { "items": [ { "icon": "archive", "title": "Identidad de la imagen", "body": "Repositorio, etiqueta de actualización continua, arquitectura, digest resuelto y revisión de origen." }, { "icon": "braces", "title": "Contrato del contenedor", "body": "Entrypoint, Cmd, entorno, usuario, directorio de trabajo, señal de parada, puertos y volúmenes." }, { "icon": "layers", "title": "Adaptación a Proxmox VE", "body": "Recursos, seguridad, puntos de montaje, dispositivos, sysctls, comprobaciones de estado y las adaptaciones necesarias en cada caso, con su justificación." }, { "icon": "shield", "title": "Compatibilidad", "body": "Claves compatibles, requisitos pendientes de adaptar que impiden la instalación y estado de cada validación." } ] } } ] }, { "id": "sources", "title": "OCI aporta el proceso; Compose aporta el entorno", "blocks": [ { "table": { "headers": [ "Origen", "Ejemplo", "Resultado nativo" ], "rows": [ [ "Metadatos OCI", "Entrypoint, Cmd, User", "Proxmox VE los importa al crear el CT" ], [ "Docker Compose", "environment, volumes, devices", "Entradas de entorno de LXC, mpN y devN" ], [ "Perfil de ProxMenux", "GPU, comprobación de estado, credenciales", "Preguntas y adaptaciones revisadas" ], [ "Usuario", "VMID, almacenamiento, red", "El contrato de la instancia" ] ] } } ] }, { "id": "install", "title": "Qué ocurre durante la instalación", "blocks": [ { "steps": { "items": [ { "title": "Resolver la referencia", "body": "Se consulta el registro, se selecciona la arquitectura del host y se fija el digest concreto al que apunta la etiqueta de actualización continua." }, { "title": "Descargar y verificar", "body": "Skopeo descarga la imagen como un archivo OCI. Antes de crear nada, se verifica el digest de cada capa y se descomprimen todas las capas. Si la descarga está dañada, se vuelve a descargar una vez antes de detener la instalación." }, { "title": "Crear el sistema de archivos", "body": "pct create crea el rootfs a partir del archivo y conserva los metadatos oficiales del proceso de la imagen." }, { "title": "Conectar los recursos", "body": "Se aplican los volúmenes, la red, el entorno, los dispositivos y los perfiles de seguridad declarados." }, { "title": "Consola", "body": "La salida de consola del contenedor se guarda en el host. La consola de Proxmox VE abre una shell si la imagen incluye una." }, { "title": "Comprobar", "body": "En el primer arranque se espera a que el contenedor tenga una dirección y el servicio responda. Si falla, la instalación no se da por completada correctamente." }, { "title": "Registrar la configuración", "body": "La configuración efectiva se guarda en el contrato de la instancia que utilizan las actualizaciones y las recreaciones." } ] } } ] }, { "id": "example", "title": "Ejemplo: una imagen con /config y /downloads", "intro": "Una definición Compose habitual y la configuración de Proxmox VE que se genera a partir de ella. Las rutas que espera la aplicación no cambian.", "blocks": [ { "codeGrid": { "items": [ { "title": "Docker Compose", "code": "image: lscr.io/linuxserver/example:latest\nenvironment:\n - PUID=1000\n - PGID=1000\nvolumes:\n - config:/config\n - /srv/downloads:/downloads\nports:\n - 8080:8080" }, { "title": "/etc/pve/lxc/VMID.conf (fragmento)", "code": "entrypoint: /init\nmp0: local-lvm:vm-VMID-disk-1,mp=/config,backup=1,size=8G\nmp1: /srv/downloads,mp=/downloads\nnet0: name=eth0,bridge=vmbr0,ip=dhcp,type=veth\nlxc.environment.runtime: PUID=1000\nlxc.environment.runtime: PGID=1000" } ] } }, { "p": "mp0 es un segundo disco que pertenece al contenedor, con el nombre vm-VMID-disk-N en el almacenamiento seleccionado. Se monta en /config y, con backup=1, forma parte del backup del contenedor. mp1 no crea ningún disco: monta el directorio del host /srv/downloads en /downloads dentro del LXC. El puerto 8080 no se mapea: el LXC tiene su propia dirección y el servicio responde en ella." } ] } ] }