
Un "runc" open-source di nuova generazione che consente ai container rootless di eseguire carichi di lavoro come Systemd, Docker, Kubernetes, proprio come le VM.
Sysbox è un container runtime open-source e gratuito (una "runc" specializzata), originariamente sviluppato da Nestybox (acquisita da Docker a 05/2022), che potenzia i container in due modi fondamentali:
Migliora l'isolamento dei container:
User-namespace Linux su tutti i container (cioè, l'utente root nel container ha zero privilegi sull'host).
Virtualizza porzioni di procfs e sysfs all'interno del container.
Nasconde le informazioni dell'host all'interno del container.
Blocca i mount iniziali del container e altro ancora.
Consente ai container di eseguire gli stessi carichi di lavoro delle VM:
Con Sysbox, i container possono eseguire software a livello di sistema come systemd, Docker, Kubernetes, K3s, buildx (incluse build multi-arch), applicazioni legacy, applicazioni multi-arch e altro ancora, in modo fluido e sicuro.
Questo software può essere eseguito all'interno dei container Sysbox senza modifiche e senza utilizzare versioni speciali del software (ad es., varianti rootless).
Niente container privilegiati, niente immagini complesse, niente entrypoint complicati, niente mount di volumi speciali, ecc.
Consideralo come un "supercharger per container": consente ai tuoi attuali gestori di container / orchestratori (es., Docker, Kubernetes, ecc.) di distribuire container con un isolamento irrobustito e in grado di eseguire quasi tutti i carichi di lavoro che girano nelle VM.
Sysbox fa questo facendo assomigliare il container a un ambiente simile a una VM il più possibile, usando tecniche avanzate di virtualizzazione del sistema operativo.
A differenza dei runtime alternativi come Kata e KubeVirt, non usa VM. Questo lo rende più facile da usare (particolarmente in ambienti cloud evitando la virtualizzazione annidata), sebbene non offra il livello di isolamento dei runtime basati su VM. Vedi qui per un confronto.
Non è necessario imparare nuovi strumenti o modificare le immagini dei container o i flussi di lavoro esistenti per sfruttare Sysbox. Basta installarlo e indirizzare il proprio gestore di container / orchestratore verso di esso per distribuire container potenziati.
Sysbox può coesistere con altri runtime di container sullo stesso host (es., il runc OCI predefinito, Kata, ecc.). Puoi scegliere facilmente quali container o pod eseguire con ciascuno, a seconda delle tue esigenze.
Sysbox è gratuito e open-source, concesso in licenza secondo la Apache License, Versione 2.0. Vedi il file LICENSE per i dettagli.
Sysbox è stato originariamente sviluppato da Nestybox. Dato che Nestybox ora fa parte di Docker, Docker è il principale sponsor del progetto Sysbox.
Detto questo, Sysbox è un progetto open-source della community e non è ufficialmente supportato da Docker (cioè, gli abbonamenti Docker non includono il supporto per Sysbox). Il supporto è fornito secondo il miglior sforzo possibile tramite questo repository Github o tramite la Sysbox Slack Workspace.
Incoraggiamo la partecipazione della community per aiutare a far evolvere e migliorare Sysbox, con l'obiettivo di aumentare i casi d'uso e i benefici che abilita. Maintainer e contributori esterni sono i benvenuti.
Sysbox risolve problemi come:
Migliorare l'isolamento dei microservizi containerizzati (root nel container corrisponde a un utente senza privilegi sull'host).
Abilitare un utente root altamente capace all'interno del container senza compromettere la sicurezza dell'host.
Mettere in sicurezza le pipeline CI/CD abilitando Docker-in-Docker (DinD) o Kubernetes-in-Docker (KinD) senza container privilegiati insicuri o mount del socket Docker dell'host.
Consentire l'uso dei container come ambienti "simili a VM" per sviluppo, test locali, apprendimento, ecc., con un forte isolamento e la capacità di eseguire systemd, Docker, IDE e altro all'interno del container.
Eseguire applicazioni legacy all'interno dei container (invece di VM meno efficienti).
Sostituire le VM con un'alternativa basata su container più facile, veloce, efficiente e portabile, distribuibile facilmente in ambienti cloud.
Partizionare host bare-metal in più ambienti di calcolo isolati con una densità 2X rispetto alle VM (cioè, distribuire il doppio di container simili a VM rispetto alle VM sullo stesso hardware e con le stesse prestazioni).
Partizionare istanze cloud (es., EC2, GCP, ecc.) in più ambienti di calcolo isolati senza ricorrere alla costosa virtualizzazione annidata.
Sysbox si installa facilmente su host Linux (bare-metal, VM, on-prem, cloud, ecc.). Funziona su tutti i principali servizi IaaS e Kubernetes basati su cloud (es., EC2, GCP, GKE, EKS, AKS, Rancher, ecc.)
Una volta installato, Sysbox lavora dietro le quinte: usi Docker, Kubernetes, ecc. per distribuire container con esso.
Ad esempio, questo semplice comando Docker crea un container con Sysbox:
$ docker run --runtime=sysbox-runc -it any_image
Ottieni un container ben isolato in grado di eseguire senza problemi microservizi e software a livello di sistema che normalmente gira sulle VM (es., systemd, Docker, Kubernetes, ecc.).
Maggiori informazioni su come usare Sysbox qui.
Come mostrato, Sysbox consente ai container non privilegiati di eseguire carichi di lavoro a livello di sistema come systemd, Docker, Kubernetes, ecc., senza problemi, offrendo un approccio equilibrato tra isolamento dei container, prestazioni, efficienza e portabilità.
E lo fa con modifiche minime alla configurazione della tua infrastruttura esistente: basta installare Sysbox e configurare il tuo gestore di container/orchestratore per avviare container con esso, usando l'immagine che preferisci.
Nota che, sebbene Sysbox irrobustisca l'isolamento dei container standard ed elimini la necessità di container privilegiati insicuri in molti scenari, non fornisce (ancora) lo stesso livello di isolamento delle alternative basate su VM o dei sistemi operativi in spazio utente come gVisor. Pertanto, per scenari in cui è richiesto il massimo livello di isolamento, alternative come KubeVirt potrebbero essere preferibili (a scapito di minori prestazioni ed efficienza e maggiore complessità e costo).
Vedi questo post del blog per maggiori informazioni.
Il progetto Sysbox è pensato per chiunque voglia sperimentare, inventare, imparare e costruire sistemi usando i system containers. È virtualizzazione del sistema operativo all'avanguardia, e i contributi sono i benvenuti.
Prima dell'acquisizione da parte di Docker del 05/2022, Nestybox offriva Sysbox Enterprise come versione potenziata di Sysbox (es., più sicurezza, più carichi di lavoro e supporto ufficiale).
Dopo l'acquisizione, tuttavia, Sysbox Enterprise non è più offerto come prodotto autonomo ma è stato incorporato in Docker Desktop (vedi Docker Hardened Desktop).
NOTA: poiché Sysbox Enterprise non è più offerto come prodotto autonomo, Docker prevede di rendere disponibili alcune funzionalità di Sysbox Enterprise in Sysbox Community Edition. Le funzionalità sono da definire (TBD) e il tuo feedback in merito è benvenuto.
La tabella seguente riassume le caratteristiche principali del container runtime Sysbox.
Fornisce inoltre un confronto tra Sysbox Community Edition (cioè, questo repository) e la precedentemente disponibile Sysbox Enterprise Edition (ora deprecata).
Ulteriori informazioni sulle caratteristiche di Sysbox qui.
Se hai domande, puoi contattarci qui.
Chiamiamo i container distribuiti da Sysbox system containers, per evidenziare il fatto che possono eseguire non solo microservizi (come fanno i container normali), ma anche software di sistema come Docker, Kubernetes, Systemd, container interni, ecc.
Ulteriori informazioni sui system containers qui.
L'host Sysbox deve soddisfare i seguenti requisiti:
Deve eseguire una delle distro Linux supportate ed essere una macchina con un'architettura supportata (es., amd64, arm64).
Consigliamo un minimo di 4 CPU (es., 2 core con 2 hyperthread) e 4GB di RAM. Anche se non è un requisito tassativo, configurazioni più piccole potrebbero rallentare Sysbox.
Il metodo di installazione dipende dall'ambiente in cui Sysbox verrà installato:
Per installare Sysbox su un cluster Kubernetes, usa il daemonset sysbox-deploy-k8s.
Altrimenti, usa il pacchetto Sysbox per la tua distro.
In alternativa, se un pacchetto per la tua distro non è ancora disponibile, o se vuoi ottenere le ultime modifiche da upstream, puoi compilare e installare Sysbox dal sorgente.
Una volta installato Sysbox, crei un container usando il tuo gestore di container o orchestratore (es., Docker o Kubernetes) e un'immagine a tua scelta.
Esempio di comando Docker:
$ docker run --runtime=sysbox-runc --rm -it --hostname my_cont registry.nestybox.com/nestybox/ubuntu-bionic-systemd-docker
root@my_cont:/#
Esempio di specifica pod Kubernetes:
apiVersion: v1
kind: Pod
metadata:
name: ubu-bio-systemd-docker
annotations:
io.kubernetes.cri-o.userns-mode: "auto:size=65536"
spec:
runtimeClassName: sysbox-runc
containers:
- name: ubu-bio-systemd-docker
image: registry.nestybox.com/nestybox/ubuntu-bionic-systemd-docker
command: ["/sbin/init"]
restartPolicy: Never
Puoi scegliere qualunque immagine container tu voglia, Sysbox non impone requisiti sull'immagine.
Nestybox mette a disposizione diverse immagini di riferimento nei suoi repository Dockerhub e GitHub Container Registry. Sono immagini che in genere includono systemd, Docker, Kubernetes e altro all'interno dei container. I Dockerfile sono qui. Sentiti libero di usarli e modificarli in base alle tue esigenze.
Ci impegniamo a fornire una buona documentazione; è un componente chiave del progetto Sysbox.
Abbiamo diversi documenti per aiutarti a iniziare e a ottenere il massimo da Sysbox.
Documento sulla compatibilità delle distro di Sysbox
Sysbox è veloce ed efficiente, come descritto in questo post del blog di Nestybox.
I container creati da Sysbox hanno prestazioni simili a quelli creati da OCI runc (il runtime predefinito per Docker e Kubernetes).
Anche i container distribuiti all'interno dei system containers hanno prestazioni eccellenti, sebbene ci sia un leggero overhead per l'IO di rete (come previsto poiché i pacchetti emessi dai container interni passano attraverso un'interfaccia di rete / bridge aggiuntiva all'interno del system container).
Ora, se usi Sysbox per distribuire system containers che sostituiscono le VM, allora i guadagni in termini di prestazioni ed efficienza sono significativi: puoi distribuire 2X di system containers rispetto alle VM sullo stesso server e ottenere le stesse prestazioni, e fare questo con una frazione del consumo di memoria e storage. Il post del blog citato sopra contiene maggiori informazioni.
Sysbox è stato biforcato dall'eccellente OCI runc all'inizio del 2019 e si basa sul lavoro svolto dagli sviluppatori di OCI runc.
Detto questo, Sysbox aggiunge funzionalità significative. È scritto in Go ed è attualmente composto da tre componenti: sysbox-runc, sysbox-fs e sysbox-mgr.
Sysbox usa molte funzionalità di virtualizzazione del sistema operativo del kernel Linux e le integra con tecniche di virtualizzazione del sistema operativo implementate nello spazio utente. Queste includono l'uso di tutti i namespace Linux (in particolare il user-namespace), la virtualizzazione parziale di procfs e sysfs, l'intercettazione selettiva delle syscall e altro.
Ulteriori informazioni sulla progettazione di Sysbox si trovano nella guida utente di Sysbox.
Sebbene i container generati da Sysbox assomiglino in qualche modo a macchine virtuali (es., puoi eseguire come root, eseguire più servizi e distribuire Docker e K8s all'interno), Sysbox non usa la virtualizzazione hardware.
Sysbox è una tecnologia di virtualizzazione del sistema operativo pura, pensata per creare container in grado di eseguire applicazioni e software a livello di sistema, facilmente e in modo sicuro.
Questo rende i container creati da Sysbox veloci, efficienti e portabili (cioè, non sono legati a un hypervisor).
Per quanto riguarda l'isolamento, è giusto dire che i container Sysbox forniscono un isolamento più forte dei normali container Docker (grazie all'uso del user-namespace Linux e di uno shim del sistema operativo leggero), ma un isolamento più debole delle VM (condividendo il kernel Linux tra i container).
Accogliamo con favore i contributi a Sysbox, siano essi piccole modifiche alla documentazione, correzioni di bug o aggiunte di funzionalità. Consulta le linee guida per i contributi e la guida per sviluppatori per maggiori informazioni.
Vedi il Capitolo sulla Sicurezza della Guida Utente per informazioni su come Sysbox protegge i container.
Se trovi bug o problemi che potrebbero esporre una vulnerabilità di Sysbox, segnalali inviando un'email a [email protected]. Per favore, non aprire issue di sicurezza in questo repository. Grazie!
Inoltre, di recente sono state trovate alcune vulnerabilità nel kernel Linux che in alcuni casi riducono o annullano l'isolamento potenziato fornito dai container Sysbox. Fortunatamente sono tutte corrette nei kernel Linux recenti. Vedi il capitolo Vulnerabilità e CVE della Guida Utente di Sysbox per maggiori informazioni e contatta il canale Slack di Sysbox per ulteriori domande.
Il supporto è attualmente offerto secondo il miglior sforzo possibile.
Se hai una domanda o un commento, ci fa piacere ascoltarti. Puoi contattarci sul nostro canale slack o aprire una issue su questo repository GitHub.
Se noti un problema con Sysbox, cerca tra le issue esistenti, poiché potrebbero descrivere il problema e fornire una soluzione alternativa.
Controlla anche il documento di risoluzione dei problemi.
Prima di disinstallare Sysbox, assicurati che tutti i container distribuiti con esso siano fermati e rimossi.
Il metodo di disinstallazione dipende dal metodo usato per installare Sysbox:
Per disinstallare Sysbox su un cluster Kubernetes, segui queste istruzioni.
Altrimenti, per disinstallare il pacchetto Sysbox, segui queste istruzioni.
Se Sysbox è stato compilato e installato dal sorgente, segui queste istruzioni.
La seguente è un elenco di funzionalità nella roadmap di Sysbox.
Le elenchiamo qui affinché i nostri utenti possano farsi un'idea migliore di dove stiamo andando e possano darci feedback su quali preferiscono (o meno).
Ecco un breve elenco; il tracker delle issue di Sysbox ne ha molti altri.
Supporto per più distro Linux.
Ulteriori miglioramenti alla virtualizzazione di procfs e sysfs.
Miglioramenti continui all'isolamento dei container.
Esposizione dei dispositivi host all'interno dei system containers con permessi appropriati.
Slack: Sysbox Slack Workspace
Email: [email protected]
Siamo disponibili dal lunedì al venerdì, dalle 9:00 alle 17:00 Ora del Pacifico.
Ti ringraziamo molto per aver usato e/o contribuito a Sysbox. Speriamo che lo trovi interessante e che ti aiuti a usare i container in modi nuovi e più potenti.