Nel progetto containerd è stata accettata una serie di modifiche che integrano il supporto per il runtime runj e aprono la possibilità di utilizzare su FreeBSD immagini di contenitori compatibili con OCI basate su Linux, come le immagini Docker. Nei commenti alle modifiche è fornito un esempio di un avvio riuscito su FreeBSD di un'immagine con Alpine Linux. $ sudo ctr run —rm —runtime wtf.sbk.runj.v1 —tty —snapshotter zfs docker.io/library/alpine:latest test sh -c 'cat /etc/os-release && uname -a' NAME="Alpine Linux" ID=alpine VERSION_ID=3.16.0 PRETTY_NAME="Alpine Linux v3.16" HOME_URL="https://alpinelinux.org/" BUG_REPORT_URL="https://gitlab.alpinelinux.org/alpine/aports/-/issues" Linux 3.17.0 FreeBSD 13.1-RELEASE releng/13.1-n250148-fc952ac2212 GENERIC x86_64 Linux
Nonostante lo stato sperimentale del progetto runj e il limitato insieme di funzionalità attualmente disponibili, anche in questa forma il progetto può essere utile per esperimenti personali, semplificazione della modellazione di soluzioni (Proof Of Concept), sviluppo locale, esecuzione di test prima del deployment in sistemi cloud e verifica della funzionalità in casi in cui non è possibile passare a soluzioni collaudate e industriali su altre piattaforme, ma è stata riconosciuta la necessità di containerizzazione. Per il funzionamento è necessaria l'installazione di jail, jls, jexec e ps.
Vale la pena notare che runj è un progetto personale di Samuel Karp, ingegnere di Amazon che si occupa dello sviluppo della distribuzione Linux Bottlerocket e delle tecnologie di isolamento dei contenitori per AWS, ed è anche un membro indipendente del Technical Oversight Board del progetto OpenContainers. Dopo aver raggiunto il livello necessario, il progetto runj potrebbe essere utilizzato per sostituire il runtime predefinito nei sistemi Docker e Kubernetes, utilizzando FreeBSD per l'esecuzione dei contenitori al posto di Linux. Attualmente, nel runtime OCI sono implementati comandi per la creazione, eliminazione, avvio, terminazione forzata e valutazione dello stato dei contenitori, nonché per la configurazione di processi, punti di montaggio e nomi host.
Fonte: opennet.ru
