Apple Baru Saja Membangun WSL untuk Mac (Container Machines)

BBetter Stack
Computing/SoftwareInternet Technology

Transcript

00:00:00Tersembunyi di balik semua hal tentang Apple Intelligence di WWDC tahun ini,
00:00:03Apple diam-diam merilis versi Windows Subsystem for Linux mereka sendiri yang disebut Container
00:00:06Machines. Ini memberi Anda lingkungan Linux persisten yang ringan di Mac Anda dengan cara yang sangat
00:00:10mudah digunakan, dan sebenarnya dibangun di atas proyek container Apple yang mereka
00:00:14rilis tahun lalu, yang merupakan alternatif Docker, yang semuanya tentu saja dioptimalkan untuk Apple
00:00:18Silicon. Jadi mari kita lihat apa itu Container Machines, cara kerjanya,
00:00:21dan juga melakukan rekap singkat tentang Apple Containers bagi yang melewatkannya.
00:00:29Jadi saya akan mulai dengan menyiapkan Container Machine, lalu saya akan menjelaskan cara
00:00:32semua ini bekerja setelahnya. Tapi yang saya inginkan adalah lingkungan Ubuntu Linux. Jadi saya cukup
00:00:37memiliki Dockerfile di sini dengan image Ubuntu, dan kemudian beberapa hal di dalamnya untuk menginstal beberapa alat
00:00:41umum. Ini akan bekerja dengan image yang kompatibel dengan OCI apa pun, jadi hampir semua yang Anda
00:00:46gunakan dengan Docker. Satu-satunya hal yang perlu disertakan agar menjadi VM adalah program
00:00:50inisialisasi sistem. Setelah kita memiliki image Dockerfile yang ingin kita gunakan untuk VM, yang perlu kita lakukan adalah
00:00:54membangun ini menggunakan alat container Apple. Jadi Anda bisa melihat ini adalah perintah yang saya gunakan,
00:00:58karena saya memiliki Dockerfile di folder ini, dan saya hanya akan menandainya sebagai local
00:01:01Ubuntu machine, dan kita bisa tekan enter untuk memulai pembangunan. Alat container,
00:01:05omong-omong, berfungsi di macOS 26 ke atas, dan Anda bisa menginstalnya dari GitHub dengan cukup pergi ke
00:01:09repo-nya, pergi ke bagian rilis, dan mengunduh paket terbaru. Sepertinya pembangunan image saya
00:01:13selesai di sini, dan Anda bisa melihatnya sangat mirip dengan Docker. Ini hanya membangun image OCI.
00:01:17Itu saja yang kita butuhkan untuk sebuah Container Machine, jadi sekarang kita bisa jalankan container machine create,
00:01:21sebutkan image yang kita inginkan untuk Container Machine kita, beri nama yang mudah diingat,
00:01:24dan saya juga akan mengaturnya sebagai default, jadi perintah apa pun yang saya jalankan akan mengasumsikan
00:01:27saya berada di Container Machine ini, dan saya tidak perlu menyebutkannya berdasarkan nama. Dengan ini kita bisa tekan
00:01:31enter, dan dalam hitungan detik semuanya sudah siap. Kita bisa melihat sedikit informasi tentang
00:01:35Container Machine yang baru saja saya buat dengan melakukan container machine list. Di sini Anda bisa melihatnya memiliki
00:01:38Ubuntu yang baru saja saya buat, alamat IP, 7 CPU, dan 18 gigabyte memori. CPU dan memori
00:01:44bisa dikonfigurasi, omong-omong, tapi secara default akan menggunakan setengah dari memori Mac Anda. Untuk benar-benar
00:01:48menggunakan Container Machine Anda, yang perlu Anda lakukan hanyalah container machine run,
00:01:51dan Anda bisa mengosongkannya jika ingin masuk ke terminal interaktif, atau Anda bisa langsung
00:01:54menambahkan perintah setelahnya jika ingin menjalankan itu di mesin Linux Anda. Dalam kasus ini Anda bisa melihat saya
00:01:58baru saja tekan enter, dan sekarang saya berada di terminal interaktif di lingkungan Linux saya. Kita bisa mengonfirmasi
00:02:02ini dengan melakukan sesuatu seperti uname -a, dan Anda melihat ini mencetak balik bahwa ini adalah Linux Ubuntu,
00:02:06berbeda dengan saat saya menjalankan ini di Mac saya dan kita mendapatkan Darwin. Nah, salah satu hal keren tentang
00:02:10Container Machines adalah adanya berbagi pengguna otomatis, jadi pengguna saya sudah disalin dari Mac saya
00:02:14ke lingkungan Linux saya, dan hal yang sama juga berlaku untuk direktori home Anda. Ini akan me-mount seluruh
00:02:18direktori home Anda sebagai read-write, jadi saya memiliki akses di lingkungan Linux ini ke semua file yang saya
00:02:23miliki di Mac saya. Anda bisa melihat di mana saya sebenarnya menjalankan container run, ini menempatkan saya langsung ke file
00:02:27itu di lingkungan Linux, dan kita sudah memiliki file-file itu di sana. Ini juga memiliki volumenya sendiri
00:02:31meskipun, jadi jika kita menavigasi ke direktori home dari mesin Ubuntu ini, Anda bisa melihat tidak ada apa-apa
00:02:35di sana, meskipun ada file di Mac saya, dan itu karena yang satu ini adalah lingkungan Linux,
00:02:39dan di sinilah Anda menaruh file dot (.) Anda yang khusus untuk Linux. Berbagi folder
00:02:43membuatnya sangat mudah untuk mengembangkan sesuatu di Mac Anda menggunakan semua alat normal Anda, dan mungkin bahkan beberapa
00:02:48yang hanya kompatibel dengan macOS, lalu cukup beralih ke Linux saat Anda perlu menguji sesuatu.
00:02:52Misalnya, saya memiliki aplikasi BUN yang sangat sederhana di sini, dan saya ingin mengompilasi ini menjadi satu
00:02:56executable yang akan bekerja di Linux, tapi saya sebenarnya tidak bisa menguji Linux di macOS saya, jadi menjalankan ini,
00:03:01saya tidak tahu apakah berhasil atau tidak. Jika kita beralih ke Container Machine,
00:03:04Anda bisa melihat saya bisa langsung menjalankan perintahnya. Saya tidak perlu mentransfer file atau apa pun,
00:03:08berkat fakta bahwa ini berbagi sistem file yang sama. Jika saya tekan enter di sini, itu berjalan dengan baik.
00:03:12Aplikasi ini hanyalah server web yang sangat sederhana dengan halaman web ini, yang mencetak apa yang
00:03:16dijalankannya, jadi saat ini berjalan di Ubuntu 24. Anda juga bisa melihat ada tulisan subscribe
00:03:20yang lewat, sesuatu yang harus Anda lakukan. Sekarang saya baru saja menguji menjalankan server pengembangan BUN
00:03:23di lingkungan Linux, dan semuanya berfungsi, yang bisa kita lihat di sini,
00:03:27itu berjalan di BUN dev, dan tidak dikompilasi. Tapi jika saya memodifikasi salah satu file sumber dari Mac saya
00:03:31di sini, mungkin katakan hello alih-alih subscribe, saya perhatikan bahwa hot reloading sepertinya tidak
00:03:35menangkap perilaku itu, dan saya harus memulai ulang server pengembangan BUN agar perubahannya
00:03:39diterapkan. Nah, sekarang tulisannya hello. Saya pikir hot reloading akan bekerja dengan cara yang sama seperti breakpoint
00:03:43yang tidak benar-benar berfungsi jika Anda berada di versi kode macOS Anda, tapi yang bisa Anda lakukan adalah membuat
00:03:47editor Anda terhubung ke Container Machine melalui SSH, dan kemudian mengedit file dengan cara itu, dan dengan begitu
00:03:52breakpoint dan hot reloading mungkin akan berfungsi. Mereka sebenarnya memiliki tutorial tentang cara melakukan ini
00:03:55di dokumentasi mereka. Itu pada dasarnya semua yang perlu ditunjukkan ketika berbicara tentang cara benar-benar menggunakan
00:03:59Container Machine. Maksud saya, ini hanyalah lingkungan Ubuntu sekarang, dan sejujurnya seluruh pengalamannya
00:04:03cukup mulus. Perlu juga ditunjukkan bahwa Anda tidak terbatas hanya pada satu mesin. Anda bisa
00:04:08memiliki mesin Alpine, Ubuntu, dan Debian yang duduk berdampingan, jadi Anda memiliki satu distro
00:04:12per target, dan sejujurnya ini sangat bagus jika Anda melakukan pekerjaan lintas target. Selain itu, karena mesin-mesin ini
00:04:17sebenarnya bisa menjalankan SystemD asli, Anda bisa menguji tumpukan layanan yang tepat di dalamnya, seperti memiliki Postgres
00:04:22berjalan sebagai layanan nyata dengan aplikasi Anda di sampingnya, dan semuanya akan berperilaku seperti
00:04:26server Linux yang akan Anda deploy. Kesederhanaan adalah salah satu prinsip desain inti yang
00:04:30Apple dorong saat mengembangkan Container Machines. Mereka menginginkan VM yang cepat dan ringan yang
00:04:34terintegrasi ke dalam alur kerja Anda yang ada dan sangat mudah untuk disiapkan sesuai kebutuhan, serta persisten
00:04:39dari waktu ke waktu sehingga Anda dapat mengatur seluruh VM lingkungan pengembangan yang memiliki semua alat yang
00:04:42Anda biasanya butuhkan, siap saat Anda membutuhkannya. Sekali lagi, ini cukup mirip dengan apa yang dicoba oleh Windows Subsystem
00:04:47for Linux untuk dicapai. Mengenai bagaimana semua ini dibangun dan bagaimana perbandingannya dengan Docker dan
00:04:51OrbStack, kita pertama-tama perlu memahami alat container yang dirilis tahun lalu. Ini ditulis
00:04:55dalam Swift dan dimaksudkan sebagai alternatif Docker yang dapat menjalankan container, dan ini menjalankan image
00:04:59OCI standar apa pun, jadi apa pun yang bisa Anda tarik dari Docker Hub akan tetap berfungsi. Hal unik tentang
00:05:04pendekatan Apple adalah setiap container mendapatkan mesin virtual ringannya sendiri melalui
00:05:08kerangka kerja virtualisasi mereka, daripada sekumpulan container yang berbagi satu VM Linux besar, yang merupakan apa yang
00:05:13dilakukan Docker Desktop. Beberapa manfaat dari pendekatan itu bisa berupa keamanan, karena setiap container memiliki
00:05:17properti isolasi VM penuh. Kemudian ada juga privasi, karena Anda hanya me-mount data yang diperlukan
00:05:22ke dalam setiap VM, sedangkan ketika Anda memiliki VM bersama, Anda sebenarnya me-mount semua data ke dalam
00:05:27VM bersama itu, jadi itu bisa di-mount secara selektif ke dalam masing-masing container. Akhirnya, mungkin juga ada
00:05:31manfaat kinerja, karena container yang dibuat menggunakan Apple Container sebenarnya memerlukan lebih sedikit memori daripada
00:05:36VM penuh, dan waktu boot cukup mirip dengan Docker dan alat lainnya. Jika kita benar-benar melihat beberapa
00:05:41tolok ukur yang dilakukan RepoFlow di sini, membandingkan Apple Containers dengan OrbStack dan Docker Desktop, kita bisa melihat
00:05:46hasilnya sebenarnya tidak terlalu buruk. Sulit untuk dikatakan di sini, tapi Apple Containers sebenarnya mencapai
00:05:50peristiwa CPU single-threaded terbanyak, tapi OrbStack cukup dekat, ada selisih di dalamnya, dan cerita itu
00:05:55yang sama berlanjut ketika kita beralih ke multi-threaded juga, mereka semua bekerja dengan sangat baik. Di mana Apple memang
00:06:00tampaknya sedikit memimpin adalah dalam throughput memori, dengan OrbStack berada di posisi kedua dan Docker
00:06:04Desktop terakhir, tapi ketika berbicara tentang waktu mulai untuk container kecil, tampaknya Apple memang memiliki beberapa
00:06:09pekerjaan yang tersisa untuk dilakukan di sini, tapi itu masih di bawah satu detik, hanya saja Docker Desktop dan OrbStack melakukannya dalam
00:06:14kurang dari seperempat detik. Ada banyak tolok ukur lainnya di sini, jadi saya akan meninggalkan tautan ke ini,
00:06:17tapi pada dasarnya sisanya menunjukkan bahwa OrbStack memiliki kinerja sistem file dan file kecil yang luar biasa,
00:06:22tapi mereka juga menunjukkan bahwa Apple Containers setara, jika tidak lebih baik daripada Docker Desktop.
00:06:27Ada beberapa kendala meskipun yang ingin Anda ketahui sebelum menggunakan Container Machines,
00:06:30dan yang pertama adalah memori. Seperti yang saya sebutkan sebelumnya, mesin ini default ke setengah dari RAM sistem Anda,
00:06:35jadi ada baiknya mengetahui bahwa itu sebenarnya tidak pernah mengembalikan ini. Jadi jika Anda memiliki beban kerja yang intensif memori
00:06:39di container, mungkin selama pembangunan besar, memori itu sebenarnya ditahan sampai Anda
00:06:43memulai ulang mesin. Ini sebenarnya salah satu manfaat unik dari OrbStack, di mana ia memiliki memori
00:06:47dinamis, yang mengurangi penggunaan memori dengan melepaskan memori yang tidak terpakai kembali ke macOS. Sejauh yang saya tahu,
00:06:53tidak ada hal lain yang melakukan ini. Kedua, juga tidak ada GPU dan USB pass-through. Saya telah melihat masalah terbuka
00:06:57untuk keduanya di GitHub itu, jadi mungkin itu akan didukung di masa depan. Ketiga, juga
00:07:02tampaknya sedikit rumit untuk membuat aplikasi GUI berjalan, seperti mungkin jika Anda ingin menjalankan versi Linux
00:07:06dari VS Code atau aplikasi khusus Linux lainnya. Itu jelas bukan pengalaman yang mulus, saya mungkin akan menggunakan sesuatu yang lain untuk
00:07:11ini. Akhirnya, ada juga trade-off keamanan karena, seperti yang saya sebutkan sebelumnya, mount direktori home itu
00:07:15yang membuat semuanya begitu nyaman adalah read-write secara default, yang berarti apa pun yang Anda jalankan
00:07:20di dalam mesin Linux itu bisa menyentuh kunci SSH Anda, kredensial cloud Anda, dan segala sesuatu di
00:07:25Mac Anda. Sepertinya Anda sebenarnya hanya bisa mengatur mount ke read-only atau mematikannya sepenuhnya. Tidak
00:07:29tampaknya ada kemampuan untuk hanya me-mount folder tertentu. Secara keseluruhan, setelah mencoba Apple
00:07:33Container Machines, saya mungkin akan tetap menggunakan OrbStack karena terasa sebagai opsi yang lebih dipoles
00:07:37hari ini dengan manajemen sumber daya yang lebih baik dan lebih banyak fitur, tapi saya tahu beberapa orang tidak menyukai bahwa
00:07:40OrbStack berbayar jika Anda menginginkan penggunaan bisnis dan komersial, jadi tanpa OrbStack, saya mungkin
00:07:45akan memilih Apple Containers daripada Docker Desktop, dan ada juga Lima, yang merupakan alternatif hebat lainnya.
00:07:49Apa yang Anda gunakan? Apakah OrbStack, Docker Desktop, atau Lima? Beri tahu saya di kolom komentar di
00:07:53bawah, sementara Anda di sana jangan lupa subscribe, dan seperti biasa, sampai jumpa di video berikutnya.

