1 คะแนน โดย GN⁺ 4 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • Davit คือแอป macOS แบบเนทีฟสำหรับรันและจัดการคอนเทนเนอร์ Linux บน Mac ที่ใช้ Apple silicon ผ่านแพลตฟอร์ม container ของ Apple และสามารถใช้งานได้โดยไม่ต้องมี Docker Desktop
  • สื่อสารโดยตรงกับ container daemon โอเพนซอร์สของ Apple ผ่าน XPC โดยใช้เส้นทางเดียวกับ CLI และไม่มี Electron, เว็บวิว หรือ background agent ของตัวเอง
  • จัดการได้ครบในแอปเดียว ตั้งแต่เริ่ม·หยุดคอนเทนเนอร์, สตรีม log, เข้าถึง terminal, สำรวจไฟล์, build Dockerfile ไปจนถึงนำเข้า Compose
  • ให้บริการเป็นแอปโอเพนซอร์สฟรีภายใต้ไลเซนส์ MIT ผ่านการเซ็นชื่อด้วย Apple Developer ID และ notarization แล้ว และต้องใช้ Mac Apple silicon ที่รัน macOS 15 ขึ้นไป
  • ต่างจาก Docker Desktop ตรงที่ใช้ VM น้ำหนักเบาแยกต่อคอนเทนเนอร์ และเมื่อไม่มีคอนเทนเนอร์กำลังรันอยู่ background service ของแพลตฟอร์มจะ idle ที่ประมาณ 25MB

เป้าหมายและสภาพแวดล้อมการใช้งานของ Davit

  • Davit คือแอป macOS แบบเนทีฟเต็มรูปแบบสำหรับแพลตฟอร์ม container ของ Apple
  • รันคอนเทนเนอร์ Linux บน Apple silicon และ ไม่ต้องใช้ Docker Desktop
  • เป็นโอเพนซอร์สฟรีและเผยแพร่ภายใต้ ไลเซนส์ MIT
  • แอปถูกเซ็นชื่อและ notarized ด้วย Apple Developer ID
  • ข้อกำหนดคือ Mac Apple silicon ที่รัน macOS 15 ขึ้นไป
  • ติดตั้งได้จาก release หรือผ่าน Homebrew
    • brew install wouterdebie/tap/davit

สื่อสารโดยตรงกับ container daemon ของ Apple

  • Davit สื่อสารโดยตรงกับ daemon container โอเพนซอร์สของ Apple ผ่าน XPC
  • เส้นทางนี้เป็นเส้นทางสื่อสารเดียวกับที่ container CLI ใช้
  • ไม่ใช้ Electron, เว็บวิว หรือ background agent ของตัวเอง

ฟีเจอร์จัดการคอนเทนเนอร์

  • แดชบอร์ดแสดง service, การใช้ดิสก์ และ CPU แบบเรียลไทม์ของคอนเทนเนอร์ทั้งหมดที่กำลังรันอยู่
  • ในรายการคอนเทนเนอร์ สามารถตรวจสอบสถานะและสั่งงานได้ทันทีจากแต่ละแถว
    • เริ่ม, หยุด, รีสตาร์ต, ลบ
    • CPU แบบเรียลไทม์
    • หน่วยความจำ
    • IP
  • หน้าของแต่ละคอนเทนเนอร์มีฟีเจอร์ช่วยดูสถานะการรันร่วมด้วย
    • Streaming logs พร้อมโหมด follow และ boot
    • กราฟสถานะแบบเรียลไทม์
    • ตรวจสอบการตั้งค่าดิบ
  • สำหรับคอนเทนเนอร์ที่กำลังรันอยู่ สามารถเปิด terminal ได้ทันทีผ่าน native API
    • เปิด interactive shell ใน Terminal หรือ iTerm ได้
    • ไม่ต้องใช้ CLI

