ทำไมต้องใช้ lxc แทน chroot


10

เซิร์ฟเวอร์ ubuntu หนึ่งตัวโฮสต์ 3 แอปทั้งหมดในโดเมนแยกกัน
แต่ละแอพมีนักพัฒนาของตัวเอง
นักพัฒนาแอพอยู่ในกลุ่ม "sftp" ของ linux
chrootอนุญาตให้เข้าถึงรหัสผ่าน sftp สำหรับนักพัฒนาแอปแต่ละคน

/home/app1/prod
/home/app2/prod
/home/app3/prod

ใน sshd_config

Match Group sftp  
  PasswordAuthentication yes
  ChrootDirectory %h
  ForceCommand internal-sftp
  AllowTcpForwarding no

ข้อกังวลของเราคือช่องโหว่การเขียนโปรแกรมในแอพหนึ่งที่ทำให้เกิดปัญหาในอีก 2 แอพ

เราควรใช้ภาชนะ lxc แทน chroot หรือไม่? ทำไม? การเปลี่ยนแปลงคอนเทนเนอร์ lxc จะโปร่งใสสำหรับนักพัฒนาแอปหรือไม่


2
สิ่งเดียวที่chrootทำได้คือเปลี่ยนไดเรกทอรีรูทสำหรับกระบวนการ มันไม่มีการแยกหรืออะไรอย่างอื่น
Zoredache

คำตอบ:


14

Linux Containers (LXC) เป็นวิธีการจำลองเสมือนระดับระบบปฏิบัติการสำหรับการติดตั้งเซิร์ฟเวอร์แบบแยกหลายตัว (ภาชนะบรรจุ) บนโฮสต์ตัวควบคุมเดียว LXC ไม่ได้จัดเตรียมเครื่องเสมือน แต่ให้สภาพแวดล้อมเสมือนที่มีกระบวนการและพื้นที่เครือข่ายของตนเอง มันคล้ายกับ chroot แต่มีการแยกมากขึ้น

คอนเทนเนอร์ Linux มีคุณสมบัติ / ข้อดีหลายประการ:

ข้อดี:

การแยกที่ดีกว่าเมื่อเทียบกับ chroot (คุก chroot) ค่าใช้จ่ายต่ำ LXC ใช้ทรัพยากรน้อยที่สุดในแง่ของ RAM และพื้นที่ฮาร์ดไดรฟ์โดยไม่มีค่าใช้จ่ายในการติดตั้งเกสต์ OS ในเครื่องเสมือน (VMWare / VirtualBox / KVM)

แอปพลิเคชันและบริการ (เซิร์ฟเวอร์) ทำงานที่ความเร็วดั้งเดิม

มีการสนับสนุนสำหรับคอนเทนเนอร์ Linux ใน libvirt

คอนเทนเนอร์ Linux ทำงานได้ดีกับ btrfs

แต่ยังมีข้อเสีย:

คอนเทนเนอร์ Linux รันกระบวนการ Linux บนเคอร์เนล Linux ซึ่งหมายความว่าคุณสามารถเรียกใช้ Linux (คอนเทนเนอร์ Fedora บนโฮสต์ Ubuntu) แต่ไม่ใช่ระบบปฏิบัติการอื่น (ไม่ใช่ BSD / OSX / Windows)

ไม่มีอินเตอร์เฟส GUI (กราฟิก) เพื่อกำหนดค่าหรือจัดการคอนเทนเนอร์

มีความยุ่งยากของเอกสารประกอบในการติดตั้งและกำหนดค่าคอนเทนเนอร์ การกำหนดค่าคอนเทนเนอร์ต้องใช้ความรู้และทักษะทางเทคนิคเล็กน้อย (และความอดทนจำนวนมาก)


1
เคอร์เนลตัวใดที่ใช้ใน LXC? (หนึ่งจากโฮสต์หรือแขก?)
Francesco

4
ข้อดีและข้อเสียมากมายเปรียบเทียบ LXC กับระบบเสมือนจริงแบบสมบูรณ์ซึ่งไม่เกี่ยวข้องกับคำถามที่ถามและอาจทำให้เข้าใจผิด
Roger Dueck

@ Francesco กับ LXC, (และคอนเทนเนอร์ Linux โดยทั่วไป) มีเพียงหนึ่งเคอร์เนล - โฮสต์เคอร์เนล ตัวอย่างข้อยกเว้นบางประการเช่น Docker ที่รันบน MacOS หรือ Windows เนื่องจากใช้เคอร์เนล Linux ที่ทำงานในเครื่องเสมือน อย่างไรก็ตามคอนเทนเนอร์ Linux ทั้งหมดบนแพลตฟอร์มเหล่านี้ยังคงใช้เคอร์เนลเดียวกัน
โกรธ
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.