Key Takeaway

Apple Containers menyediakan alternatif Docker yang ringan dan terintegrasi untuk menjalankan lingkungan Linux persisten dengan isolasi VM penuh pada perangkat Apple Silicon.

Highlights

  • Apple merilis Container Machines, lingkungan Linux berbasis virtualisasi yang dirancang khusus untuk Apple Silicon pada macOS 26 ke atas.

  • Container Machines menggunakan kerangka kerja virtualisasi Apple untuk memberikan isolasi VM penuh bagi setiap container, berbeda dengan model VM bersama pada Docker Desktop.

  • Proses pembuatan VM hanya memerlukan Dockerfile yang kompatibel dengan OCI dan program inisialisasi sistem, memungkinkan pembuatan lingkungan Ubuntu dalam hitungan detik.

  • Sistem ini secara otomatis melakukan sinkronisasi direktori home Mac ke dalam lingkungan Linux dengan akses read-write, mempermudah pengembangan lintas platform.

  • Tolok ukur menunjukkan Apple Containers memiliki throughput memori yang unggul dibandingkan OrbStack dan Docker Desktop, meskipun waktu mulai container sedikit lebih lambat di bawah satu detik.

  • Keterbatasan utama saat ini meliputi penggunaan memori statis yang tidak dikembalikan ke host, ketiadaan GPU/USB pass-through, serta risiko keamanan terkait akses read-write penuh pada direktori home.

