Apple lanseeraa Swift-pohjaisen Docker-vaihtoehdon macOS:lle
Apple esitteli Swift-pohjaisen, avoimen lähdekoodin vaihtoehdon Dockerille Linux-säilöjen ajamiseksi macOS:llä, keskittyen turvallisuuteen ja eristykseen.
Apple on hiljaisesti julkaissut uuden avoimen lähdekoodin projektin, joka voi merkittävästi muuttaa sitä, miten kontteja ajetaan macOS:ssä. Yksinkertaisesti nimetty container, se esittelee Swift-pohjaisen, Apple-ydinratkaisuun perustuvan konttiajurin, joka on suunniteltu erityisesti macOS-järjestelmille, erityisesti Apple Siliconilla toimiville.
Ydinkohdaltaan container antaa käyttäjille mahdollisuuden ladata, rakentaa, suorittaa ja työntää standardien OCI-yhteensopivien Linux-konttien mukaisesti. Toisin kuin Docker, joka tyypillisesti käyttää jaettua virtuaalikonetta kaikille konteille macOS:ssä, Applen lähestymistapa suorittaa jokaisen kontin omassa kevyessä mikro-VM:ssä, jossa on eristetty Linux-ydin ja verkkoalusta. Projektin GitHub-sivun mukaan:
Työkalu käyttää ja tuottaa OCI-yhteensopivia konttikuvia, joten voit ladata ja ajaa kuvia mistä tahansa standardista konttivarastosta. Voit myös työntää itse rakentamiasi kuvia näihin varastoihin ja ajaa kuvia missä tahansa muussa OCI-yhteensopivassa sovelluksessa.
Tämä malli heijastaa Firecrackerin kaltaisten työkalujen suosittamaa microVM-konseptia, mutta se on tiiviisti integroitu macOS:ään Virtualization.frameworkin kautta, Applen omaan hypervisor-rajapintaan.
Vaikka Apple ei markkinoi tätä täytenä korvaajana Dockerille, työkalu kattaa monia samoja alueita paikallisen kehityksen käyttötapauksissa. CLI on tuttu ja helposti lähestyttävä: komentoja kuten container image pull alpine tai container run -ti alpine sh.
Mikä erottaa tämän työkalun muista, on sen saumaton integrointi suoraan macOS-käyttöjärjestelmään. Sen sijaan, että käytettäisiin ulkoisia työkaluja Linux-ympäristön emuloimiseen, Applen ratkaisu hyödyntää Swift-kieltä suuressa osassa käyttäjätilan komponentteja, mukaan lukien pieni init-järjestelmä nimeltä vminitd, joka käynnistää kontit muutamassa millisekunnissa.
Hankkeeseen sisältyy myös Swift-paketti nimeltä „Containerization“, joka tarjoaa matalan tason rajapintoja kuvien, tilavuuksien, verkkojen ja käynnistysprosessien hallintaan, tarjoten edistyneille käyttäjille ja työkalujen kehittäjille vahvan perustan.
Okei, tähän mennessä kaikki on sujunut hyvin, mutta nyt haluan jakaa muutaman oman ajatukseni aiheesta. Rehellisesti sanottuna olen hieman hämmentynyt tästä Applen liikkeestä. Ja selitän heti miksi.
Ensin, laitetaan yksi asia selväksi—todellista alkuperäistä konttiteknologiaa ei ole olemassa missään käyttöjärjestelmässä muualla kuin Linuxissa, ja syy siihen on yksinkertainen. Docker perustuu Linux-spesifisiin ytimentoimintoihin kuten cgroupseihin, nimiavaruuksiin ja overlay-tiedostojärjestelmiin, joita macOS-ydin ei voi tarjota.
Tästä syystä uusi Applen projekti käyttää erillistä kevyttä Linux-virtuaalikonetta jokaista yksittäistä konttia varten. Samaan aikaan Dockerin lähestymistapa on ajaa kaikki yhdellä virtuaalikoneella (rakennettu LinuxKitillä), joka isännöi Docker Engineä ja kaikkia kontteja.
Joten Applen tapauksessa jokainen kontti on omassa erillisessä virtuaalikoneessaan, mikä tarkoittaa paljon virtuaalikoneita (riippumatta siitä, kuinka kevyitä ne ovat), mikä ei vaikuta kovin tehokkaalta lähestymistavalta.
Toisaalta erillisillä virtuaalikoneilla on myös joitakin etuja. Esimerkiksi yksi Applen uuden projektin keskeisistä eduista on se, että se antaa jokaiselle kontille oman omistetun Linux-ytimen, toisin kuin Docker, joka jakaa yhden ytimen kaikkien konttien kesken (et voi sekoittaa ytimen versioita konttikohtaisesti).
Lisäksi se käyttää myös macOS:n omaa verkkopinostoa, kun taas Docker yleensä luottaa virtuaalikoneeseen NAT- tai siltaverkottumisen kanssa. Selventääkseni tätä olen koonnut nopean vertailutaulukon:
| Ominaisuus | Docker-työpöytä | Omenasäiliö |
|---|---|---|
| VM-malli | Jaettu VM kaikille säiliöille | Mikro‑VM per säilö |
| Ydin | Yksi Linux-ydin kaikille | Oma Linux-ydin per kontti |
| Perusta | Käyttää Docker Engineä ja hypervisoria (esim. qemu tai HyperKit) | Käyttää Applen omaa Virtualization.frameworkiä |
| Verkostoituminen | NAT tai silta VM:n kautta | MacOS:n oma verkkopino (rajoituksin varhaisissa versioissa) |
| Suorituskyky | runc/containerd | vminitd, mukautettu Swiftin käynnistysjärjestelmä |
| Integraatio | Monialustainen ja konttikeskeinen | Syvästi macOS:n luonteinen ja Swiftiin keskittyvä |
Kaikista eroista huolimatta ydinajatus on molemmissa tapauksissa sama—OCI-yhteensopivien konttikuvien rakentaminen, ajaminen ja niiden kanssa työskentely. Tästä näkökulmasta Docker tarjoaa silti paljon enemmän joustavuutta ja mahdollisuuksia kuin Applen uusi projekti.
Esimerkiksi vastaavaa docker-compose-työkalua ei ole vielä olemassa, ja työkalujen ekosysteemi (esim. ei GUI-hallintapaneelia, rajallinen orkestrointi) tarvitsee edelleen kehittämistä ja parantamista.
Joten ihmettelen, miksi Apple pani näin paljon vaivaa tämän luomiseen. Paitsi “Made by Apple”, he näyttävät haluavan ottaa osansa tästä valtavasta niche-markkinasta, jota lähes täysin hallitsee Docker, tarjoamalla paremman macOS-integraation, käyttämällä järjestelmän omia API-rajapintoja kolmannen osapuolen daemonien sijaan ja lopulta paremman tietoturvaeristyksen, mikä vähentää hyökkäyspintaa.
Koska projekti on vielä alkuvaiheessa, on mielenkiintoista nähdä, miten se kehittyy – ja kykeneekö se täyttämään Applen odotukset korvaamalla lopulta Dockerin tai Podmanin macOS-kehittäjien ensisijaisena konttityökaluna.
