Apple lansează o alternativă Docker pentru macOS, bazată pe Swift

apple logo

Scris de

în

,

Apple a introdus o alternativă open-source la Docker, bazată pe Swift, pentru rularea containerelor Linux pe macOS, axată pe securitate și izolare.

Apple a lansat discret un nou proiect open-source care ar putea schimba semnificativ modul în care containerele sunt rulate pe macOS.

Denumit simplu container, acesta introduce un runtime de containere nativ pentru Apple, bazat pe Swift, conceput special pentru sistemele macOS, în special cele care rulează pe Apple Silicon.

În esență, containerul permite utilizatorilor să extragă, să construiască, să ruleze și să distribuie containere Linux standard compatibile cu OCI.

Cu toate acestea, spre deosebire de Docker, care se bazează de obicei pe o mașină virtuală partajată pentru toate containerele de pe macOS, abordarea Apple rulează fiecare container în propria micro-mașină virtuală ușoară, completă cu un kernel Linux izolat și o stivă de rețea. Conform paginii GitHub a proiectului:

Instrumentul consumă și produce imagini de containere compatibile cu OCI, astfel încât să puteți extrage și rula imagini din orice registru standard de containere. De asemenea, puteți trimite imaginile pe care le construiți în acele registre și puteți rula imaginile în orice altă aplicație compatibilă cu OCI.

Acest model reflectă conceptul de microVM-uri popularizate de instrumente precum Firecracker, dar a fost strâns integrat în macOS prin Virtualization.framework, interfața hypervisor nativă a Apple.

Deși Apple nu îl prezintă ca un înlocuitor complet pentru Docker, instrumentul acoperă o mare parte din același teren pentru cazurile de utilizare de dezvoltare locală.

Interfața CLI este familiară și accesibilă: cu comenzi precum

container image pull alpine sau container run -ti alpine sh.

Ceea ce diferențiază acest instrument este integrarea sa perfectă în sistemul de operare macOS în sine.

În loc să emuleze un mediu Linux cu instrumente externe, soluția Apple folosește Swift pentru o mare parte din zona de utilizare, inclusiv un sistem init mic numit vminitd care pornește containerele în câteva milisecunde.

Proiectul include, de asemenea, un pachet Swift, „Containerization”, care expune API-uri de nivel scăzut pentru gestionarea imaginilor, volumelor, rețelelor și proceselor de boot, oferind utilizatorilor avansați și constructorilor de instrumente o bază puternică.

În primul rând, să lămurim un lucru – nu există așa ceva ca o containerizare nativă adevărată pe niciun alt sistem de operare în afară de Linux și există un motiv simplu pentru asta.

Docker se bazează pe caracteristici specifice kernelului Linux, cum ar fi cgroup-urile, spațiile de nume și sistemele de fișiere suprapuse, pe care kernelul macOS nu le poate oferi.

Din acest motiv, noul proiect Apple folosește o mașină virtuală Linux ușoară separată pentru a rula fiecare container.

În același timp, abordarea Docker este de a rula totul într-o singură mașină virtuală (construită cu LinuxKit) care găzduiește Docker Engine și toate containerele.

Așadar, în cazul Apple, fiecare container se află în propria sa mașină virtuală separată, ceea ce înseamnă o mulțime de mașini virtuale (indiferent cât de ușoare sunt), ceea ce nu pare a fi cea mai eficientă abordare.

Pe de altă parte, mașinile virtuale separate au unele avantaje. De exemplu, un avantaj cheie al noului proiect Apple este că oferă fiecărui container propriul kernel Linux dedicat, spre deosebire de Docker, care partajează un singur kernel în toate containerele (nu se pot amesteca versiuni de kernel per container).

Mai mult, folosește și stiva de rețea macOS nativă, în timp ce Docker se bazează de obicei pe o mașină virtuală cu NAT sau rețea bridged. Pentru a clarifica acest lucru, am întocmit un tabel comparativ rapid:

CaracteristicăDocker DesktopRecipient pentru mere
Modelul mașinii virtualeMașină virtuală partajată pentru toate containereleMicro-VM per container
NucleuUn singur kernel Linux pentru toțiKernel Linux dedicat per container
BazaFolosește Docker Engine și hypervisor (de exemplu, qemu sau HyperKit)Folosește propriul Virtualization.framework de la Apple
RețeleNAT sau bridge prin VMStivă de rețea macOS nativă (cu limitări în versiunile timpurii)
Timp de execuțierunc / containerdvminitd, un sistem de inițializare Swift personalizat
IntegrareMultiplatformă și axată pe containereComplet nativ pentru macOS și centrat pe Swift

În ciuda tuturor diferențelor, ideea de bază este aceeași în ambele cazuri – construirea, rularea și lucrul cu imagini de containere compatibile cu OCI.

Din această perspectivă, Docker oferă în continuare mult mai multă flexibilitate și capabilități decât noul proiect Apple.

De exemplu, nu există docker-compose încă un echivalent, iar ecosistemul de instrumente (de exemplu, lipsa unui tablou de bord GUI, orchestrare limitată) trebuie încă dezvoltat și îmbunătățit.

Întrucât proiectul este încă la început, va fi interesant de văzut cum va evolua – și dacă se va ridica la înălțimea așteptărilor Apple, înlocuind în cele din urmă Docker sau Podman ca instrument de containere preferat pentru dezvoltatorii de pe macOS.

Comentarii

Lasă un răspuns

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

Acest site folosește Akismet pentru a reduce spamul. Află cum sunt procesate datele comentariilor tale.