13 poin oleh GN⁺ 3 hari lalu | 2 komentar | Bagikan ke WhatsApp
  • Aplikasi macOS native untuk menjalankan dan mengelola container Linux dengan platform container Apple di Mac Apple silicon, dan bisa digunakan tanpa Docker Desktop
  • Berkomunikasi langsung lewat XPC dengan daemon container open-source dari Apple, menggunakan jalur yang sama dengan CLI, tanpa Electron, webview, atau background agent sendiri
  • Menangani mulai dari start/stop container, streaming log, akses terminal, penjelajahan file, build Dockerfile, hingga impor Compose dalam satu aplikasi
  • Disediakan sebagai aplikasi gratis open-source berlisensi MIT, telah ditandatangani dan dinotariskan dengan Apple Developer ID, serta membutuhkan Mac Apple silicon dengan macOS 15 atau lebih baru
  • Berbeda dari Docker Desktop, memakai VM ringan per container; saat tidak ada container yang berjalan, layanan latar belakang platform berada dalam kondisi idle sekitar 25MB

Tujuan dan lingkungan eksekusi Davit

  • Davit adalah aplikasi macOS sepenuhnya native untuk platform container Apple
  • Menjalankan container Linux di Apple silicon, dan tidak membutuhkan Docker Desktop
  • Gratis dan open-source, disediakan dengan lisensi MIT
  • Aplikasi telah ditandatangani dan dinotariskan dengan Apple Developer ID
  • Persyaratannya adalah Mac Apple silicon yang menjalankan macOS 15 atau lebih baru
  • Instalasi bisa dilakukan dari release atau lewat Homebrew
    • brew install wouterdebie/tap/davit

Berkomunikasi langsung dengan daemon container Apple

  • Davit berkomunikasi langsung lewat XPC dengan daemon container open-source dari Apple
  • Jalur ini sama dengan jalur komunikasi yang digunakan CLI container
  • Tidak menggunakan Electron, webview, atau background agent sendiri

Fitur pengelolaan container

  • Dashboard menampilkan layanan, penggunaan disk, dan CPU real-time untuk semua container yang sedang berjalan
  • Di daftar container, status dapat dilihat dan dioperasikan langsung dari tiap baris
    • Start, stop, restart, hapus
    • CPU real-time
    • Memori
    • IP
  • Layar per container menyediakan fitur untuk memahami status eksekusi
    • Log streaming dengan mode follow dan boot
    • Grafik status real-time
    • Pemeriksaan konfigurasi mentah
  • Untuk container yang sedang berjalan, terminal bisa dibuka langsung melalui API native
    • Dapat membuka shell interaktif di Terminal atau iTerm
    • Tidak membutuhkan CLI

Pengeditan container immutable dan akses file

  • Karena container bersifat immutable, Davit memungkinkan membuat ulang container baru yang sudah dipraisi berdasarkan konfigurasi lama
  • Konfigurasi container baru mencerminkan konfigurasi lama kecuali entrypoint dan env dari image
  • Alurnya disesuaikan untuk cepat mengubah port, environment variable, mount, dan resource
  • Di dalam aplikasi, filesystem container yang sedang berjalan dapat dijelajahi
    • Berpindah folder
    • Mengunduh file ke Mac
    • Mengunggah file
    • Menghapus file
  • Operasi file ditangani dengan API native dan tidak membutuhkan perintah docker cp

Impor Compose dan build Dockerfile

  • Davit membuka docker-compose.yml dan terlebih dahulu menampilkan resource yang akan dibuat
    • Layanan sesuai urutan dependensi
    • Volume
    • Network
    • Perintah CLI ekuivalen per layanan
    • Peringatan untuk item yang tidak didukung
  • Karena platform Apple tidak memiliki compose native, Davit mengorkestrasi stack secara langsung
  • Impor Compose menargetkan subset yang didukung
    • Didukung: image, ports, environment, named/bind volumes, networks, resource limits, command, user, working_dir
    • Contoh yang diberi peringatan: restart:, healthcheck:, build:
  • Build Dockerfile dapat dilakukan dari Images → Build Image
    • Memilih folder context dan Dockerfile
    • Mengatur tag dan build args
    • Davit menjalankan langsung builder berbasis BuildKit dari Apple, dan memulainya bila perlu
  • Ada juga batasan platform saat ini
    • Dockerfile yang melebihi 16KiB akan ditolak
    • Ini terkait dengan upstream bug apple/container
    • Build context tidak boleh ditempatkan di bawah /tmp

