Docker Rootless Mode ลดสิทธิ์ของ daemon และคอนเทนเนอร์
Rootless Mode ให้ daemon และคอนเทนเนอร์ทำงานภายใต้ผู้ใช้ทั่วไปแทน root บนโฮสต์ อธิบายหลักการใช้งาน กรณีที่เหมาะ และข้อควรระวังจากเอกสารทางการ
Rootless Mode ให้ daemon และคอนเทนเนอร์ทำงานภายใต้ผู้ใช้ทั่วไปแทน root บนโฮสต์ เหมาะกับเครื่องที่ต้องลดผลกระทบหากคอนเทนเนอร์หรือ daemon มีช่องโหว่ บทความนี้สรุปแนวคิดจากเอกสารทางการของ Docker และจุดที่ควรตรวจเมื่อนำไปใช้จริง
ภาพรวม
Docker แยกแอปและ dependency ไว้ในคอนเทนเนอร์ การใช้งานจริงต้องดูทั้งอิมเมจ สิทธิ์ เครือข่าย และข้อมูลที่ต้องอยู่ต่อหลังคอนเทนเนอร์ถูกแทนที่
หัวข้อนี้ตอบโจทย์เฉพาะเรื่อง: Rootless Mode ให้ daemon และคอนเทนเนอร์ทำงานภายใต้ผู้ใช้ทั่วไปแทน root บนโฮสต์ จึงควรเริ่มจากปัญหาที่ต้องแก้และผลลัพธ์ที่คาดหวัง ไม่ใช่เพียงเปิดฟีเจอร์เพราะมีอยู่ในเครื่องมือ
หลักการทำงาน
ระบบอาศัย user namespace และเครื่องมือเครือข่ายสำหรับ rootless เพื่อแยกสิทธิ์จากระบบหลัก
ให้ตรวจทั้งสถานะที่เครื่องมือรายงานและผลลัพธ์ปลายทางที่ผู้ใช้หรือระบบอื่นได้รับ หากสองส่วนไม่ตรงกัน ควรกลับไปตรวจค่าตั้งต้นและขอบเขตที่ฟีเจอร์นี้รับผิดชอบก่อนเปลี่ยนค่าเพิ่มเติม
เหมาะกับงานแบบไหน
เหมาะกับเครื่องที่ต้องลดผลกระทบหากคอนเทนเนอร์หรือ daemon มีช่องโหว่
ก่อนทดลอง ให้ระบุสิ่งที่จะใช้วัดผล เช่น เวลาตอบสนอง ความพร้อมใช้งาน ความถูกต้องของข้อมูล หรือภาระการดูแล แล้วเทียบกับสภาพเดิม วิธีนี้ช่วยให้รู้ว่าฟีเจอร์แก้ปัญหาจริงหรือย้ายภาระไปอีกจุดหนึ่ง
ขั้นตอนนำไปใช้
- ตรวจอิมเมจและ Compose configuration ที่จะใช้จริง
- ทดสอบการสร้างคอนเทนเนอร์ใหม่ รวมถึง mount, network และ healthcheck
- บันทึกวิธีย้อนเวอร์ชันอิมเมจและกู้ข้อมูลจาก Volume
เริ่มจากขอบเขตเล็กและเก็บผลทดสอบไว้กับการเปลี่ยนแปลง หากจะใช้ใน production ให้กำหนดผู้ติดตามผลและเงื่อนไขที่จะหยุดการขยายการใช้งาน
ข้อควรระวัง
ตรวจข้อจำกัดด้านพอร์ต เครือข่าย และ storage driver ก่อนย้ายระบบ production
แปลงข้อควรระวังนี้เป็นรายการตรวจในการทบทวนงาน เพราะปัญหาจากค่าตั้งต้นอาจไม่แสดงทันทีในสภาพแวดล้อมทดสอบ
สรุป
Rootless Mode ให้ daemon และคอนเทนเนอร์ทำงานภายใต้ผู้ใช้ทั่วไปแทน root บนโฮสต์ เหมาะกับเครื่องที่ต้องลดผลกระทบหากคอนเทนเนอร์หรือ daemon มีช่องโหว่ ก่อนนำไปใช้กับงานหลัก ควรตรวจผลตามขั้นตอนข้างต้นและทบทวนข้อจำกัดของระบบที่มีอยู่
อ่านเพิ่มเติม: เอกสารทางการของ Docker