Apakah mungkin untuk memulai wadah LXC di dalam wadah LXC lain?
Apakah mungkin untuk memulai wadah LXC di dalam wadah LXC lain?
Jawaban:
Saya akan menghilangkan beberapa mitos di sini.
Ini hanya ide yang buruk. Maafkan saya. - Yakub 5 Maret pukul 20:30
Saya tidak melihat bagaimana ini adalah ide yang buruk. Benar-benar hanya chroot di dalam chroot. Di satu sisi, itu mungkin dapat menurunkan kinerja dalam beberapa cara yang dapat diabaikan (tidak ada dibandingkan dengan menjalankan VM di dalam VM). Di sisi lain, ini cenderung lebih aman (misalnya lebih terisolasi dari sistem host root dan konstituennya).
Apakah Anda benar-benar memiliki alasan kuat untuk melakukan ini? Harap ingat bahwa pertanyaan di sini harus tentang masalah aktual yang Anda hadapi. - Zoredache 5 Maret pukul 21:52
Saya setuju 100% dengan komentar poster berikut. Lebih jauh, saya pikir aman untuk mengasumsikan bahwa setiap orang yang memposting pertanyaan di sini kemungkinan berpikir bahwa mereka memiliki alasan kuat untuk melakukannya [..]
Saya pikir, lxc itu harus dapat menyederhanakan migrasi VM (dan backup + recovery juga). Tapi saya tidak yakin tentang kasus, ketika tidak ada akses ke host OS (misalnya vps murah). - Mikhail 6 Maret jam 11:17
Saya benar-benar menemukan pertanyaan ini pada bulan Juni ketika saya pertama kali menyelam ke LXC untuk proyek PaaS / IaaS, dan saya sangat tertarik pada kemampuan untuk memungkinkan pengguna untuk meniru lingkungan cloud untuk tujuan pengembangan.
LXCeption. Kami terlalu dalam. - Tom O'Connor 6 Maret pukul 22:46
Saya tertawa sedikit ketika membaca ini, tapi itu sama sekali bukan masalahnya :)
Bagaimanapun, saya akhirnya membuat lingkungan VirtualBox dengan instalasi stok Ubuntu 12.04 LTS Server Edition setelah membaca semua ini, berpikir bahwa ini 100% mungkin. Setelah menginstal LXC, saya membuat wadah baru, dan menginstal LXC di dalam wadah dengan apt-get. Sebagian besar instalasi berkembang dengan baik, tetapi pada akhirnya menghasilkan kesalahan karena masalah dengan paket cgroup-lite, yang pekerjaan pemula gagal dimulai setelah paket diinstal.
Setelah sedikit mencari, saya menemukan artikel bagus ini di stgraber.org ( barangnya bersembunyi di bawah bagian "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
Menginstal kebijakan AppArmor itu dan memulai ulang daemon berhasil (jangan lupa mengubah rentang jaringan!). Bahkan, saya pikir cuplikan tertentu itu sangat penting sehingga saya mencerminkannya di @ http://pastebin.com/JDFp6cTB untuk berjaga-jaga kalau-kalau artikel itu pernah offline.
Setelah itu, sudo /etc/init.d/cgroup-lite start
berhasil dan ternyata lancar.
Jadi, ya, dimungkinkan untuk memulai wadah LXC di dalam wadah LXC lain :)
Dengan Ubuntu 14.04 (trusty) Anda cukup menambahkan berikut ini di konfigurasi wadah induk:
lxc.mount.auto = cgroup
lxc.aa_profile = lxc-container-default-with-nesting
referensi: https://help.ubuntu.com/lts/serverguide/lxc.html#lxc-basic-usage (cari "nesting)
Pastikan Anda memiliki jaringan pra-konfigurasi sebelum melakukan booting untuk menghindari jeda lama sebelum layar login muncul!
HTH
~/.config/lxc/default.conf
bawah akun pengguna yang membuat wadah dan menambahkan dua baris ke dalamnya berfungsi dengan baik.
Juga ... tahukah Anda sekarang Anda dapat menginstal SEMUA Openstack ke dalam wadah LXC tunggal. Setiap "layanan" Openstack (nova, swift dll) kemudian semua diinstal ke dalam wadah lxc "bersarang" di dalam wadah "master / parent".
Butuh beberapa saat untuk menginstal semuanya tetapi ketika selesai Anda memiliki lingkungan OpenStack pengujian yang bagus pada laptop atau desktop untuk bereksperimen.
Jika Anda ingin menghentikan OpenStack, Anda cukup lxc-stop wadah master / parent yang sama untuk me-restart Openstack.
Ya, Anda dapat membuat wadah LXC bersarang dan meskipun komentar pertama ada beberapa kali dan kasus penggunaan di mana kontainer bersarang tentu berguna. Lihat 10 bagian blog LXC Stephane Graber tetapi khususnya bagian Container Nesting -
Seri 10 bagian Stephane Graber di LXC
use-cases: Misalkan Anda menginginkan lingkungan LXC multi-tenant. Buat 1 wadah Master untuk setiap orang atau organisasi memastikan untuk mengaktifkan Nesting dengan menambahkan 2 cmds ke file konfigurasi wadah LXC. Selanjutnya di setiap wadah Master buat sub-wadah bersarang Anda di mana Anda menginstal aplikasi, desktop dll yang diperlukan setiap kelompok. CATATAN bahwa sedangkan jaringan default untuk wadah Master adalah 10.0.3.x kontainer bersarang akan menjadi 10.0.4.x secara default (Anda dapat mengubah salah satu jika perlu).
Apa keuntungan terbesar saya menggunakan Nested LXC? Jika Anda lxc-hentikan wadah Master dan lxc-clone itu .. Anda mengkloning tidak hanya Master tetapi semua sub-wadah ... ini berguna untuk backup cepat. Pendekatan ini juga berguna jika Anda ingin melakukan migrasi langsung LXC dengan CRIU. Saat Anda memigrasi salah satu wadah Master ke Mesin lain ... Anda sebenarnya sedang memigrasikannya dan semua wadah bersarang juga.
Terakhir, untuk contoh keren dari penggunaan bersarang LXC, Stephane Graber & yang lain membuat simulator untuk "Internet" menggunakan LXC, BPG & OSPF semuanya dalam 1 wadah LXC. Di dalam 1 kontainer LXC "master atau induk" LXC terdapat 512 kontainer LXC bersarang yang masing-masing menjalankan Quagga untuk perutean BGP / OSPF. Bersama-sama, 512 "Internet" Internet itu mensimulasikan Internet. Implementasi ini digunakan pada konferensi keamanan NSEC 2014 bagi semua peserta untuk bereksperimen dengan keamanan di Internet.
Sumber untuk ini ada di Githug di: 2014 NSEC LXC simulator untuk The Internet github code