Image, volume, network, registry

  • Davit mendukung operasi terkait image
    • Pull dengan tampilan progress
    • Menjalankan container dari image
    • Memberi tag
    • Prune
  • Operasi volume dan network juga tersedia
    • Membuat volume dengan ukuran tertentu
    • Membuat subnet kustom
    • Memeriksa item yang sedang dipakai sebelum dihapus
  • Login registry ditangani di Settings → Registries
    • Docker Hub
    • ghcr.io
    • quay.io
    • Registry OCI apa pun
  • Kredensial diverifikasi di registry sebelum disimpan
  • Kredensial yang telah diverifikasi disimpan di macOS login keychain dan dibagikan dengan CLI container
  • Docker Hub mewajibkan penggunaan access token, bukan kata sandi

Pengaturan platform dan instalasi otomatis

  • Davit dapat mengedit pengaturan platform dari dalam aplikasi
    • CPU/memori default untuk container baru
    • Registry
    • DNS
    • Resource builder
  • Pengaturan diverifikasi oleh loader konfigurasi milik platform sendiri, lalu disimpan sebagai TOML override yang bersih
  • Jika platform container Apple belum terpasang, Davit mengunduh dan memverifikasi installer bertanda tangan dari Apple, lalu memasangnya ke Library pengguna
  • Proses instalasi tidak membutuhkan hak admin
  • Jika perlu, CLI container juga bisa ditambahkan ke shell

Implementasi aplikasi dan alur mulai penggunaan

  • Davit sepenuhnya diimplementasikan dengan SwiftUI
  • Menyediakan aksi cepat di menu bar
  • Ikon Dock dapat ditampilkan hanya saat pengguna menginginkannya
  • Tidak membuka browser untuk rendering grafik real-time
  • Contoh alur mulai adalah sebagai berikut
    • Instal dari Releases atau lewat Homebrew
    • Saat pertama dijalankan, jika platform belum ada, Davit akan memasangnya
    • Pull nginxdemos/hello dari Images → Pull Image
    • Jalankan dari image atau gunakan Containers → Run Container
    • Petakan host 8088 ke container 80
    • Tekan Open in Browser di baris Ports container, atau akses localhost:8088
    • Di container yang sedang berjalan, jelajahi CPU, memori, disk, log, file, terminal, serta fitur Edit & Recreate

Perbedaan dengan Docker Desktop dan OrbStack

  • Davit menggunakan engine Apple
    • Setiap container berjalan di VM ringan tersendiri berbasis Apple Virtualization framework
    • Memiliki alamat IP per container
    • Dioptimalkan untuk Apple silicon
  • Menggunakan image OCI
    • Dapat pull dari Docker Hub, ghcr.io, quay.io, atau registry apa pun
    • Image privat juga bisa digunakan lewat login registry
  • Menautkan library klien Apple dan berkomunikasi langsung lewat XPC
    • Tidak ada socket shim
    • Tidak ada perjanjian lisensi
    • Tidak ada akun
  • Bundle aplikasi berukuran 17MB
    • Tanpa Electron
    • Tanpa image VM yang dibundel
    • Tanpa layanan latar belakang sendiri
  • Arahnya berbeda dari OrbStack
    • OrbStack adalah aplikasi komersial dengan lapisan virtualisasi kompatibel Docker miliknya sendiri
    • Davit adalah UI gratis open-source di atas platform container Apple
    • Davit tidak memiliki item resident saat tidak ada container, memakai IP per container dan bridge network, serta memiliki isolasi antarkontainer yang lebih kuat
    • OrbStack lebih unggul dalam kompatibilitas drop-in CLI/API docker dan dukungan alat yang lebih luas
    • Keduanya menjalankan image OCI standar

