Docker's Moby Project คืออะไร

ในฐานะที่เป็นคนออสตินฉันสนุกกับการมี DockerCon ในพื้นที่และฉันได้ร่วมเขียนคู่มือการเยี่ยมชมออสตินด้วยความหวังว่าผู้เข้าร่วมจะสนุกกับการมี DockerCon ในออสตินเช่นกัน

ในช่วง DockerCon 2017 มีการประกาศสำคัญบางอย่างรวมถึงโครงการ Moby 

โครงการ Moby คืออะไร? เป็นกรอบในการประกอบระบบคอนเทนเนอร์เฉพาะโดยไม่ต้องสร้างล้อใหม่

Moby Project คือ Docker ที่ Fedora คือ Red Hat Enterprise Linux - Solomon Hykes, Docker CTO / ผู้ก่อตั้ง

ในการเป็นโครงการคอนเทนเนอร์ที่เทียบเท่ากับโครงการ Fedora การสร้าง Docker นั้นเปลี่ยนแปลงไปอย่างไร

เรดแฮททำงานได้ดีในช่วงแรก ๆ ของความสับสนของ RHEL ที่พวกเขาอธิบายโครงการจากผลิตภัณฑ์ พวกเขาแยก Fedora ออกจาก RHEL นักเทียบท่ามองว่าแนวทางนี้เป็นวิธีที่ช่วยให้ชุมชนมีส่วนร่วมได้ดีขึ้น รอยต่อระหว่างชุมชนและผลิตภัณฑ์นั้นเลือนลางมาก่อน ผู้คนไม่สามารถบอกได้ว่าพวกเขามีส่วนร่วมในโครงการเทียบกับผลิตภัณฑ์ การแยกโค้ดระหว่างที่เก็บ moby / moby และที่เก็บ docker / docker ช่วยให้ชัดเจนถึงความแตกต่างนี้

Moby จะแปลง Docker จากเอ็นจิ้นเสาหินเป็นชุดเครื่องมือเพื่อประกอบส่วนประกอบต่างๆในการกำหนดค่าต่างๆ โครงการโมบี้ควรส่งเสริมให้นำส่วนประกอบแต่ละส่วนกลับมาใช้ใหม่ นักเทียบท่ามีประวัติความสำเร็จในเรื่องนี้และสามารถวัดได้จากการนำกลับมาใช้ใหม่นอกเหนือจากผู้สร้าง:

  • พวกเขาแยก OCI / runc ออกมาและตอนนี้เป็นมาตรฐานที่กำหนดขึ้นสำหรับรันไทม์ของคอนเทนเนอร์และรูปแบบรูปภาพ
  • พวกเขาแยกตัวออกจาก containerd และตอนนี้มันเป็นมาตรฐานอุตสาหกรรมโดยพฤตินัยสำหรับการใช้งานคอนเทนเนอร์โดยได้รับการสนับสนุนจากผู้จำหน่ายคลาวด์รายใหญ่ทั้งหมดและ 99 เปอร์เซ็นต์ของฐานการติดตั้ง (นับล้านโหนดทั่วโลก)
  • โนตารีกลายเป็นการนำ TUF มาใช้และเป็นศูนย์กลางของการทำงานร่วมกันสำหรับชุมชนความปลอดภัย
  • การกระจายนักเทียบท่าเป็นรากฐานโอเพ่นซอร์สสำหรับผลิตภัณฑ์เชิงพาณิชย์หลายโหล

ทีมนักเทียบท่าหวังเป็นอย่างยิ่งว่าเนื่องจากเสาหินนักเทียบท่าถูกแบ่งออกเป็นชิ้นเล็กชิ้นน้อยส่วนประกอบแต่ละชิ้นเหล่านี้อาจกลายเป็นส่วนประกอบสำหรับโซลูชันที่กำหนดเอง ก่อนหน้านี้อาศัยอยู่ในนักเทียบท่า / นักเทียบท่าโครงการเสาหินได้ถูกย้ายไปที่ moby / moby

ความสับสนเกิดขึ้นเกี่ยวกับโครงการ ทีม Docker ได้สื่อสารโครงการนี้กับผู้มีส่วนร่วมในการประชุมและผู้ดูแลส่วนใหญ่ อย่างไรก็ตามผู้คนที่เข้ามามีส่วนร่วมในชุมชนอย่างไม่เป็นทางการต่างรู้สึกประหลาดใจและไม่ชัดเจนเกี่ยวกับวัตถุประสงค์และผลกระทบโดยแสดงความไม่เข้าใจว่าชิ้นส่วนต่างๆเข้ากันได้อย่างไรหรือคุณลักษณะใหม่ ๆ (เช่น LinuxKit) ทำอย่างไร

โครงการ @moby โดยสรุป: ภายในและภายนอก pic.twitter.com/K8Rn9YYtVs

- Solomon Hykes (@solomonstre) 22 เมษายน 2017

โครงการ Moby ช่วยให้ผู้สร้างระบบสามารถสร้างโครงการอื่น ๆ นอกเหนือจากเครื่องมือเดียวกันได้ ผู้สร้างระบบอาจต้องการเรียกใช้แอสเซมบลีเหล่านี้แตกต่างกันขึ้นอยู่กับว่าพวกเขาทำงานบนอุปกรณ์ IoT ขนาดเล็กหรือว่าพวกเขาทำงานบนระบบขนาดใหญ่ที่มี GPU

