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 Desktop | Recipient pentru mere |
|---|---|---|
| Modelul mașinii virtuale | Mașină virtuală partajată pentru toate containerele | Micro-VM per container |
| Nucleu | Un singur kernel Linux pentru toți | Kernel Linux dedicat per container |
| Baza | Folosește Docker Engine și hypervisor (de exemplu, qemu sau HyperKit) | Folosește propriul Virtualization.framework de la Apple |
| Rețele | NAT sau bridge prin VM | Stivă de rețea macOS nativă (cu limitări în versiunile timpurii) |
| Timp de execuție | runc / containerd | vminitd, un sistem de inițializare Swift personalizat |
| Integrare | Multiplatformă și axată pe containere | Complet 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.

Lasă un răspuns