Memori, DNS, keamanan

  • Struktur memorinya tidak menggunakan VM Linux multi-GiB yang selalu menyala
  • Docker Desktop mempertahankan satu VM besar terlepas dari ada tidaknya container yang berjalan, tetapi platform Apple mem-boot VM ringan per container dan mematikannya saat container berhenti
  • Saat tidak ada container yang berjalan, layanan latar belakang platform berada dalam kondisi idle sekitar 25MB
  • Davit sendiri adalah aplikasi SwiftUI native, bukan Electron, dan penggunaan memorinya sebagian besar adalah memori framework macOS bersama
  • Untuk mengakses dari Mac menggunakan nama container, domain DNS lokal platform dapat digunakan
    • Jalankan sudo container system dns create test sekali, atau gunakan domain sendiri
    • Atur sebagai domain default di Settings → Platform → DNS
    • Container web akan merespons sebagai web.test dari Mac
  • Semua container memiliki IP sendiri, dan IP ditampilkan di bagian Network
  • Jika menjalankan Avahi di dalam guest, alias mDNS .local dapat di-broadcast
  • Setiap release ditandatangani dan dinotariskan dengan Apple Developer ID, sehingga terbuka tanpa peringatan Gatekeeper
  • Aplikasi ini open-source berlisensi MIT, dan dapat dibaca atau di-build sendiri
  • Davit hanya berkomunikasi dengan daemon container lokal dan pemeriksaan update GitHub

2 komentar

 
galadbran 2 hari lalu

