เป็นไปได้หรือไม่ที่จะเริ่มคอนเทนเนอร์ LXC ภายในคอนเทนเนอร์ LXC อื่น?
เป็นไปได้หรือไม่ที่จะเริ่มคอนเทนเนอร์ LXC ภายในคอนเทนเนอร์ LXC อื่น?
คำตอบ:
ฉันจะปัดเป่าตำนานบางอย่างที่นี่
นี่เป็นเพียงความคิดที่ไม่ดี ฉันขอโทษ. - ยาโคบ 5 มี.ค. เวลา 20:30 น
ฉันไม่เห็นว่านี่เป็นความคิดที่เลว มันเป็นเพียง chroot ภายใน chroot ในอีกด้านหนึ่งก็อาจลดประสิทธิภาพในลักษณะที่เล็กน้อยบางอย่าง (ไม่มีอะไรเทียบกับการใช้งาน VM ภายใน VM) ในทางกลับกันมีแนวโน้มที่จะปลอดภัยมากขึ้น (เช่นแยกออกจากระบบโฮสต์หลักและองค์ประกอบอื่น ๆ )
คุณมีเหตุผลจริงที่จะทำเช่นนี้? โปรดจำไว้ว่าคำถามที่นี่ควรเกี่ยวกับปัญหาที่เกิดขึ้นจริงที่คุณเผชิญ - Zoredache 5 มี.ค. เวลา 21:52 น
ฉันเห็นด้วย 100% กับความคิดเห็นต่อไปนี้ของผู้โพสต์ นอกจากนี้ฉันคิดว่ามันปลอดภัยที่จะสมมติว่าทุกคนที่โพสต์คำถามที่นี่น่าจะคิดว่าพวกเขามีเหตุผลที่แท้จริงที่จะทำ [มัน] ..
ฉันคิดว่า lxc น่าจะสามารถทำการโยกย้าย VM ได้ง่ายขึ้น (และสำรอง + กู้คืนด้วย) แต่ฉันไม่แน่ใจเกี่ยวกับกรณีเมื่อไม่มีการเข้าถึงโฮสต์ OS (ตัวอย่างเช่น vps ราคาถูก) - มิคาอิล 6 มี.ค. เวลา 11:17 น
จริง ๆ แล้วฉันเจอคำถามนี้เมื่อเดือนมิถุนายนที่ผ่านมาเมื่อฉันดำดิ่งสู่ LXC สำหรับโครงการ PaaS / IaaS และฉันสนใจเป็นพิเศษในความสามารถในการอนุญาตให้ผู้ใช้จำลองสภาพแวดล้อมคลาวด์เพื่อการพัฒนา
LXCeption เราลึกเกินไป - Tom O'Connor 6 มีนาคมเวลา 22:46 น
ฉันหัวเราะเล็กน้อยเมื่อฉันอ่านข้อความนี้ แต่นั่นไม่ใช่กรณีทั้งหมด :)
อย่างไรก็ตามในที่สุดฉันก็ตั้งค่าสภาพแวดล้อม VirtualBox ด้วยการติดตั้ง Ubuntu 12.04 LTS Server Edition หลังจากอ่านทั้งหมดนี้โดยคิดว่ามันเป็นไปได้ 100% หลังจากติดตั้ง LXC ฉันสร้างคอนเทนเนอร์ใหม่และติดตั้ง LXC ภายในคอนเทนเนอร์ด้วย apt-get การติดตั้งส่วนใหญ่ดำเนินไปด้วยดี แต่ส่งผลให้เกิดข้อผิดพลาดในที่สุดเนื่องจากปัญหากับแพ็คเกจ cgroup-lite ซึ่งงานพุ่งพรวดล้มเหลวในการเริ่มต้นหลังจากติดตั้งแพคเกจแล้ว
หลังจากการค้นหาเล็กน้อยฉันก็ได้พบกับบทความดีๆนี้ที่ stgraber.org (สารพัดซ่อนอยู่ใต้หัวข้อ "Container Nesting"):
sudo apt-get install lxc
sudo lxc-create -t ubuntu -n my-host-container -t ubuntu
sudo wget https://www.stgraber.org/download/lxc-with-nesting -O /etc/apparmor.d/lxc/lxc-with-nesting
sudo /etc/init.d/apparmor reload
sudo sed -i "s/#lxc.aa_profile = unconfined/lxc.aa_profile = lxc-container-with-nesting/" /var/lib/lxc/my-host-container/config
sudo lxc-start -n my-host-container
(in my-host-container) sudo apt-get install lxc
(in my-host-container) sudo stop lxc
(in my-host-container) sudo sed -i "s/10.0.3/10.0.4/g" /etc/default/lxc
(in my-host-container) sudo start lxc
(in my-host-container) sudo lxc-create -n my-sub-container -t ubuntu
(in my-host-container) sudo lxc-start -n my-sub-container
การติดตั้งนโยบาย AppArmor และการรีสตาร์ท daemon นั้นได้ทำการหลอกลวง (อย่าลืมเปลี่ยนช่วงของเครือข่ายแม้ว่า!) ในความเป็นจริงฉันคิดว่าตัวอย่างบางอย่างมีความสำคัญมากที่ฉันทำมิเรอร์ @ http://pastebin.com/JDFp6cTBในกรณีที่บทความออฟไลน์
หลังจากนั้นก็sudo /etc/init.d/cgroup-lite start
ประสบความสำเร็จและมันก็ราบรื่น
ดังนั้นใช่เป็นไปได้ที่จะเริ่มคอนเทนเนอร์ LXC ภายในคอนเทนเนอร์ LXC อื่น :)
ด้วย Ubuntu 14.04 (เชื่อถือได้) คุณสามารถเพิ่มสิ่งต่อไปนี้ในการกำหนดค่าคอนเทนเนอร์หลัก:
lxc.mount.auto = cgroup
lxc.aa_profile = lxc-container-default-with-nesting
ข้อมูลอ้างอิง: https://help.ubuntu.com/lts/serverguide/lxc.html#lxc-basic-usage (ค้นหาคำว่า "nesting)
ตรวจสอบให้แน่ใจว่าคุณมีเครือข่ายที่กำหนดค่าไว้ล่วงหน้าก่อนที่จะบูตเพื่อหลีกเลี่ยงการหยุดยาวก่อนที่หน้าจอเข้าสู่ระบบจะปรากฏขึ้น!
HTH
~/.config/lxc/default.conf
ภายใต้บัญชีของผู้ใช้ที่สร้างคอนเทนเนอร์และเพิ่มทั้งสองบรรทัดให้ใช้งานได้
นอกจากนี้ ... คุณรู้หรือไม่ว่าตอนนี้คุณสามารถติดตั้ง Openstack ทั้งหมดลงในคอนเทนเนอร์ LXC เดียวได้แล้ว แต่ละบริการ "Openstack" (nova, swift ฯลฯ ) จะถูกติดตั้งลงในคอนเทนเนอร์ lxc "ซ้อนกัน" ภายในคอนเทนเนอร์ "master / parent"
ใช้เวลาสักครู่ในการติดตั้งทุกอย่าง แต่เมื่อเสร็จแล้วคุณจะได้ทดสอบสภาพแวดล้อม OpenStack บนแล็ปท็อปหรือเดสก์ท็อปของคุณเพื่อทำการทดสอบ
ถ้าคุณต้องการหยุด OpenStack คุณเพียงแค่ lxc-stop คอนเทนเนอร์หลัก / พาเรนต์เดียวกันเพื่อรีสตาร์ท Openstack
ใช่คุณสามารถทำภาชนะบรรจุ LXC ซ้อนกันและแม้จะมีความคิดเห็นที่ 1 มีเวลาและกรณีการใช้งานที่ภาชนะซ้อนอยู่มีประโยชน์อย่างแน่นอน ดู Stephane Graber's 10 part LXC blog โดยเฉพาะในส่วน Container Nesting -
ชุดที่ 10 ของ Stephane Graber's ที่ LXC
use-cases:สมมติว่าคุณต้องการสภาวะแวดล้อม LXC แบบหลายผู้เช่า สร้าง 1 คอนเทนเนอร์หลักสำหรับแต่ละบุคคลหรือองค์กรเพื่อให้แน่ใจว่าได้เปิดใช้งานการทำรังโดยเพิ่ม 2 cmds ไปยังไฟล์กำหนดค่าคอนเทนเนอร์ LXC ถัดไปในแต่ละคอนเทนเนอร์หลักสร้างคอนเทนเนอร์ย่อยที่ซ้อนกันซึ่งคุณติดตั้งแอปเดสก์ท็อปและอื่น ๆ ที่แต่ละกลุ่มต้องการ โปรดทราบว่าแม้ว่าเครือข่ายเริ่มต้นสำหรับคอนเทนเนอร์หลักจะเป็น 10.0.3.x แต่คอนเทนเนอร์ที่ซ้อนอยู่จะเป็น 10.0.4.x โดยค่าเริ่มต้น (คุณสามารถเปลี่ยนแปลงได้หากคุณต้องการ)
ประโยชน์ที่ใหญ่ที่สุดที่ฉันเคยใช้กับ Nested LXC คืออะไร หากคุณ lxc-stop ที่เก็บหลักและ lxc-clone มัน .. คุณโคลนไม่เพียง แต่ต้นแบบ แต่ทุก sub-container ... นี้เป็นประโยชน์สำหรับการสำรองข้อมูลอย่างรวดเร็ว วิธีการนี้มีประโยชน์ถ้าคุณต้องการทำการโยกย้ายแบบสดด้วย LXC ด้วย CRIU เมื่อคุณย้ายหนึ่งในคอนเทนเนอร์หลักไปยังเครื่องอื่น ... คุณกำลังย้ายมันจริง ๆ และคอนเทนเนอร์ที่ซ้อนกันทั้งหมดเช่นกัน
สุดท้ายสำหรับตัวอย่างที่ยอดเยี่ยมของการทำรัง LXC ใช้ Stephane Graber และคนอื่น ๆ สร้างแบบจำลองสำหรับ "อินเทอร์เน็ต" โดยใช้ LXC, BPG & OSPF ทั้งหมดใน 1 คอนเทนเนอร์ LXC ภายในตู้คอนเทนเนอร์ LXC "master or parent" LXC นั้นมีตู้คอนเทนเนอร์ LXC ซ้อนกัน 512 ตู้แต่ละตู้ที่เรียกใช้ Quagga สำหรับการกำหนดเส้นทาง BGP / OSPF ร่วมกันกับ "โหนด" อินเทอร์เน็ต 512 รายการจำลองอินเทอร์เน็ต การใช้งานนี้ถูกใช้ในการประชุมความปลอดภัย NSEC 2014 สำหรับผู้เข้าร่วมประชุมทุกคนเพื่อทดสอบความปลอดภัยในอินเทอร์เน็ต
แหล่งที่มาสำหรับสิ่งนี้อยู่ใน Githug ที่: 2014 NSEC LXC simulator สำหรับรหัส github อินเทอร์เน็ต