ในสภาพแวดล้อมขององค์กร มักมีการใช้งาน Docker ภายในเครือข่ายปิดที่ตัดขาดจากอินเทอร์เน็ตภายนอกด้วยเหตุผลด้านความปลอดภัย ในสภาพแวดล้อมเช่นนี้ เมื่อต้องอัปเดต image หรือ deploy ใหม่ จำเป็นต้องนำไฟล์ image ที่บันทึกจากภายนอกด้วย docker save เข้ามาแบบแมนนวล แล้วโหลดด้วย docker load
แต่หาก image มีขนาดหลาย GB ขึ้นไป แม้จะแก้ไขเพียงเล็กน้อยก็ต้องย้ายทั้งชุดใหม่ทั้งหมด ซึ่งก่อให้เกิดความไม่มีประสิทธิภาพ
Docker image ประกอบด้วยหลายเลเยอร์แบบอ่านอย่างเดียว เลเยอร์เดียวกันสามารถแชร์ร่วมกันระหว่างหลาย image ได้โดยไม่ต้องจัดเก็บซ้ำ โครงสร้างนี้ทำให้เพียงส่งเฉพาะเลเยอร์ที่เปลี่ยนแปลงก็เพียงพอ และสามารถนำส่วนที่เหลือกลับมาใช้ซ้ำจากแคชได้
ในเครือข่ายปิด การทำแคชอัตโนมัติทำได้ยาก จึงใช้กลยุทธ์รวมเฉพาะเลเยอร์ที่เปลี่ยนแปลงแล้วส่งต่อ เพื่อทำให้กระบวนการนี้เป็นอัตโนมัติ ได้มีการพัฒนาเครื่องมือ docker-diff ที่พัฒนาด้วย Python ซึ่งสามารถทำการเปรียบเทียบและรวมข้อมูลได้ผ่าน compare mode และ merge mode ตามลำดับ
ในสภาพแวดล้อมที่มีการอัปเดต image บ่อยครั้ง การอัปเดตแบบ incremental สามารถช่วยประหยัดทรัพยากรเครือข่ายและเวลา พร้อมทั้งเพิ่มความน่าเชื่อถือและความเร็วของการ deploy ได้
หากเป็นไปได้ แนะนำให้ทำกระบวนการสร้างแพ็กเกจแบบ incremental การส่งต่อ และการ merge ให้เป็นอัตโนมัติ เพื่อลดความผิดพลาดและเพิ่มเสถียรภาพ
3 ความคิดเห็น
ไม่สามารถสร้าง private docker registry ในสภาพแวดล้อมเครือข่ายปิดได้หรือ? ทำไมถึงต้องสร้างให้ซับซ้อนขนาดนี้?
> ถ้าสภาพแวดล้อมด้านอินฟราพร้อม การดำเนินการรีจิสทรีคอนเทนเนอร์ภายในอาจเป็นทางเลือกที่เหมาะที่สุดได้
มีประโยคนี้อยู่ช่วงท้าย ๆ นะครับ... ดูเหมือนจะมีเรื่องเศร้าอยู่เบื้องหลัง 🫠
น่าจะมีข้อจำกัดด้านสถาปัตยกรรมหรืออินฟราสตรักเจอร์อยู่ใช่ไหมครับ? เช่น อาจมีการส่งมอบให้ลูกค้าเฉพาะฮาร์ดแวร์ขั้นต่ำที่จำเป็นต่อการรัน AI เท่านั้น