การแก้ไขคอนเทนเนอร์แบบ immutable และการเข้าถึงไฟล์

  • เนื่องจากคอนเทนเนอร์เป็นแบบ immutable Davit จึงช่วยสร้างคอนเทนเนอร์ใหม่ที่กรอกค่าล่วงหน้าจากการตั้งค่าเดิมได้
  • การตั้งค่าคอนเทนเนอร์ใหม่จะสะท้อนค่าตั้งค่าเดิม ยกเว้น entrypoint และ env ของ image
  • ออกแบบมาให้เหมาะกับ workflow ที่เปลี่ยน port, environment variable, mount และ resource ได้รวดเร็ว
  • สามารถสำรวจ filesystem ของคอนเทนเนอร์ที่กำลังรันอยู่ภายในแอปได้
    • ย้ายไปตามโฟลเดอร์
    • ดาวน์โหลดไฟล์มายัง Mac
    • อัปโหลดไฟล์
    • ลบไฟล์
  • งานเกี่ยวกับไฟล์ประมวลผลผ่าน native API และไม่ต้องใช้คำสั่ง docker cp

นำเข้า Compose และ build Dockerfile

  • Davit เปิด docker-compose.yml เพื่อแสดง resource ที่จะถูกสร้างขึ้นล่วงหน้า
    • service ตามลำดับ dependency
    • volume
    • network
    • คำสั่ง CLI ที่เทียบเท่าสำหรับแต่ละ service
    • คำเตือนสำหรับรายการที่ไม่รองรับ
  • แพลตฟอร์มของ Apple ไม่มี compose แบบเนทีฟ ดังนั้น Davit จึง orchestrate stack เองโดยตรง
  • การนำเข้า Compose รองรับ subset ที่กำหนด
    • รองรับ: image, ports, environment, named/bind volumes, networks, resource limits, command, user, working_dir
    • ตัวอย่างรายการที่จะแจ้งเตือน: restart:, healthcheck:, build:
  • สามารถ build Dockerfile ได้จาก Images → Build Image
    • เลือกโฟลเดอร์ context และ Dockerfile
    • ตั้งค่า tag และ build args
    • Davit ขับตัว builder ที่อิง BuildKit ของ Apple โดยตรง และเริ่มให้หากจำเป็น
  • ปัจจุบันยังมีข้อจำกัดของแพลตฟอร์ม
    • Dockerfile ที่เกิน 16KiB จะถูกปฏิเสธ
    • เรื่องนี้เชื่อมโยงกับ upstream apple/container bug
    • build context ไม่สามารถอยู่ใต้ /tmp ได้

Image, volume, network และ registry

  • Davit รองรับงานที่เกี่ยวกับ image
    • pull พร้อมดูความคืบหน้า
    • รันคอนเทนเนอร์จาก image
    • กำหนด tag
    • prune
  • มีงานสำหรับ volume และ network ด้วย
    • สร้าง volume พร้อมกำหนดขนาด
    • สร้าง subnet ที่ผู้ใช้กำหนดเอง
    • ตรวจสอบรายการที่ใช้งานอยู่ก่อนลบ
  • การล็อกอิน registry ทำได้จาก Settings → Registries
    • Docker Hub
    • ghcr.io
    • quay.io
    • registry OCI ใดก็ได้
  • credential จะถูกตรวจสอบกับ registry ก่อนบันทึก
  • credential ที่ผ่านการตรวจสอบแล้วจะบันทึกใน macOS login keychain และแชร์กับ container CLI
  • Docker Hub ต้องใช้งาน access token แทนรหัสผ่าน

การตั้งค่าแพลตฟอร์มและการติดตั้งอัตโนมัติ

  • Davit สามารถแก้ไขการตั้งค่าแพลตฟอร์มได้ภายในแอป
    • CPU/หน่วยความจำเริ่มต้นสำหรับคอนเทนเนอร์ใหม่
    • registry
    • DNS
    • resource ของ builder
  • การตั้งค่าถูกตรวจสอบด้วย config loader ของแพลตฟอร์มเอง และบันทึกเป็น TOML override ที่สะอาด
  • หากยังไม่ได้ติดตั้งแพลตฟอร์ม Apple container Davit จะดาวน์โหลด installer ที่ Apple เซ็นชื่อไว้ ตรวจสอบความถูกต้อง แล้วติดตั้งลงใน Library ของผู้ใช้
  • ขั้นตอนติดตั้งไม่ต้องใช้สิทธิ์ผู้ดูแลระบบ
  • หากต้องการ ยังสามารถเพิ่ม container CLI เข้าไปใน shell ได้ด้วย

