Docker Sandboxes กับ Containers: การเลือกการแยกสภาพแวดล้อมที่เหมาะสมสำหรับ AI Agents
ข่าวสารเทคโนโลยี
Docker อธิบายความแตกต่างระหว่าง Containers และ Docker Sandboxes ที่ใช้ microVM สำหรับ AI coding agents พร้อมข้อจำกัดของ workspace และบริการบนโฮสต์ที่ยังแชร์ให้เอเจนต์เข้าถึงได้
ความแตกต่างระหว่าง Docker Sandboxes และ Containers
Docker ได้ชี้แจงความแตกต่างระหว่าง Docker Sandboxes และ Containers ซึ่งเป็นเทคโนโลยีที่มักถูกเข้าใจผิดว่าเหมือนกัน โดย Docker ระบุว่า บน Linux นั้น Containers เป็นกระบวนการที่แยกส่วนออกมาแต่ยังใช้เคอร์เนลร่วมกับโฮสต์ ส่วนบน macOS และ Windows ที่ใช้ Docker Desktop คอนเทนเนอร์ Linux จะใช้เคอร์เนลร่วมกันภายใน VM ของ Docker Desktop แทนที่จะใช้เคอร์เนลของระบบปฏิบัติการโฮสต์โดยตรง ขณะที่ Docker Sandboxes เป็น microVM ที่มีเคอร์เนล Linux ระบบไฟล์ เครือข่าย และ Docker Engine ของตัวเอง
เหตุผลที่ Docker แนะนำ Sandboxes สำหรับ AI Agents
การทำงานของ AI coding agents มีลักษณะคล้ายกับนักพัฒนาที่ใช้งานแล็ปท็อป คือมีการสะสมสถานะ (state) ตลอดระยะเวลาหลายชั่วโมง เช่น การโคลน repository การติดตั้งแพ็กเกจ การรันฐานข้อมูล และการสร้างอิมเมจ Docker จึงอธิบายว่าเอเจนต์อาจต้องการสภาพแวดล้อมที่เก็บสถานะและมีเครื่องมือได้ต่อเนื่อง ขณะที่คอนเทนเนอร์ยังเหมาะกับแอปพลิเคชันและบริการที่จัดแพ็กเกจไว้ รวมถึงงาน CI และงานระยะสั้น
นอกจากนี้ AI agents ยังต้องทำงานกับคำสั่งที่อาจไม่ได้รับความไว้วางใจจากแหล่งต่างๆ เช่น เว็บไซต์หรือไฟล์ที่ไม่ได้ผ่านการตรวจสอบ ซึ่งอาจนำไปสู่ความเสี่ยงด้านความปลอดภัย Docker เสนอ Sandboxes เป็นขอบเขตการแยกผ่านไฮเปอร์ไวเซอร์เพื่อจำกัดผลกระทบจากการทำงานของเอเจนต์ โดยอธิบายคุณสมบัติหลัก สี่ประการ ได้แก่:
- Containment: ขอบเขตที่โมเดลไม่สามารถเขียนทับได้
- Control: ความสามารถในการมองเห็นและควบคุมสิ่งที่เอเจนต์ทำ
- Choice: อิสระในการเปลี่ยนเอเจนต์ โมเดล และเครื่องมือ
- Capacity: การตั้งค่าที่สามารถทำซ้ำและขยายผลได้
ข้อจำกัดของการแยกและทรัพยากรที่แชร์
ต้นฉบับระบุว่าเอเจนต์ยังเข้าถึงสิ่งที่ผู้ใช้เลือกแชร์ให้ได้ โดย workspace ถูกเมานต์แบบอ่านและเขียนได้ตามค่าเริ่มต้น เอเจนต์จึงอาจแก้ไขหรือลบไฟล์ในโปรเจกต์ได้ นอกจากนี้ MCP server แบบ local stdio ทำงานบนโฮสต์ และ skills ที่แชร์ใช้งานก็อาศัยที่เก็บฝั่งโฮสต์ ปลายทางเครือข่ายที่อนุญาตและบริการที่แชร์จึงยังเป็นส่วนหนึ่งของขอบเขตที่เอเจนต์เข้าถึงได้ การใช้ microVM จึงไม่ได้แทนการพิจารณาสิทธิ์ของทรัพยากรเหล่านี้
การเลือกใช้งาน
Docker แนะนำให้เลือกใช้ Containers สำหรับแอปพลิเคชันที่แพ็กเกจไว้แล้ว งาน CI หรือการทำงานระยะสั้น ส่วน Docker Sandboxes เหมาะสำหรับงานที่ AI agents ต้องสร้างหรือดึงโค้ดมาทำงานในขณะรันไทม์ (runtime) และต้องการขอบเขตการแยกผ่านไฮเปอร์ไวเซอร์แทนการใช้เคอร์เนลร่วมกัน โดย Sandboxes ยังสามารถรันคอนเทนเนอร์ภายในตัวเองได้อีกด้วย
สำหรับการใช้งาน Docker Sandboxes จำเป็นต้องมีไฮเปอร์ไวเซอร์ที่รองรับ เช่น Apple silicon บน macOS 14 ขึ้นไป, Windows Hypervisor Platform หรือ KVM บน Ubuntu รุ่นที่รองรับ