13 คะแนน โดย GN⁺ 3 일 전 | 2 ความคิดเห็น | แชร์ทาง WhatsApp
  • เป็น แอป macOS แบบเนทีฟ สำหรับรันและจัดการคอนเทนเนอร์ Linux ด้วยแพลตฟอร์มคอนเทนเนอร์ของ Apple บน Mac ชิป Apple silicon และใช้งานได้โดยไม่ต้องมี Docker Desktop
  • สื่อสารโดยตรงผ่าน XPC กับ container daemon แบบโอเพนซอร์สของ Apple ใช้เส้นทางเดียวกับ CLI และไม่มี Electron, webview หรือ background agent ของตัวเอง
  • จัดการได้ครบในแอปเดียว ตั้งแต่เริ่ม/หยุดคอนเทนเนอร์, สตรีม log, เชื่อมต่อ terminal, สำรวจไฟล์, build Dockerfile ไปจนถึง import 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 สื่อสารโดยตรงผ่าน XPC กับ daemon container แบบโอเพนซอร์สของ Apple
  • เส้นทางนี้เป็นเส้นทางสื่อสารเดียวกับที่ container CLI ใช้
  • ไม่ใช้ Electron, webview หรือ background agent ของตัวเอง

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

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

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

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

การ import Compose และ build Dockerfile

  • Davit เปิด docker-compose.yml แล้วแสดง resource ที่จะถูกสร้างขึ้นให้ดูก่อน
    • service ตามลำดับ dependency
    • volume
    • network
    • คำสั่ง CLI เทียบเท่าสำหรับแต่ละ service
    • คำเตือนสำหรับรายการที่ยังไม่รองรับ
  • บนแพลตฟอร์มของ Apple ไม่มี compose แบบเนทีฟ Davit จึง orchestrate stack เองโดยตรง
  • การ import 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 แบบกำหนดเอง
    • ตรวจสอบรายการที่ใช้งานอยู่ก่อนลบ
  • การ login registry จัดการได้ที่ Settings → Registries
    • Docker Hub
    • ghcr.io
    • quay.io
    • OCI registry ใดๆ
  • credentials จะถูกตรวจสอบกับ registry ก่อนบันทึก
  • credentials ที่ผ่านการตรวจสอบจะถูกเก็บใน macOS login keychain และแชร์กับ container CLI
  • Docker Hub กำหนดให้ใช้ access token แทนรหัสผ่าน

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

  • Davit สามารถแก้ไขการตั้งค่าแพลตฟอร์มภายในแอปได้
    • CPU/หน่วยความจำเริ่มต้นสำหรับคอนเทนเนอร์ใหม่
    • registry
    • DNS
    • resource ของ builder
  • การตั้งค่าจะถูกตรวจสอบด้วย loader การตั้งค่าของแพลตฟอร์มเอง และบันทึกเป็น TOML override ที่สะอาด
  • หากยังไม่ได้ติดตั้งแพลตฟอร์ม Apple container Davit จะดาวน์โหลดตัวติดตั้งที่เซ็นโดย 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
  • ใช้ OCI image
    • pull ได้จาก Docker Hub, ghcr.io, quay.io หรือ registry ใดๆ
    • ใช้ private image ได้ผ่านการ login registry
  • link กับ 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 เมื่อไม่มีคอนเทนเนอร์ ใช้ IP แยกตามคอนเทนเนอร์และ bridge network และมีการแยกคอนเทนเนอร์ออกจากกันเข้มงวดกว่า
    • OrbStack ดีกว่าในด้านความเข้ากันได้แบบ drop-in กับ docker CLI/API และรองรับเครื่องมือได้กว้างกว่า
    • ทั้งสองรัน OCI image มาตรฐาน

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

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

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

 
galadbran 2 일 전

การจัดการผ่าน command line มันน่ารำคาญอยู่พอดี ดีใจที่มีตัวนี้ออกมาครับ ^^ ช่วงนี้ส่วนใหญ่ผมก็ใช้ Orbstack อยู่เหมือนกัน

 
GN⁺ 3 일 전
ความคิดเห็นจาก 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