การพัฒนาแอปและ workflow เริ่มต้น

  • Davit พัฒนาทั้งหมดด้วย SwiftUI
  • มี quick action บน menu bar
  • ไอคอน Dock แสดงได้เฉพาะเมื่อผู้ใช้ต้องการ
  • ไม่เปิด browser เพื่อ render กราฟแบบเรียลไทม์
  • ตัวอย่าง workflow เริ่มต้นมีดังนี้
    • ติดตั้งจาก Releases หรือผ่าน Homebrew
    • เมื่อเปิดครั้งแรก หากยังไม่มีแพลตฟอร์ม Davit จะติดตั้งให้
    • pull nginxdemos/hello จาก Images → Pull Image
    • รันจาก image หรือใช้ Containers → Run Container
    • map host 8088 ไปยังคอนเทนเนอร์ 80
    • กด Open in Browser ในแถว Ports ของคอนเทนเนอร์ หรือเข้า localhost:8088
    • สำรวจ CPU, หน่วยความจำ, ดิสก์, log, ไฟล์, terminal และฟีเจอร์ Edit & Recreate ในคอนเทนเนอร์ที่กำลังรันอยู่

ความแตกต่างจาก Docker Desktop และ OrbStack

  • Davit ใช้ engine ของ Apple
    • คอนเทนเนอร์แต่ละตัวรันใน VM น้ำหนักเบาของตัวเองที่อิง Apple Virtualization framework
    • มี IP address แยกต่อคอนเทนเนอร์
    • ปรับแต่งมาสำหรับ Apple silicon
  • ใช้ image แบบ OCI
    • pull ได้จาก Docker Hub, ghcr.io, quay.io หรือ registry ใดก็ได้
    • image ส่วนตัวก็ใช้ได้ผ่านการล็อกอิน registry
  • ลิงก์กับ client library ของ Apple และสื่อสารโดยตรงผ่าน XPC
    • ไม่มี socket shim
    • ไม่มีสัญญาไลเซนส์
    • ไม่มีบัญชีผู้ใช้
  • app bundle มีขนาด 17MB
    • ไม่มี Electron
    • ไม่มี image VM ที่ bundle มา
    • ไม่มี background service ของตัวเอง
  • มีทิศทางต่างจาก OrbStack
    • OrbStack เป็นแอปเชิงพาณิชย์ที่มีชั้น virtualization ของตัวเองที่เข้ากันได้กับ Docker
    • Davit เป็น UI โอเพนซอร์สฟรีบนแพลตฟอร์ม Apple container
    • Davit ไม่มี resident item เมื่อไม่มีคอนเทนเนอร์ ใช้ IP ต่อคอนเทนเนอร์และ bridge network และแยกคอนเทนเนอร์ออกจากกันเข้มงวดกว่า
    • OrbStack เหนือกว่าในด้านความเข้ากันได้แบบ drop-in กับ docker CLI/API และการรองรับเครื่องมือที่กว้างกว่า
    • ทั้งสองรัน image มาตรฐาน OCI ได้

หน่วยความจำ, DNS และความปลอดภัย

  • โครงสร้างหน่วยความจำเป็นแนวทางที่ไม่ต้องมี Linux VM ขนาดหลาย GiB เปิดอยู่ตลอดเวลา
  • Docker Desktop คง VM ขนาดใหญ่ไว้หนึ่งตัวไม่ว่าจะมีคอนเทนเนอร์รันอยู่หรือไม่ แต่แพลตฟอร์มของ Apple จะบูต VM น้ำหนักเบาต่อคอนเทนเนอร์และปิดเมื่อคอนเทนเนอร์หยุด
  • เมื่อไม่มีคอนเทนเนอร์กำลังรันอยู่ background service ของแพลตฟอร์มจะ idle ที่ประมาณ 25MB
  • Davit เองเป็นแอป SwiftUI แบบเนทีฟ ไม่ใช่ Electron และหน่วยความจำที่ใช้ส่วนใหญ่เป็นหน่วยความจำของ macOS framework ที่แชร์กัน
  • หากต้องการเข้าถึงจาก Mac ด้วยชื่อคอนเทนเนอร์ สามารถใช้โดเมน DNS แบบ local ของแพลตฟอร์มได้
    • รัน sudo container system dns create test หนึ่งครั้ง หรือใช้โดเมนของตัวเอง
    • ตั้งค่าเป็นโดเมนเริ่มต้นที่ Settings → Platform → DNS
    • คอนเทนเนอร์ web จะตอบสนองจาก Mac ที่ web.test
  • คอนเทนเนอร์ทุกตัวมี IP ของตัวเอง และ IP จะแสดงในส่วน Network
  • หากรัน Avahi ภายใน guest จะสามารถ broadcast alias .local mDNS ได้
  • ทุก release ถูกเซ็นชื่อและ notarized ด้วย Apple Developer ID จึงเปิดได้โดยไม่มีคำเตือนจาก Gatekeeper
  • แอปเป็นโอเพนซอร์สภายใต้ไลเซนส์ MIT และสามารถอ่านหรือ build เองได้
  • Davit สื่อสารเฉพาะกับ container daemon ในเครื่องและการตรวจสอบอัปเดตบน GitHub เท่านั้น