Saya tadinya malas mengelolanya lewat command line, jadi senang sekali ini akhirnya muncul ^^ Belakangan ini saya memang lebih sering memakai Orbstack.

 
GN⁺ 3 hari lalu
Komentar Hacker News
  • Strategi terbaik yang kupakai di era AI adalah tidak melakukan apa-apa
    Aku sempat terpikir ide serupa dan merasa bisa membuatnya dengan vibe coding, tapi kupikir orang lain akan lebih tertarik dan membuatnya lebih dulu, dan ternyata memang begitu
    Aplikasinya terlihat bagus dan aku tidak sabar mencobanya
    Sebagai ide gratis, aku ingin mengurung agen di dalam mesin virtual, lalu mengirim instruksi dari luar mesin virtual lewat harness untuk mengendalikan agen-agen yang terpasang di dalamnya. Idealnya, tidak perlu ada Codex/Claude atau yang semacam itu terpasang di host
    Arah yang lebih keren adalah membuat beberapa akun pengguna di dalam mesin virtual, lalu membatasi kebijakan sistem file dan jaringan per pengguna. Dengan begitu, agen pengembang, agen QA, dan sebagainya masing-masing punya tampilan kerja yang berbeda, dan ini bisa menjadi lapisan fondasi yang kuat untuk otomatisasi tambahan
    Tentu saja, harus bisa juga “memasang” berbagai resource ke mesin virtual seperti DB, queue, dan volume eksternal agar agen bisa memakainya berdasarkan izin

    • Itu bisa dilakukan secara persis dengan coderunner
      https://GitHub.com/instavm/coderunner
    • Bukan mesin virtual, melainkan memakai sandbox dan pengguna terpisah, tetapi sandvault cocok untuk kebutuhan ini dan juga menangani instalasi otomatis
      Demi transparansi, aku pernah mengirim beberapa PR ke sini
      https://github.com/webcoyote/sandvault
    • “Power move di era AI: tidak melakukan apa-apa” sebenarnya sudah jadi strategiku bahkan sebelum AI
      Sejak akhir usia 20-an atau awal 30-an, aku hampir sepenuhnya berhenti mengembangkan sesuatu di waktu luang, karena semua kesenangan yang dulu kudapat dari coding sudah hilang. Sebenarnya dari awal pun aku tidak terlalu menyukainya; aku hanya benar-benar buruk dalam menilai apakah sesuatu layak menghabiskan waktuku atau tidak
      Kalaupun terpikir program atau skrip yang enak dimiliki, kebanyakan tetap “tidak sebanding antara usaha dan hasilnya”, seperti tabel xkcd yang menghitung waktu balik modal untuk membuat program demi menghemat beberapa menit per minggu. Atau kadang itu tidak benar-benar dibutuhkan, hanya akan terasa menarik atau menyenangkan kalau ada, tetapi untuk benar-benar membuatnya perlu sangat banyak waktu sehingga sama sekali tidak layak
      Kalau ada orang lain yang membuat dan merilis apa yang kuinginkan, bagus; kalau tidak, ya sudahlah
      Perubahan besar yang dibawa LLM adalah sekarang kita bisa menghasilkan hal-hal seperti skrip kecil dalam hitungan menit, dengan biaya beberapa sen sampai beberapa dolar. Aku jadi membuka lagi ide-ide yang sangat niche dan sudah lama kusimpan
      Hal-hal yang dulu butuh beberapa akhir pekan hanya untuk menelusuri API dan dokumentasi yang asing, sekarang bisa selesai dalam 30 menit, atau setidaknya aku bisa memutuskan dalam hitungan menit, bukan berjam-jam, apakah itu memang tidak mungkin atau terlalu merepotkan sehingga harus ditinggalkan selamanya
    • Aku juga pernah membuat sesuatu yang mirip sebagai frontend browser sederhana
      Aku suka menjalankan model open source menengah hingga besar, tetapi aku tidak bisa begitu saja percaya bahwa model-model itu tidak akan bertindak liar, jadi aku membuatnya dan akan membagikannya sebentar lagi
    • Aku juga pernah memikirkan ini
      Rasanya ini bisa sesederhana memasang Claude di mesin virtual lalu mengaksesnya lewat terminal SSH. Kalau perlu GUI, pakai ekstensi Remote SSH milik VSCode dan kita juga dapat UI seperti file browser
      Mungkin saja ekstensi Claude untuk VSCode atau ekstensi chat lain juga bisa dipasang di dalam mesin virtual
  • Yang lebih menonjol bagiku daripada proyek ini sendiri adalah bahwa fenomena yang sudah bisa diperkirakan banyak orang, terutama selama sekitar setahun terakhir, kini makin cepat terlihat secara nyata. Sekarang orang bisa membuat versi mereka sendiri dari ide yang sama jauh lebih cepat daripada sebelumnya
    Aku mencari sekitar 10 menit dan menemukan beberapa proyek Swift serupa, dan kebanyakan baru berumur beberapa minggu atau beberapa bulan
    https://github.com/tdeverx/contained-app
    https://github.com/nico81/iContainer
    https://github.com/wouterdebie/davit
    https://github.com/Augani/dory
    https://github.com/tofa84/berth
    https://github.com/erdaltoprak/ContainerUtility
    https://github.com/andrew-waters/orchard
    Masih ada lebih banyak lagi kalau memasukkan yang bintangnya di GitHub lebih sedikit, yang khusus command line, atau yang bukan Swift, tetapi intinya begini
    Orang akan semakin mampu membuat sendiri versi perangkat lunak yang mereka inginkan. Kalau begitu, nilai perangkat lunak buatan orang lain akan menurun. Era perangkat lunak yang sangat dipersonalisasi sedang datang

    • Apakah bisa dibilang semua proyek ini setara dalam hal kualitas tingkat atas? Aku tidak yakin bisa bilang begitu
      Dulu kita bisa mengira-ngira seberapa besar usaha yang masuk ke sesuatu seperti ini dari tingkat kerapian situs web atau beberapa elemen permukaan lainnya. Sekarang bagian-bagian seperti itu mudah diselesaikan dengan LLM
      Mirip juga, setelah semuanya mereda, salah satu dampak terbesar yang ditinggalkan Kickstarter adalah video pitch 3 menit yang berkembang dan dipoles secara agresif
      Aku tidak tahu apakah itu benar-benar berujung pada implementasi dan roadmap yang dipikirkan matang-matang, serta momentum yang nyata
    • Di iOS ceritanya berbeda. Untuk masuk ke App Store, kamu harus membayar biaya keanggotaan tahunan, atau membangun ulang dan memasang ulang build akun pribadi kira-kira setiap 30 hari
  • Terlihat seperti aplikasi yang benar-benar solid. Ukurannya 17MB dan saya suka karena langsung memakai library ContainerAPIClient
    Dalam 3 hari ada 28 commit, 5.015 baris Swift, dan semua commit memiliki “Co-Authored-By: Claude Fable 5”
    Bagus juga karena sudah ditandatangani dan dinotarisasi. Saat saya pasang, pada peluncuran pertama aplikasi ini mengunduh komponen platform container yang diperlukan
    Kalau boleh usul, akan bagus jika situsnya menambahkan tutorial memulai yang merekomendasikan satu image untuk dicoba, lalu menunjukkan cara menjalankan image itu dan apa yang bisa dilakukan dengannya lewat screenshot atau video tanpa suara
    Dialog pembuatan image memang menyarankan “nginx:latest”, tetapi itu bukan demo awal yang terlalu bagus

    • Frasa AI-Maxing di situs webnya agak terlalu kentara. Tapi itu bukan berarti aplikasinya tidak hebat
    • Saran yang bagus. Akan segera saya tambahkan
    • Tutorial dengan contoh yang sedikit lebih realistis sepertinya akan sangat membantu di sini
      nginx:latest memang menunjukkan bahwa plumbing-nya bekerja, tetapi kurang memperlihatkan di mana Apple Containers terasa berbeda dibanding Docker Desktop atau OrbStack
      Contoh aplikasi kecil dengan volume, port mapping, dan loop rebuild sederhana akan membuat nilainya jauh lebih mudah terlihat
  • Ha! Sepertinya kami juga membuat hal yang sama: https://container-ui.fly.dev/
    Jadi kepikiran, seharusnya saya tidak membakar token sebanyak itu

    • Oh, halo. Barusan saya melihat yang membandingkannya dengan Orchard, itu saya
      Kelihatannya rapi. Pada akhirnya kita semua membuat hal yang sama ya ><
  • Saya sudah hampir 2 tahun suka memakai OrbStack
    Integrasinya bagus, cepat, dan kompatibel dengan perintah docker, jadi bagi saya layak dibayar
    Tapi saya tetap akan mencoba ini juga

    • Sepertinya container native macOS menjalankan mesin virtual Linux terpisah untuk setiap container
      Kelebihan OrbStack adalah semua container berjalan di dalam satu mesin virtual Linux, dan mereka melakukan banyak optimisasi di kedua sisi batas mesin virtual. Termasuk penggunaan file image sparse yang sangat menghemat ruang disk di sisi macOS
      Kalau Anda menjalankan lebih dari 4–5 container di macOS, manfaat OrbStack dalam performa dan penghematan sumber daya akan cepat terasa
    • Sepertinya tim OrbStack akan segera mendukung container native macOS, lalu menambahkan fitur pengelolaan mereka di atasnya
  • Bagus sekali. Mengunduh runtime dan menjalankan nginx:latest bekerja dengan sempurna
    Rasanya sekarang kalau scroll ke bawah di GitHub dan melihat Claude tercantum sebagai kontributor, itu seperti sinyal bahwa aplikasinya bakal bagus. Maksudnya terasa native, bukan seperti Electron

  • Akan bagus kalau Apple menambahkan kompatibilitas API docker ke Apple Containers

    • Saya juga kurang paham. Apakah ini berarti saya bisa memakai ini sebagai pengganti Docker Desktop dan menjalankan container docker secara “native” di Mac saya? Atau ini sesuatu yang sepenuhnya terpisah dari docker?
    • Ini berfokus pada build, dengan menjalankan buildkitd atau dockerd di dalam container Apple containerization
      Tidak ada port forwarding atau host volume seperti itu. Praktiknya lebih berfokus pada menjalankan buildkit di Mac
      Namun, ini terintegrasi penuh dengan docker CLI dan buildx
      https://github.com/cpuguy83/crucible
  • Fiturnya bagus, dan saya juga suka karena ini adalah aplikasi SwiftUI native yang kecil
    Baru-baru ini saya menulis artikel [1] tentang memakai Apple container untuk coding agentic, dan barusan saya perbarui untuk menyebut Davit. Untuk proyek pribadi, saya jauh lebih memilih memakai Apple container daripada Docker di dua Mac di rumah
    [1] https://open.substack.com/pub/marklwatson/p/running-opencode...

  • Kalau dibandingkan dengan OrbStack, bagaimana? Apakah Apple Containers memberi sesuatu yang benar-benar terasa dalam developer experience? Menurut tolok ukur pemakaian saya, implementasi OrbStack saja sudah terasa secepat kilat

  • Beberapa hari lalu saya mengunggah versi serupa yang saya buat, tetapi hampir tidak ada respons
    Buat yang tertarik, ini mendukung container, machine, registry sebagai aplikasi menu bar
    https://news.ycombinator.com/item?id=48789503
    https://github.com/erdaltoprak/ContainerUtility