{ "meta": { "title": "Come viene adattata un’immagine OCI | ProxMenux", "description": "Dal repository dell’immagine e dal suo file Compose a un modello verificabile, un piano di distribuzione e un LXC nativo di Proxmox VE, senza Docker al suo interno." }, "header": { "title": "Come viene adattata un’immagine OCI", "description": "Dal repository dell’immagine e dal suo file Compose a un modello verificabile, un piano di distribuzione e un LXC nativo, senza installare Docker al suo interno.", "section": "OCI manager Apps" }, "sections": [ { "id": "pipeline", "title": "Il processo di adattamento", "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": "Repository dell’immagine", "converter": "Convertitore", "template": "Modello JSON", "blockers": "Nessun requisito bloccante?", "no": "No", "yes": "Sì", "review": "Revisione / overlay", "plan": "Piano di distribuzione", "lxc": "LXC nativo" } } }, { "p": "Il convertitore legge l’immagine e il file Compose pubblicati dal progetto e genera un modello JSON. Se alcuni requisiti non possono ancora essere adattati e impediscono l’installazione, il modello viene revisionato prima della pubblicazione nel catalogo. Un file di modifiche verificate, chiamato overlay, risolve questi problemi. Solo i modelli senza requisiti bloccanti vengono proposti per l’installazione." } ] }, { "id": "template", "title": "Cosa conserva il modello", "blocks": [ { "cards": { "items": [ { "icon": "archive", "title": "Identità dell’immagine", "body": "Repository, tag ad aggiornamento continuo, architettura, digest risolto e revisione di origine." }, { "icon": "braces", "title": "Contratto del container", "body": "Entrypoint, Cmd, ambiente, utente, directory di lavoro, segnale di arresto, porte e volumi." }, { "icon": "layers", "title": "Adattamento a Proxmox VE", "body": "Risorse, sicurezza, punti di mount, dispositivi, sysctls, controlli di stato e adattamenti necessari per ciascuno, con la relativa motivazione." }, { "icon": "shield", "title": "Compatibilità", "body": "Chiavi supportate, requisiti non adattati che impediscono l’installazione e stato di ogni verifica." } ] } } ] }, { "id": "sources", "title": "OCI fornisce il processo, Compose l’ambiente", "blocks": [ { "table": { "headers": [ "Origine", "Esempio", "Risultato nativo" ], "rows": [ [ "Metadati OCI", "Entrypoint, Cmd, User", "Proxmox VE li importa durante la creazione del CT" ], [ "Docker Compose", "environment, volumes, devices", "Voci dell’ambiente LXC, mpN e devN" ], [ "Profilo ProxMenux", "GPU, controllo di stato, credenziali", "Domande e adattamenti verificati" ], [ "Utente", "VMID, storage, rete", "Il contratto dell’istanza" ] ] } } ] }, { "id": "install", "title": "Cosa succede durante l’installazione", "blocks": [ { "steps": { "items": [ { "title": "Risolvere il riferimento", "body": "Viene interrogato il registro, viene scelta l’architettura dell’host e viene fissato il digest esatto a cui punta il tag ad aggiornamento continuo." }, { "title": "Scaricare e verificare", "body": "Skopeo scarica l’immagine come archivio OCI. Prima di creare qualsiasi risorsa, ogni livello viene verificato rispetto al suo digest e decompresso. Se il download è danneggiato, viene ripetuto una volta prima di interrompere l’installazione." }, { "title": "Creare il filesystem", "body": "pct create crea il rootfs a partire dall’archivio e conserva i metadati ufficiali del processo dell’immagine." }, { "title": "Collegare le risorse", "body": "Vengono applicati i volumi, la rete, l’ambiente, i dispositivi e i profili di sicurezza dichiarati." }, { "title": "Console", "body": "L’output della console del container viene conservato sull’host. La console di Proxmox VE apre una shell se l’immagine ne include una." }, { "title": "Verificare", "body": "Al primo avvio si attende che il container riceva un indirizzo e che il servizio risponda. In caso di errore, l’installazione non viene indicata come riuscita." }, { "title": "Registrare la configurazione", "body": "La configurazione effettiva viene salvata nel contratto dell’istanza usato per gli aggiornamenti e le ricreazioni." } ] } } ] }, { "id": "example", "title": "Esempio: un’immagine con /config e /downloads", "intro": "Una definizione Compose comune e la configurazione Proxmox VE che ne deriva. I percorsi attesi dall’applicazione non cambiano.", "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 (estratto)", "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 è un secondo disco appartenente al container, denominato vm-VMID-disk-N sullo storage selezionato. Viene montato in /config e, con backup=1, incluso nel backup del container. mp1 non crea alcun disco: monta la directory dell’host /srv/downloads in /downloads all’interno dell’LXC. La porta 8080 non viene mappata: l’LXC ha un proprio indirizzo e il servizio risponde su quello." } ] } ] }