ความแตกต่างระหว่าง chroot และ Docker


15

ฉันไม่เข้าใจความแตกต่างระหว่างนักเทียบท่าและ chroot ใช่มันเป็นเรื่องที่ดีในแง่ของบรรจุภัณฑ์รีจิสทรี แต่อย่างใดฉันได้รับความรู้สึกมัน chroot เพียงกับระฆังและนกหวีดพิเศษ

ฉันรู้ว่าฉันขาดอะไรไป มันคงจะดีถ้าได้รู้ว่าพวกมันแตกต่างและต้องการนักเทียบท่าถ้า chroot สามารถทำอะไรที่คล้ายกันได้

ฉันไม่สามารถหาChroot Vs Docker ได้ชัดเจนพอ


ใช่แล้ว Docker ไม่ได้ทำอะไรที่เคอร์เนลจะไม่ทำเพื่อคุณ มันเพียงแค่บรรจุลงในเครื่องมือที่เชื่อมโยงกันมากขึ้นหรือน้อยลงและค่อนข้างใช้งานง่าย คุณสามารถสร้าง Docker ของคุณเองได้ถ้าคุณใส่ใจที่จะทำ chroot, เนมสเปซ, โควต้า, NAT และที่เหลือทั้งหมดด้วยตัวคุณเอง
ออกุสตุส

คำตอบ:


8

ดีเบลล์และเสียงนกหวีดพิเศษเรียกว่าการแยกกระบวนการคอนเทนเนอร์ได้รับเนมสเปซของตัวเองจากโฮสต์เคอร์เนลซึ่งหมายความว่าโปรแกรมในคอนเทนเนอร์ไม่สามารถลองอ่านหน่วยความจำเคอร์เนลหรือกิน RAM มากกว่าที่อนุญาต

นอกจากนี้ยังแยกเครือข่ายสแต็คดังนั้นกระบวนการสองกระบวนการสามารถฟังบนพอร์ต 8080 สำหรับตัวอย่างคุณจะต้องจัดการการกำหนดเส้นทางในระดับโฮสต์ไม่มีเวทมนตร์ที่นี่ แต่การจัดการเส้นทางในที่เดียวและหลีกเลี่ยงการแก้ไขการกำหนดค่ากระบวนการเพื่อ ฟังพอร์ตฟรี

ประการที่สอง chroot ยังคงอ่าน / เขียนการเปลี่ยนแปลงใด ๆ เป็นสิ่งที่ถาวรนักเทียบท่าที่ใช้คอนเทนเนอร์aufsจะเริ่มจากระบบไฟล์ที่สะอาดทุกครั้งที่คุณเรียกใช้งานคอนเทนเนอร์ (การเปลี่ยนแปลงจะถูกเก็บไว้หากคุณหยุด / เริ่มต้น IIRC)

ดังนั้นในขณะที่คอนเทนเนอร์อาจถูกมองว่าเป็นprocess namespace+ chrootแต่ความเป็นจริงนั้นซับซ้อนกว่าเล็กน้อย


โปรดทราบว่าaufsจะไม่ใช้โดยค่าเริ่มต้นอีกต่อไป ตอนนี้มันเป็นoverlay2
Vitalii Vitrenko

จริง แต่ผมคิดว่ามีวัสดุการศึกษาเพิ่มเติมอ้างอิง aufs กว่า overlay2 สำหรับตอนนี้ :)
Tensibai

กระบวนการปกติไม่สามารถอ่านหน่วยความจำใด ๆ ที่ไม่ควรทำ หากคุณกำลังอาศัยเทียบท่าเพื่อความปลอดภัยของคุณกำลังทำมันผิด ...
ออกุสตุ

@Gaius คุณกำลังอ่านฉันผิดฉันแค่พยายามที่จะให้เบาะแสในการค้นหากับ OP ... การเพิ่มนักเทียบท่าในขั้นตอนการจัดส่งด้วยอิสระทั้งหมดที่นักพัฒนาให้กับนักพัฒนาในสิ่งที่พวกเขาใช้ภายในไม่ใช่จุดรักษาความปลอดภัย อย่างไรก็ตามเนมสเปซจะป้องกันจากสแต็กโอเวอร์โฟลว์และบัฟเฟอร์โอเวอร์โฟลว์ตามธรรมชาติ
Tensibai

5

ใช่มันมีอะไรมากกว่านั้นchrootถึงจุดที่พวกเขาไม่มีอะไรเหมือนกัน

  • รูปแบบไฟล์สคริปต์มาตรฐานรวมถึงความหมายที่เกี่ยวข้องกับงานมือ
  • รูปภาพ (รวมถึงรูปภาพที่ไม่ระบุชื่อระหว่างภาพ), แคช, การตั้งชื่อ, การดาวน์โหลด ฯลฯ รวมถึงการจัดการที่ทรงพลัง ( docker image prune... )
  • ตู้คอนเทนเนอร์ (รวมถึงระบบไฟล์ชั่วคราวของตัวเอง, การตั้งชื่อ, ความสามารถdocker execในการเข้าถึง ฯลฯ )
  • การจัดการกระบวนการ ( docker container ...)
  • ระบบเครือข่ายที่มีตัวเลือกง่าย ๆ รวมถึงระบบเชื่อมต่อภายในภาชนะ ฯลฯ
  • เล่ม (รวมถึงปริมาณที่มีการจัดการพิเศษ)
  • docker-compose หรือจับกลุ่มเป็นการอัพเกรดแบบ low-profile ไปอีกมาก
  • สวนสัตว์ขนาดใหญ่ของโซลูชันอื่น ๆ ที่ยึดตามคอนเทนเนอร์ที่ถูกเทียบชิด (OpenShift เป็นต้น)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.