1 ความคิดเห็น

 
GN⁺ 4 시간 전
ความคิดเห็นจาก Hacker News
  • กลยุทธ์ที่ดีที่สุดที่ผมใช้ในยุค AI คือ ไม่ทำอะไรเลย
    เคยนึกไอเดียคล้าย ๆ กันและคิดว่าน่าจะทำได้ด้วย vibe coding แต่คิดว่าคงมีใครสักคนสนใจมากกว่าและทำออกมาก่อน ซึ่งก็เป็นจริง
    แอปดูดี และตั้งตารอที่จะได้ลองใช้
    ในฐานะไอเดียฟรี ๆ ผมอยาก ขังเอเจนต์ไว้ในเครื่องเสมือน แล้วส่งคำสั่งจากนอกเครื่องเสมือนผ่าน harness เพื่อควบคุมเอเจนต์ที่ติดตั้งอยู่ข้างใน ตามอุดมคติแล้วบนโฮสต์ไม่ควรต้องติดตั้งอะไรอย่าง Codex/Claude
    แนวทางที่เจ๋งกว่านั้นคือสร้างบัญชีผู้ใช้หลายบัญชีในเครื่องเสมือน แล้วจำกัดไฟล์ซิสเต็มและนโยบายเครือข่ายแยกตามผู้ใช้ แบบนั้นเอเจนต์สำหรับพัฒนา, เอเจนต์ QA ฯลฯ จะมีมุมมองงานที่ต่างกัน และกลายเป็นชั้นฐานที่ทรงพลังสำหรับการทำอัตโนมัติเพิ่มเติม
    แน่นอนว่าควรสามารถ “แนบ” ทรัพยากรต่าง ๆ เช่น DB, คิว, โวลุ่มภายนอก เข้ากับเครื่องเสมือน เพื่อให้เอเจนต์ใช้งานตามสิทธิ์ได้

    • สิ่งนั้นทำได้ตรง ๆ ด้วย coderunner
      https://GitHub.com/instavm/coderunner
    • เป็นวิธีที่ใช้ แซนด์บ็อกซ์และผู้ใช้แยกต่างหาก แทนเครื่องเสมือน แต่ sandvault เหมาะกับงานแบบนี้ และติดตั้งให้อัตโนมัติด้วย
      เพื่อความโปร่งใส ผมเคยส่ง PR ไปที่นั่นอยู่สองสามอัน
      https://github.com/webcoyote/sandvault
    • “ท่าไม้ตายของยุค AI: ไม่ทำอะไรเลย” เป็นกลยุทธ์ของผมมาตั้งแต่ก่อนมี AI แล้ว
      ตั้งแต่ช่วงปลายวัย 20 หรือต้นวัย 30 ผมแทบหยุดพัฒนาอะไรในเวลาว่างไปเกือบหมด เพราะความสนุกที่เคยได้จากการเขียนโค้ดหายไปหมดแล้ว จริง ๆ แล้วเดิมทีก็ไม่ได้ชอบขนาดนั้น แค่ตัดสินไม่ค่อยได้ว่าอะไรคุ้มค่ากับเวลาหรือไม่
      ต่อให้คิดถึงโปรแกรมหรือสคริปต์ที่ถ้ามีก็คงดี ส่วนใหญ่ก็ “ผลตอบแทนไม่คุ้มกับความพยายาม” เหมือนตาราง xkcd ที่คำนวณเวลาคืนทุนของการสร้างโปรแกรมเพื่อประหยัดเวลาไม่กี่นาทีต่อสัปดาห์ หรือไม่ก็เป็นของที่ไม่ได้จำเป็น แต่ถ้ามีก็น่าสนใจหรือสนุก ทว่าถ้าจะสร้างจริงต้องใช้เวลามากมายจนไม่คุ้มเลย
      ถ้ามีใครสร้างสิ่งที่ผมต้องการแล้วปล่อยออกมาก็ดีไป ถ้าไม่มีก็ช่วยไม่ได้
      การเปลี่ยนแปลงใหญ่ที่ LLM นำมาคือ ตอนนี้เราสามารถทำสคริปต์เล็ก ๆ ออกมาได้ในไม่กี่นาที ด้วยค่าใช้จ่ายไม่กี่เซนต์ไปจนถึงไม่กี่ดอลลาร์ ผมเลยกำลังหยิบไอเดียเฉพาะทางสุด ๆ ที่หมักไว้นานกลับมาดูอีกครั้ง
      เรื่องที่เมื่อก่อนอาจต้องใช้เวลาหลายสุดสัปดาห์แค่ไล่อ่าน API และเอกสารที่ไม่คุ้นเคย ตอนนี้ทำได้ภายใน 30 นาที หรืออย่างน้อยก็ตัดสินได้ในไม่กี่นาทีแทนที่จะเป็นหลายชั่วโมงว่าเรื่องนี้ทำไม่ได้หรือน่ารำคาญเกินไปจนควรทิ้งไปตลอดกาล
    • ผมลองทำอะไรคล้าย ๆ กันแบบคร่าว ๆ เป็น ฟรอนต์เอนด์บนเบราว์เซอร์ ง่าย ๆ
      ผมชอบรันโมเดลเปิดขนาดกลางถึงใหญ่ แต่ไว้ใจไม่ได้ว่าโมเดลพวกนั้นจะไม่หลุดคุม เลยทำขึ้นมา และตั้งใจจะแชร์เร็ว ๆ นี้
    • ผมก็เคยคิดเรื่องนี้เหมือนกัน
      รู้สึกว่ามันน่าจะง่ายประมาณติดตั้ง Claude ในเครื่องเสมือน แล้วเชื่อมต่อผ่านเทอร์มินัล SSH ก็พอ ถ้าต้องการ GUI ก็ใช้ส่วนขยาย Remote SSH ของ VSCode เพื่อให้ได้ UI อย่าง file browser ได้
      คิดว่าน่าจะติดตั้ง Claude ของ VSCode หรือส่วนขยายแชตอื่น ๆ ไว้ในเครื่องเสมือนได้เหมือนกัน
  • สิ่งที่เด่นกว่าตัวโปรเจกต์นี้เองคือ ปรากฏการณ์ที่หลายคน โดยเฉพาะในช่วงราว 1 ปีที่ผ่านมา คาดการณ์ไว้ได้ กำลังเร่งเร็วขึ้นอย่างเห็นได้ชัด ตอนนี้ผู้คนสามารถสร้างเวอร์ชันของตัวเองจากไอเดียเดียวกันได้ เร็วกว่าเดิมมาก
    ลองค้นหาประมาณ 10 นาที ก็พบโปรเจกต์ Swift ที่คล้ายกันหลายตัว และส่วนใหญ่เพิ่งเกิดขึ้นไม่กี่สัปดาห์หรือไม่กี่เดือนเท่านั้น
    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
    ถ้ารวมโปรเจกต์ที่ดาว GitHub น้อยกว่า, เป็นแบบ command line เท่านั้น, หรือไม่ใช่ Swift ก็มีอีกมาก แต่ใจความคือแบบนี้
    ผู้คนจะค่อย ๆ สามารถสร้างซอฟต์แวร์เวอร์ชันของตัวเองตามที่ต้องการได้มากขึ้น เมื่อเป็นเช่นนั้น มูลค่าของซอฟต์แวร์ที่คนอื่นสร้างจะลดลง ยุคของ ซอฟต์แวร์เฉพาะบุคคลขั้นสุด กำลังมาถึง

    • เราพูดได้ไหมว่าโปรเจกต์เหล่านี้ทั้งหมดมี คุณภาพระดับท็อป เท่ากัน? ผมคงบอกไม่ได้ว่าแน่ใจ
      เมื่อก่อนเรายังพอประเมินแรงที่ลงไปกับของแบบนี้ได้จากความสมบูรณ์ของเว็บไซต์หรือองค์ประกอบผิวเผินบางอย่าง ตอนนี้ส่วนพวกนั้นทำให้เสร็จได้ง่าย ๆ ด้วย LLM
      คล้ายกัน เมื่อฝุ่นเริ่มจาง หนึ่งในผลกระทบใหญ่ที่สุดที่ Kickstarter ทิ้งไว้คือวิดีโอพิตช์ 3 นาทีพัฒนาและถูกขัดเกลาอย่างดุดันมากขึ้น
      แต่ไม่รู้ว่าสิ่งนั้นจะนำไปสู่การนำไปใช้งานจริงและโรดแมปที่คิดมาอย่างลึกซึ้งจริง ๆ รวมถึงแรงขับเคลื่อนจริงหรือไม่
    • บน iOS นั้นต่างออกไป ถ้าจะเอาขึ้น App Store ก็ต้องจ่ายค่าสมาชิกรายปี หรือไม่ก็ต้อง rebuild และติดตั้งบิลด์จากบัญชีส่วนตัวใหม่ทุก ๆ ราว 30 วัน
  • ดูเหมือนเป็นแอปที่แน่นมากจริง ๆ ขนาด 17MB และชอบที่ใช้ไลบรารี ContainerAPIClient โดยตรง
    ใน 3 วันมีคอมมิต 28 ครั้ง, Swift 5,015 บรรทัด และทุกคอมมิตมี “Co-Authored-By: Claude Fable 5” ติดมาด้วย
    อีกอย่างที่ดีคือมีการเซ็นและ notarize แล้ว พอลองติดตั้ง ตอนเปิดครั้งแรกมันดาวน์โหลดคอมโพเนนต์ของแพลตฟอร์มคอนเทนเนอร์ที่จำเป็นมาให้
    ถ้าจะเสนอแนะ อยากให้เพิ่มทูทอเรียลเริ่มต้นบนเว็บไซต์ แนะนำอิมเมจสักตัวสำหรับทดลอง แล้วแสดงวิธีรันอิมเมจนั้นและสิ่งที่ทำได้ด้วยสกรีนช็อตหรือวิดีโอไม่มีเสียง
    กล่องโต้ตอบสร้างอิมเมจแนะนำ “nginx:latest” แต่สำหรับเดโมเริ่มต้นยังไม่ค่อยดีนัก

    • ข้อความแนว AI-Maxing บนเว็บไซต์ดูออกอยู่พอสมควร แต่ไม่ได้หมายความว่าแอปไม่ยอดเยี่ยมนะ
    • เป็นข้อเสนอแนะที่ดี เดี๋ยวจะเพิ่มเร็ว ๆ นี้
    • ทูทอเรียลที่มีตัวอย่างสมจริงขึ้นอีกหน่อยน่าจะช่วยได้มากในกรณีนี้
      nginx:latest แสดงให้เห็นว่าระบบท่อทำงานได้ แต่ไม่ได้แสดงให้เห็นชัดนักว่า Apple Containers ให้ความรู้สึกต่างจาก Docker Desktop หรือ OrbStack ตรงไหน
      ถ้าเป็นตัวอย่างแอปเล็ก ๆ ที่มี volume, port mapping และลูป rebuild ง่าย ๆ น่าจะทำให้เห็นคุณค่าได้ง่ายกว่ามาก
  • ฮ่า! ดูเหมือนพวกเราก็ทำของแบบเดียวกัน: https://container-ui.fly.dev/
    ตอนนี้เริ่มคิดว่าไม่น่าเผา token ไปตั้งเยอะเลย

    • โอ้ สวัสดีครับ เพิ่งเห็นว่ามีเนื้อหาเปรียบเทียบกับ Orchard นั่นคือผมเอง
      ดูเรียบร้อยดีนะ สุดท้ายเราทุกคนก็กำลังทำของแบบเดียวกันอยู่สินะ ><
  • ใช้ OrbStack ด้วยความชอบมาเกือบ 2 ปีแล้ว
    อินทิเกรตได้ดี เร็ว และ เข้ากันได้กับคำสั่ง docker สำหรับผมจึงคุ้มที่จะจ่าย
    แต่ก็จะลองตัวนี้ดูเหมือนกัน

    • คอนเทนเนอร์แบบเนทีฟของ macOS ดูเหมือนจะเปิด Linux virtual machine แยกสำหรับแต่ละคอนเทนเนอร์
      จุดแข็งของ OrbStack คือคอนเทนเนอร์ทั้งหมดรันอยู่ใน Linux virtual machine ตัวเดียว และมีการทำ optimization หลายอย่างทั้งสองฝั่งของขอบเขต virtual machine รวมถึงการใช้ sparse image file ที่ช่วยประหยัดพื้นที่ดิสก์ฝั่ง macOS ได้มาก
      ถ้ารันคอนเทนเนอร์บน macOS เกิน 4–5 ตัว ประสิทธิภาพและการลดการใช้ทรัพยากรของ OrbStack จะยิ่งเห็นผลเร็วมาก
    • คิดว่าทีม OrbStack น่าจะรองรับ macOS native containers ในไม่ช้า แล้ววางฟีเจอร์จัดการของตัวเองทับลงไป
  • ดีมากจริง ๆ การดาวน์โหลด runtime แล้วรัน nginx:latest ทำงานได้สมบูรณ์
    เวลาเลื่อนลงใน GitHub แล้วเห็น Claude เป็น contributor มันเริ่มกลายเป็นสัญญาณว่าแอปน่าจะดี แบบให้ความรู้สึกเนทีฟและไม่ใช่ Electron อะไรทำนองนั้น

  • อยากให้ Apple เพิ่ม ความเข้ากันได้กับ docker API ให้ Apple Containers

    • ผมก็ไม่ค่อยแน่ใจเหมือนกัน ถ้าใช้ตัวนี้แทน Docker Desktop จะรันคอนเทนเนอร์ docker แบบ “เนทีฟ” บน Mac ได้ไหม? หรือมันเป็นคนละอย่างกับ docker โดยสิ้นเชิง?
    • ตัวนี้เน้นด้าน build และเป็นการรัน buildkitd หรือ dockerd ภายในคอนเทนเนอร์ของ Apple containerization
      ไม่มีอย่าง port forwarding หรือ host volume จริง ๆ แล้วโฟกัสอยู่ที่การรัน buildkit บน Mac
      แต่ docker CLI และ buildx อินทิเกรตได้เต็มที่
      https://github.com/cpuguy83/crucible
  • ฟีเจอร์ก็ดี และชอบตรงที่เป็น แอป SwiftUI เนทีฟ ขนาดเล็กด้วย
    เมื่อไม่นานมานี้ผมเขียนบทความ [1] เกี่ยวกับการใช้ Apple containers สำหรับการเขียนโค้ดแบบ agentic และเพิ่งอัปเดตให้กล่าวถึง Davit แล้ว สำหรับโปรเจกต์ส่วนตัว บน Mac สองเครื่องที่บ้าน ผมชอบใช้ Apple containers มากกว่า Docker เยอะ
    [1] https://open.substack.com/pub/marklwatson/p/running-opencode...

  • ถ้าเทียบกับ OrbStack แล้วเป็นยังไง? Apple Containers ให้อะไรที่รู้สึกได้ในด้าน developer experience ไหม? ตามการใช้งานของผม ตัว OrbStack ก็รู้สึกเร็วปานสายฟ้าอยู่แล้ว

  • ไม่กี่วันก่อนผมโพสต์เวอร์ชันคล้าย ๆ กันที่ทำเอง แต่แทบไม่มีคนตอบรับเลย
    เผื่อใครสนใจ มันเป็นแอปบน menu bar ที่รองรับ คอนเทนเนอร์, เครื่อง, registry
    https://news.ycombinator.com/item?id=48789503
    https://github.com/erdaltoprak/ContainerUtility