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.