Timeline

Pengenalan dan Penyiapan Container Machines

  • Container Machines menyediakan lingkungan Linux persisten yang ringan di macOS.
  • Setiap image OCI yang kompatibel dengan Docker dapat digunakan asalkan menyertakan program inisialisasi sistem.
  • Alat ini mengoptimalkan kinerja khusus untuk perangkat keras Apple Silicon.

Apple diam-diam meluncurkan Container Machines sebagai bagian dari ekosistem pengembangannya. Pengguna dapat membuat mesin Linux dengan menggunakan Dockerfile standar. Proses ini dimulai dengan membangun image OCI menggunakan alat container Apple, yang kemudian diubah menjadi VM melalui perintah create.

Pengalaman Penggunaan dan Alur Kerja

  • Integrasi sistem file memungkinkan akses read-write langsung dari Mac ke lingkungan Linux.
  • Pengguna dapat menjalankan distribusi Linux berdampingan seperti Alpine, Ubuntu, dan Debian untuk pekerjaan lintas target.
  • Lingkungan ini mendukung SystemD asli untuk pengujian tumpukan layanan yang akurat.

Pengguna mendapatkan akses langsung ke file Mac di dalam Linux berkat sinkronisasi direktori home. Hal ini memudahkan pengujian aplikasi lintas platform tanpa perlu transfer file manual. Editor kode juga dapat dihubungkan ke VM melalui SSH untuk mendukung fitur pengembangan seperti breakpoint dan hot reloading.

Arsitektur, Kinerja, dan Batasan

  • Setiap container mendapatkan VM sendiri melalui kerangka kerja virtualisasi Apple untuk isolasi yang lebih kuat.
  • Apple Containers menunjukkan kinerja throughput memori yang lebih baik daripada Docker Desktop.
  • Batasan saat ini mencakup memori statis, ketiadaan dukungan GPU/USB pass-through, dan risiko keamanan mount direktori home.

Arsitektur Apple Containers membedakan diri dari Docker Desktop dengan memberikan isolasi VM penuh per container. Meskipun kinerjanya sangat kompetitif, fitur manajemen memori dinamis seperti yang dimiliki OrbStack belum tersedia. Keterbatasan pada akses hardware dan keamanan mount menjadi pertimbangan utama bagi pengguna profesional.

Community Posts

View all posts