Málo informácii páni z apple dodali. Jediné viem, že to bude púšťať OCI kontajnery. Či je emulácia X86 zahrnutá v cene, to neviem, lebo servery s apple silicon sa nevyrábajú. Aký to má performance a čo je killer feature oproti napríklad dockeru. (Napríklad že pytorch efektívne vďaka tým natívnym rozhraniam využije akceleráciu, alebo tak)
Asi to o chvíľu niekto testne, len mne to apple nepredal.
Bolo k tomu video na WWDC.
Neemuluje to ziadnu architekturu, spusta vo arm64 virtualku linuxu, pre kazdy kontajner samostatnu (to je rozdiel voci dockeru, ktory ma jednu pre vsetkych). Je to lightweight virtualka, je tam len kernel, staticky init a ten hned spusti kontajner. Kazdy z nich ma samostatny networking namespace a kazdy z nich ma samostane mapovanie adresarov z hosta cez virtio-fs.
Tady mě zajímá, jaký bude mít výkon FS vrstva. Jablečný Docker trpí na hrozný výkon FS vrstvy, když se něco mapuje z lokálního adresáře přístupného v macOS, takže nějaký projekt, co se skládá ze stovek souborů malých souborů, s kterými se má něco udělat v kontejneru, to je hrozná bolest, že jsem s kontejnery všechno vzdal a rozjel si to nativně lokálně.
Technicky je mozne pouzivat rosettu v linuxovej virtualke: https://developer.apple.com/documentation/virtualization/running-intel-binaries-in-linux-vms-with-rosetta (stale ide o arm64 linux, kde sa rosetta zaregistruje ako binfmt handler pre x64).
Ale: preco? velmi malo docker images je x64 only (ano, su. Niekedy len z neochoty, napr. postgis/postgis je amd64-only a tretie strany publikuju arm64 image). Tak ked sa da pouzit nativny, pouzijem nativny.
Vobec mi nevadi, ked sa pri deployi pouzije image pre inu architekturu ako na vyvoji. Intelovske image pouzivaju kolegovia, cestou je este aj testovanie; zatial s tym problem nikdy nebol.
Apple Silicon nie je kvazi ARM, je to ARM, napr. M4 je ARM 9.2-A. Skor ma niektore veci navyse, ktore "standardny" ARM nema (napr. Total Store Ordering).
Jen, já si úplně nemyslím, že tam nepůjdou spustit kontejnery s x86_64 binárkami.
Ten nástroj containers používá související Swift balíček containerization
https://github.com/apple/containerization
Tam je zmíněná podpora Rosetty v readme a podle částí kódu s tím počítají:
https://github.com/apple/containerization/blob/main/Sources/Containerization/Agent/Vminitd%2BRosetta.swift
https://github.com/apple/containerization/blob/main/Sources/Containerization/VZVirtualMachineInstance.swift#L48
atd.
Tzn. počítám, že tam bude sice Linux s aarch64 jádrem, ale bude mít binfmt handler na tyhle binárky přes Rosettu.