Apple Meluncurkan Alternatif Docker Berbasis Swift untuk macOS


Apple memperkenalkan alternatif open-source berbasis Swift untuk Docker dalam menjalankan kontainer Linux di macOS, dengan fokus pada keamanan dan isolasi.

Apple diam-diam telah merilis proyek open-source baru yang dapat secara signifikan mengubah cara kontainer dijalankan di macOS. Dinamai sederhana container, proyek ini memperkenalkan runtime kontainer bertenaga Swift, asli dari Apple, yang dirancang khusus untuk sistem macOS, terutama yang berjalan di Apple Silicon.

Pada intinya, container memungkinkan pengguna untuk menarik, membangun, menjalankan, dan mendorong kontainer Linux standar yang sesuai dengan OCI. Namun, berbeda dengan Docker, yang biasanya bergantung pada mesin virtual bersama untuk semua kontainer di macOS, pendekatan Apple menjalankan setiap kontainer dalam micro-VM ringan sendiri, lengkap dengan kernel Linux terisolasi dan tumpukan jaringan. Menurut Halaman GitHub proyek tersebut:

Alat ini menggunakan dan menghasilkan image kontainer yang sesuai dengan OCI, sehingga Anda dapat menarik dan menjalankan image dari registri kontainer standar mana pun. Anda juga dapat mendorong image yang Anda buat ke registri tersebut, dan menjalankan image tersebut di aplikasi lain yang sesuai dengan OCI.

Model ini mencerminkan konsep microVM yang dipopulerkan oleh alat seperti Firecracker, tetapi telah diintegrasikan secara erat ke dalam macOS melalui Virtualization.framework, antarmuka hypervisor asli Apple.

Meskipun Apple tidak membranding ini sebagai pengganti penuh untuk Docker, alat ini mencakup banyak hal yang sama untuk kasus penggunaan pengembangan lokal. CLI-nya familiar dan mudah diakses: dengan perintah seperti container image pull alpine, atau container run -ti alpine sh.

Yang membedakan alat ini adalah integrasinya yang mulus ke dalam sistem operasi macOS itu sendiri. Alih-alih meniru lingkungan Linux dengan alat eksternal, solusi Apple menggunakan Swift untuk sebagian besar userland-nya, termasuk sistem init kecil bernama vminitd yang menyalakan container dalam hitungan milidetik.

Proyek ini juga mencakup paket Swift, "Containerization," yang menyediakan API tingkat rendah untuk mengelola gambar, volume, jaringan, dan proses boot, menawarkan dasar yang kuat bagi pengguna lanjutan dan pembuat alat.

Oke, sejauh ini semuanya baik-baik saja, tapi sekarang, izinkan saya berbagi beberapa pemikiran saya sendiri tentang topik ini. Sejujurnya, saya agak bingung dengan langkah Apple ini. Dan saya akan jelaskan alasannya segera.

Pertama, mari kita luruskan satu hal—tidak ada yang namanya kontainerisasi native sejati di sistem operasi selain Linux, dan ada alasan sederhana untuk itu. Docker mengandalkan fitur kernel khusus Linux seperti cgroups, namespaces, dan overlay filesystem, yang tidak dapat disediakan oleh kernel macOS.

Untuk alasan itu, proyek Apple yang baru menggunakan VM Linux ringan terpisah untuk menjalankan setiap kontainer. Sementara itu, pendekatan Docker adalah menjalankan semuanya di dalam satu mesin virtual (dibangun dengan LinuxKit) yang menampung Docker Engine dan semua kontainer.

Jadi, dalam kasus Apple, setiap kontainer berada di VM-nya sendiri, yang berarti ada banyak VM (tidak peduli seberapa ringan mereka), yang tampaknya bukan pendekatan yang paling efisien.

Di sisi lain, VM terpisah memang memiliki beberapa keuntungan. Misalnya, salah satu keuntungan utama dari proyek baru Apple adalah memberikan setiap container kernel Linux khususnya sendiri, berbeda dengan Docker, yang membagikan satu kernel di semua container (Anda tidak bisa mencampur versi kernel per container).

Selain itu, ini juga menggunakan tumpukan jaringan bawaan macOS, sementara Docker biasanya mengandalkan mesin virtual dengan NAT atau jaringan jembatan. Untuk membantu menjelaskan hal ini dengan lebih jelas, saya telah membuat tabel perbandingan singkat:

FiturDocker DesktopKontainer Apel
Model VMVM bersama untuk semua kontainerMicro‑VM per container
KernelSatu kernel Linux untuk semuaKernel Linux khusus per kontainer
DasarMenggunakan Docker Engine dan hypervisor (misalnya qemu atau HyperKit)Menggunakan Virtualization.framework milik Apple
JaringanNAT atau jembatan melalui VMTumpukan jaringan asli macOS (dengan keterbatasan di versi awal)
Waktu Jalanrunc/containerdvminitd, sebuah sistem init Swift kustom
IntegrasiLintas platform dan berfokus pada kontainerSangat asli macOS dan berfokus pada Swift

Meskipun ada banyak perbedaan, ide inti tetap sama dalam kedua kasus—membangun, menjalankan, dan bekerja dengan image container yang sesuai dengan OCI. Dari perspektif itu, Docker masih menawarkan fleksibilitas dan kemampuan yang jauh lebih banyak dibandingkan dengan proyek baru Apple.

Sebagai contoh, saat ini belum ada padanan docker-compose, dan ekosistem tooling (misalnya, belum ada dashboard GUI, orkestrasi yang terbatas) masih perlu dikembangkan dan ditingkatkan.

Jadi, saya bertanya-tanya mengapa Apple menghabiskan begitu banyak usaha untuk membuat ini. Selain dari "Dibuat oleh Apple", mereka tampaknya ingin mendapatkan bagian mereka dari ceruk pasar besar ini, yang hampir sepenuhnya didominasi oleh Docker, dengan menawarkan integrasi macOS yang lebih baik, menggunakan API asli sistem alih-alih daemon pihak ketiga, dan pada akhirnya, isolasi keamanan yang lebih baik, yang mengurangi permukaan serangan.

Karena proyek ini masih dalam tahap awal, akan menarik untuk melihat bagaimana perkembangannya—dan apakah proyek ini dapat memenuhi ekspektasi Apple dengan akhirnya menggantikan Docker atau Podman sebagai alat kontainer utama bagi pengembang di macOS.