Guida Incus Container
Guida Incus Container
Indice
- Introduzione: Cos’è Incus
- Storia e origini del progetto
- A cosa serve e quando utilizzarlo
- Incus vs Docker, Podman e LXD
- Caratteristiche e funzionalità principali
- Installazione di Incus
- Inizializzazione e primi passi
- Client e Server
- Gestione delle Istanze
- Storage
- Network
- Immagini
- Progetti
- Clustering
- API REST
- Security
- Consigli pratici per l’utilizzo
- Pro e Contro
- L’importanza della formazione continua
1. Cos’è Incus
Incus è un gestore moderno, sicuro e potente di container di sistema e macchine virtuali che offre un’esperienza unificata per eseguire e gestire sistemi Linux completi all’interno di container o macchine virtuali. A differenza dei container applicativi come Docker, Incus si concentra sui cosiddetti “system container”, che simulano un sistema operativo completo con tutti i suoi servizi, inclusi systemd, SSH e altri demoni di sistema.
Incus supporta immagini per un gran numero di distribuzioni Linux ed è costruito attorno a una potente API REST. La soluzione scala da una singola istanza su una macchina fino a un cluster in un intero rack di datacenter, rendendola adatta sia per ambienti di sviluppo che di produzione.
2. Storia e origini del progetto – Guida Incus Container
Incus, il cui nome deriva dalla nuvola Cumulonimbus incus o nuvola a incudine, è nato come fork comunitario di LXD di Canonical in seguito all’acquisizione del progetto LXD da parte di Canonical dalla comunità Linux Containers. Questa decisione, presa nel luglio 2023, ha generato reazioni contrastanti nella comunità open source.
Il progetto è stato poi adottato dalla comunità Linux Containers, riprendendo il posto lasciato vuoto dalla partenza di LXD. Il fork è stato avviato dallo sviluppatore SUSE Aleksa Sarai, con il supporto di Stéphane Graber, ex lead engineer di LXD presso Canonical. Incus è un vero progetto comunitario open source, privo di CLA (Contributor License Agreement) e rilasciato sotto licenza Apache 2.0, mantenuto dallo stesso team di sviluppatori che ha creato originariamente LXD.
La versione LTS corrente è Incus 6.0 ed è supportata fino a giugno 2029. Le release feature vengono pubblicate circa ogni mese con nuove funzionalità e correzioni di bug.
3. A cosa serve e quando utilizzarlo – Guida Incus Container
Incus è progettato per chi necessita di eseguire sistemi operativi completi in ambienti isolati ma performanti. A differenza dei container applicativi che eseguono singole applicazioni, i system container di Incus forniscono un ambiente completo simile a una macchina virtuale, ma con le performance quasi native dei container.
Dovresti considerare l’utilizzo di Incus se vuoi containerizzare diversi ambienti o eseguire macchine virtuali, o in generale gestire la tua infrastruttura in modo economicamente vantaggioso. È particolarmente adatto per:
- Ambienti di sviluppo e testing che richiedono sistemi operativi completi
- Hosting multi-tenant dove ogni utente necessita di un sistema isolato
- Migrazione da macchine virtuali tradizionali con minore overhead
- Laboratori di formazione e sandbox
- Infrastrutture private cloud
4. Incus vs Docker, Podman e LXD – Guida Incus Container
La differenza fondamentale tra Incus e Docker/Podman sta nel tipo di container gestito. Docker è un container a livello applicativo che tipicamente avvia ed esegue una singola applicazione come Apache o un server MySQL, mentre Incus si concentra principalmente sui container di sistema, fornendo un ambiente completo simile a una macchina virtuale.
I container applicativi sono transitori, non vengono mai aggiornati e memorizzano tutti i dati in altri container o su server a cui accedono tramite rete, mentre i system container hanno storage locale, vengono aggiornati e si comportano come istanze di un sistema operativo Linux completo.
Puoi effettivamente eseguire container Docker all’interno di un container di sistema Incus, ma non viceversa. Questo rende Incus particolarmente utile per costruire ambienti di sviluppo o per troubleshooting.
Per quanto riguarda LXD, Incus e LXD presentano diverse differenze: LXD usa il gruppo “lxd” mentre Incus utilizza i gruppi “incus” e “incus-admin”, LXD usa il bridge di rete predefinito lxdbr0 mentre Incus usa incusbr0, e LXD usa il suffisso di dominio .lxd per i container mentre Incus usa .incus per impostazione predefinita. Incus ha inoltre rimosso diverse dipendenze da tecnologie Ubuntu e Canonical.
5. Caratteristiche e funzionalità principali – Guida Incus Container
Le principali caratteristiche di Incus includono:
System Container e Virtual Machine: Incus supporta sia container di sistema (basati su LXC) che macchine virtuali (basate su QEMU), gestendoli attraverso la stessa interfaccia unificata.
API REST: Tutta la comunicazione tra Incus e i suoi client avviene tramite una API RESTful su HTTP, incapsulata tramite TLS per operazioni remote o un socket Unix per operazioni locali.
Clustering: Incus può operare in modalità cluster distribuendo il carico di lavoro su più server che condividono lo stesso database distribuito.
Storage flessibile: Supporta molteplici driver di storage inclusi ZFS, Btrfs, LVM, Ceph e directory semplici.
Network avanzato: Offre supporto per bridge, OVN (Open Virtual Network), macvlan, SR-IOV e configurazioni di rete fisica.
Gestione immagini: Sistema integrato per scaricare, gestire e creare immagini di container e VM da server remoti.
Progetti: Permette l’isolamento logico delle risorse attraverso i progetti.
6. Installazione di Incus
L’installazione di Incus varia in base alla distribuzione Linux utilizzata. Ecco alcuni esempi:
Su Debian/Ubuntu (tramite repository ufficiali):
apt install incus
Su sistemi Debian, l’esecuzione di apt install incus installerà Incus con tutte le dipendenze necessarie per eseguire container e macchine virtuali. Se desideri eseguire solo container in Incus, puoi eseguire solo apt install incus-base.
Su Arch Linux:
pacman -S incus
systemctl enable incus.socket
Su Fedora:
dnf install incus
Dopo l’installazione di Incus, assicurati di avere un gruppo incus-admin sul tuo sistema. Gli utenti in questo gruppo possono interagire con Incus.
Per aggiungere il tuo utente al gruppo:
sudo usermod -aG incus-admin nomeutente
newgrp incus-admin
7. Inizializzazione e primi passi – Guida Incus Container
Prima di poter utilizzare Incus, è necessario inizializzarlo. Per avviare il processo di configurazione interattiva, esegui il comando incus admin init:
incus admin init
Il processo di inizializzazione ti guiderà attraverso diverse configurazioni:
- Clustering: Puoi connettere il server a un cluster esistente o crearne uno nuovo
- Networking: Puoi lasciare che Incus crei un nuovo bridge (consigliato) o utilizzare un bridge o interfaccia di rete esistente
- Storage pools: Per scopi di test puoi creare un pool di storage loop-backed, ma per uso produttivo dovresti utilizzare una partizione vuota o un disco completo
Una volta completata l’inizializzazione, puoi verificare che Incus sia funzionante:
incus version
incus info
8. Client e Server
Incus implementa un paradigma server-client, dove le operazioni vengono eseguite da incusd che agisce come server Incus, solitamente in esecuzione in background, e incus come interfaccia a riga di comando per comunicare con il server Incus.
Il server (incusd) gestisce tutte le operazioni relative a container, VM, storage e networking. Il client (incus) comunica con il server tramite l’API REST, sia localmente tramite socket Unix che remotamente tramite TLS.
È possibile gestire server Incus remoti aggiungendoli al client:
incus remote add nome-server https://indirizzo-server:8443
9. Gestione delle Istanze
Le istanze in Incus possono essere container di sistema o macchine virtuali. Ecco alcuni comandi base:
Creare e avviare un container:
incus launch images:ubuntu/22.04 mio-container
Creare una VM:
incus launch images:ubuntu/22.04 mia-vm --vm
Elencare le istanze:
incus list
Fermare un’istanza:
incus stop mio-container
Eliminare un’istanza:
incus delete mio-container
Eseguire comandi in un’istanza:
incus exec mio-container -- apt update
incus exec mio-container -- bash
Creare snapshot:
incus snapshot mio-container snapshot-nome
Limitare risorse:
incus launch images:debian/12 limited --config limits.cpu=2 --config limits.memory=2GiB
10. Storage
Tutti i membri di un cluster devono avere pool di storage identici. Le uniche chiavi di configurazione che possono differire tra i pool su membri diversi sono source, size, zfs.pool_name, lvm.thinpool_name e lvm.vg_name.
Creare un pool di storage:
incus storage create pool-locale dir source=/data/incus
Per pool ZFS:
incus storage create pool-zfs zfs source=tank/incus
Elencare i pool di storage:
incus storage list
Creare volumi personalizzati:
incus storage volume create pool-locale mio-volume
11. Network
Incus offre diverse opzioni di networking. Il bridge predefinito (incusbr0) viene creato automaticamente durante l’inizializzazione.
Creare un nuovo bridge:
incus network create br-custom ipv4.address=10.0.1.1/24 ipv4.nat=true
Elencare le reti:
incus network list
Collegare un’istanza a una rete:
incus config device add mio-container eth0 nic network=br-custom
12. Immagini
Incus utilizza immagini per creare nuove istanze. Le immagini possono essere scaricate da server remoti o create localmente.
Elencare server di immagini disponibili:
incus remote list
Cercare immagini disponibili:
incus image list images: | less
Scaricare un’immagine:
incus image copy images:alpine/3.18 local: --alias alpine-3.18
Elencare immagini locali:
incus image list
13. Progetti
I progetti in Incus permettono di isolare logicamente le risorse e le configurazioni.
Creare un nuovo progetto:
incus project create progetto-dev
Cambiare progetto:
incus project switch progetto-dev
Elencare progetti:
incus project list
14. Clustering
Un cluster Incus è composto da un server bootstrap e almeno altri due membri del cluster, memorizzando il suo stato in un database distribuito Cowsql replicato usando l’algoritmo Raft.
Sebbene sia possibile creare un cluster con solo due membri, è fortemente raccomandato che il numero di membri del cluster sia almeno tre, con questa configurazione il cluster può sopravvivere alla perdita di almeno un membro e stabilire comunque il quorum per il suo stato distribuito.
Creare un cluster:
# Sul primo nodo (bootstrap)
incus admin init
# Selezionare "yes" per clustering e "new cluster"
# Sui nodi successivi
incus admin init
# Selezionare "yes" per clustering e "join existing cluster"
Visualizzare lo stato del cluster:
incus cluster list
15. API REST
Incus ha una specifica Swagger auto-generata che descrive i suoi endpoint API. L’API può essere interrogata facilmente utilizzando il comando incus query:
incus query /1.0
incus query /1.0/instances
Per operazioni remote, è necessario configurare l’autenticazione TLS e esporre il server sulla rete:
incus config set core.https_address "[::]:8443"
L’API REST permette l’integrazione con strumenti di terze parti e automazione avanzata dell’infrastruttura.
16. Security
La sicurezza di un’installazione Incus richiede di mantenere il sistema operativo aggiornato, utilizzare solo versioni supportate di Incus, restringere l’accesso al daemon e all’API remota, non utilizzare container privilegiati a meno che non sia necessario e configurare le interfacce di rete in modo sicuro.
L’accesso locale a Incus attraverso il socket Unix garantisce sempre accesso completo a Incus, inclusa la possibilità di collegare percorsi del filesystem o dispositivi a qualsiasi istanza e modificare le funzionalità di sicurezza su qualsiasi istanza, quindi dovresti concedere tale accesso solo agli utenti di cui ti fideresti con accesso root al tuo sistema.
Best practice di sicurezza:
- Utilizzare container non privilegiati quando possibile
- Limitare l’accesso al gruppo incus-admin
- Configurare firewall appropriati
- Utilizzare TLS per connessioni remote
- Mantenere Incus e il sistema operativo aggiornati
- Implementare network isolation tra progetti
17. Consigli pratici per l’utilizzo
1. Usa profili per standardizzare le configurazioni: Invece di configurare ogni istanza singolarmente, crea profili riutilizzabili:
incus profile create webserver
incus profile edit webserver
# Aggiungi configurazioni comuni
2. Automatizza con preseed: Per deployment ripetibili, utilizza il file preseed YAML con incus admin init --preseed.
3. Monitora le risorse: Utilizza incus info nome-istanza per monitorare l’utilizzo di risorse.
4. Backup regolari: Crea snapshot prima di modifiche importanti e esporta le istanze critiche:
incus export mio-container backup.tar.gz
5. Organizza con progetti: Utilizza i progetti per separare ambienti (dev, staging, prod).
6. Storage pool dedicati: Per ambienti produttivi, utilizza ZFS o Btrfs per funzionalità avanzate come snapshot e compressione.
7. Documentazione: Incus è molto ben documentato su linuxcontainers.org – consulta regolarmente la documentazione ufficiale.
18. Pro e Contro
| PRO | CONTRO |
|---|---|
| System container performanti quasi come native | Curva di apprendimento iniziale per chi viene da Docker |
| Gestione unificata di container e VM | Meno diffuso di Docker/Podman nell’ecosistema |
| API REST potente e ben documentata | Community più piccola rispetto a Docker |
| Clustering integrato | Meno immagini preconfigurate rispetto a Docker Hub |
| Progetto comunitario open source senza CLA | Documentazione meno abbondante di tutorial terze parti |
| Supporto LTS a lungo termine (5 anni) | Richiede più risorse per system container rispetto a app container |
| Storage e networking avanzati | Configurazione iniziale più complessa rispetto a Docker |
| Migrazione facile da LXD | Necessita di competenze sistemistiche più approfondite |
| Ideale per ambienti multi-tenant | Meno integrazione nativa con orchestratori come Kubernetes |
19. L’importanza della formazione continua: i corsi di Innovaformazione
Nel panorama IT in continua evoluzione, tecnologie come Incus rappresentano opportunità significative per migliorare l’efficienza infrastrutturale e ridurre i costi operativi. Tuttavia, l’adozione efficace di nuove tecnologie richiede che i team IT e DevOps siano adeguatamente formati e aggiornati.
La formazione continua del team IT e di DevOps è l’unico modo per tenere aggiornato il personale IT e per assicurare una ottima qualità dei progetti, evitando errori che spesso sono causa di ritardi, penali e danni con i clienti. Un team non formato su tecnologie emergenti come Incus rischia di implementare soluzioni sub-ottimali, incorrere in problemi di sicurezza o semplicemente non sfruttare appieno le potenzialità della piattaforma.
Innovaformazione.net è il partner ideale per la formazione del tuo team IT. Con un vasto catalogo corsi disponibile sul sito QUI, Innovaformazione offre formazione specializzata su tutte le principali tecnologie DevOps e infrastrutturali.
Su richiesta, Innovaformazione può attivare un corso dedicato su Incus Container per le aziende, personalizzato sulle specifiche esigenze del vostro team. Il corso viene erogato in modalità online in classe virtuale con calendario da concordare, permettendo la massima flessibilità organizzativa senza sacrificare la qualità dell’interazione con i docenti.
Per le aziende aderenti a Fondimpresa o altri fondi interprofessionali, Innovaformazione può gestire l’intero piano formativo finanziato, dalla presentazione del piano fino alla rendicontazione, eliminando gli oneri burocratici e massimizzando l’accesso ai finanziamenti disponibili per la formazione.
I corsi su Incus Container coprono tutti gli aspetti della tecnologia: dall’installazione e configurazione base, alla gestione avanzata di cluster, storage e networking, fino all’integrazione con pipeline CI/CD e best practice di sicurezza. I docenti sono professionisti certificati con esperienza pratica nell’implementazione di soluzioni containerizzate in ambienti enterprise.
Contattaci per maggiori informazioni e per costruire insieme il percorso formativo più adatto alle esigenze del tuo team:
Email: info@innovaformazione.net
Telefono: 3471012275 (Dario Carrassi)
Investire nella formazione significa investire nella qualità dei progetti, nella soddisfazione dei clienti e nella crescita professionale del team. Non lasciare che il gap di competenze rallenti l’innovazione della tua organizzazione.
Vuoi essere ricontattato? Lasciaci il tuo numero telefonico e la tua email, ti richiameremo nelle 24h:
Articoli correlati
Cosa è Google Antigravity
Guida Maui.net su .Net 10
Podman guida per DevOps
AI-Secure Development
Aggiornamenti PowerBI 2025