ยังมีงานอีกมากที่จะแยกส่วนประกอบออกมา อย่างไรก็ตามเป้าหมายคือการสร้างหนึ่งต้นน้ำขนาดใหญ่สำหรับ Docker นั่นคือ Moby Docker Inc. ต้องการให้เครื่องมือเปิดกว้างมากกว่า Docker การตัดสินใจออกแบบผลิตภัณฑ์บางครั้งอาจขัดแย้งกับโครงการโอเพนซอร์สที่ขับเคลื่อนด้วยฉันทามติ การแยกข้อกังวลช่วยให้ Docker Inc. สามารถรวบรวมความคิดเห็นเกี่ยวกับประสบการณ์ของผู้ใช้ในชุมชนและข้อเสนอของ Docker ขององค์กรได้ Moby คือโครงการ Docker คือผลิตภัณฑ์

โครงการ Moby สามารถอธิบายได้สี่ชั้น:

  1. ส่วนประกอบต้นน้ำทั้งหมด
  2. โมบี้
  3. นักเทียบท่า CE
  4. นักเทียบท่า EE
David Chung / Docker Inc.

การจัดโครงสร้างโครงการเป็นเลเยอร์ควรรองรับเนื้อหาตามธรรมชาติที่เกิดขึ้นเมื่อต้องทำการตัดสินใจระหว่างสิ่งที่เหมาะกับโครงการกับผลิตภัณฑ์ นักเทียบท่าเป็นผลิตภัณฑ์จะเพิ่มความคิดเห็นที่แจ้งโดยผู้ใช้ (เพื่อให้ง่ายขึ้นสำหรับผู้ใช้) ตัวอย่างเช่น containerd ไม่มีรีจิสทรีเริ่มต้นในขณะที่ Docker จะมี Docker hub เป็นค่าเริ่มต้นหรือ Docker CLI ซึ่งช่วยให้ค้นหาปัญหาที่เปิดอยู่สำหรับโครงการของคุณได้อย่างง่ายดายในฟอรัม / ระบบการสนับสนุน Docker ผู้ใช้ไม่ได้รับผลกระทบ ผู้ใช้จะยังคงโต้ตอบกับ Docker ในลักษณะเดิม

  • นักพัฒนาแอปพลิเคชันที่กำลังมองหาวิธีง่ายๆในการเรียกใช้แอปพลิเคชันในคอนเทนเนอร์อาจมองไปที่ Docker CE
  • Enterprise IT ที่  กำลังมองหาแพลตฟอร์มคอนเทนเนอร์ที่พร้อมใช้งานที่รองรับในเชิงพาณิชย์อาจมองไปที่ Docker EE

ไม่มีอะไรเปลี่ยนแปลงสำหรับผู้ใช้เหล่านี้ บรรทัดคำสั่งยังคงเหมือนเดิม ตอนนี้นักเทียบท่าสามารถใช้ประโยชน์จากระบบนิเวศเพื่อสร้างสรรค์สิ่งใหม่ ๆ ได้เร็วขึ้นสำหรับพวกเขา

  • ผู้สร้างระบบที่  ต้องการใช้ประโยชน์จากส่วนประกอบของ Moby Project อาจสร้างสรรค์สิ่งใหม่ ๆ ได้โดยไม่ต้องผูกติดกับ Docker

การกำกับดูแลโครงการ

โครงการ Moby เปิดให้บริการและจะเป็นโครงการที่ดำเนินการโดยชุมชน Docker Inc. มีความโน้มเอียงโดยทั่วไปที่จะบริจาคส่วนประกอบแต่ละส่วนในโครงการนี้ให้กับหน่วยงานกำกับดูแลอื่น ๆ ตามความเหมาะสม Containerd ต้องยืนอยู่คนเดียวจากองค์กร Moby เนื่องจากบริจาคให้กับ CNCF ในที่สุดแต่ละโครงการในระยะยาวควรย้ายออกและไปที่ที่เก็บอื่น

คำถามที่พบบ่อยเกี่ยวกับโครงการ Moby

  • ตอนนี้ Moby กำลังทำลาย monotlith ภาษาอื่นที่ไม่ใช่ Go จะถูกรวมเข้าด้วยหรือไม่?
    • สำหรับ LinuxKit มีความมุ่งมั่นที่จะ Ocaml และ Rust ไม่มีแผนหลักในการเปลี่ยนภาษา
  • REST จะถูกแทนที่ด้วย gRPC หรือไม่
    • โดยทั่วไป Docker Inc ต้องการให้ REST API เป็นส่วนหน้าคงที่ในขณะที่ย้ายการสื่อสารภายในระหว่างโครงการ Moby ไปยัง gRPC คอมโพเนนต์สามารถเปลี่ยนภาษาได้และไม่มีผลกับส่วนประกอบอื่น ๆ (เช่นเดียวกับที่ไมโครเซอร์วิสให้ทางเลือก) Engine มี HTTP REST API และส่วนประกอบระดับล่างทั้งหมดได้ใช้ gRPC โซโลมอนเสนอให้ใช้ gRPC เป็นอินเทอร์เฟซมาตรฐาน ประโยชน์ที่ได้รับ ได้แก่ การใช้เครื่องมืออัตโนมัติเพิ่มเติม
  • คุณจะหา Docker CE (โครงการโอเพ่นซอร์ส) ได้ที่ไหน?
    • TBD - Docker / CLI จะมีไลบรารีไคลเอ็นต์และ SDK ในตอนนี้ บรรจุภัณฑ์และการสร้างเป็นรุ่นเฉพาะเนื่องจากมี Docker จำนวนมากสำหรับ XXX