LXC kabı LXC kabı içinde başlatmak mümkün müdür?


21

LXC kabını başka bir LXC kabı içinde başlatmak mümkün müdür?


1
Bunu yapmak için gerçekten bir nedeniniz var mı? Lütfen buradaki soruların karşılaştığınız gerçek sorunlarla ilgili olması gerektiğini unutmayın .
Zoredache

6
Bence, bu LXC, VM geçişini basitleştirebilmelidir (ve ayrıca yedekleme + kurtarma). Ancak, işletim sistemi sunucusuna erişim olmadığında (örneğin ucuz vps) durumlardan emin değilim.
Mikhail

Yanıtlar:


45

Burada birkaç efsaneyi ortadan kaldıracağım.

Bu sadece kötü bir fikir. Üzgünüm. - Jacob, Mar 5, 20:30

Bunun nasıl kötü bir fikir olduğunu anlamıyorum. Gerçekten sadece bir chroot içindeki bir chroot. Bir yandan, performansı göz ardı edilebilir bir şekilde düşürebilir (bir VM içinde bir VM çalıştırmaya kıyasla hiçbir şey). Öte yandan, daha güvenli olması muhtemeldir (örneğin, kök ana sistemden ve bileşenlerinden daha fazla izole edilmiştir).

Bunu yapmak için gerçekten bir nedeniniz var mı? Lütfen buradaki soruların karşılaştığınız gerçek sorunlarla ilgili olması gerektiğini unutmayın. - Zoredache 5 Mar 21:52

Posterin yorumuna% 100 katılıyorum. Ayrıca, burada soru gönderen herkesin muhtemelen bunu yapmak için gerçek bir nedenleri olduğunu düşündüğünü varsaymanın güvenli olduğunu düşünüyorum.

Bence, bu LXC, VM geçişini basitleştirebilmelidir (ve ayrıca yedekleme + kurtarma). Ancak, işletim sistemi sunucusuna erişim olmadığında (örneğin ucuz vps) durumlardan emin değilim. - Mikhail 6 Mar, 11:17

PaaS / IaaS projeleri için ilk kez LXC'ye daldığımda, özellikle kullanıcıların geliştirme amacıyla bulut ortamlarını taklit edebilmelerini sağlamakla ilgilendiğim Haziran ayında bu soru ile karşılaştım.

LXCeption. Çok deriniz. - Tom O'Connor, 6 Mar, 22:46

Bunu okuduğumda biraz güldüm, ama bu durum tam olarak değil :)

Her neyse, sonunda tüm bunları okuduktan sonra Ubuntu 12.04 LTS Server Edition hisse senedini yükleyen bir VirtualBox ortamı kurdum, bunun% 100 mümkün olduğunu düşünerek. LXC'yi kurduktan sonra yeni bir kap oluşturdum ve kabın içine apt-get ile LXC kurdum. Yüklemenin çoğu iyi bir şekilde ilerledi, ancak sonunda paketi başlatıldıktan sonra başlangıç ​​işi başlayamayan cgroup-lite paketi ile ilgili bir sorun nedeniyle hatayla sonuçlandı.

Biraz aradıktan sonra , stgraber.org adresinde bu güzel makaleyle karşılaştım (güzellikler "Container Nesting" bölümünün altında saklanıyor):

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

Bu AppArmor politikasını kurmak ve arka plan planını yeniden başlatmak hile yaptı (yine de ağ aralıklarını değiştirmeyi unutmayın!). Aslında, belirli bir snippet'in o kadar önemli olduğunu düşündüm ; makalenin çevrimdışı olması durumunda http://pastebin.com/JDFp6cTB @ aynasını yaptım .

Bundan sonra, sudo /etc/init.d/cgroup-lite startbaşarılı oldu ve pürüzsüz yelken oldu.

Yani, evet, başka bir LXC kabının içinde bir LXC kabı başlatmak mümkündür.


1
Bu yapılandırma, AppArmor korumasını hemen hemen devre dışı bırakır (kabı tanımsız çalıştırarak). AppArmor, "konağın kabın içindeki imtiyazın yanlışlıkla yanlış kullanımından korumak için tasarlanmıştır". Bu yapılandırma, iç içe lxc kabınız tarafından yararlanılacak olan lxc ana bilgisayarını hemen hemen açıyor. İç içe LXC sunucusu, konteynerlerine de koruma sağlamayabilir. Genel olarak, bu korumanın devre dışı bırakılması önerilmez.
Reece45

içinde lxc çalıştırmak için uygun bir güvenli yaklaşım var mı?
Mascarpone

10
Gerçek dünya kullanım durumu: Jenkins çalıştıran bir LXC konteynerim var ve entegrasyon testleri yapmadan önce jenkins'in LXC konteynerlerini çalıştırabilmesini istiyorum. Alternatifler: jenkins'i LXC dışında çalıştırın veya ana bilgisayar üzerinde ssh (çirkin) aracılığıyla LXC kapları oluşturun.
Giovanni Toraldo

13

Ubuntu 14.04 (trusty) ile üst konteyner konfigürasyonuna sadece aşağıdakileri ekleyebilirsiniz:

lxc.mount.auto = cgroup
lxc.aa_profile = lxc-container-default-with-nesting

başvuru: https://help.ubuntu.com/lts/serverguide/lxc.html#lxc-basic-usage ("yuvalama" için arama yapın )

Oturum açma ekranı görünmeden önce uzun bir duraklamadan kaçınmak için, önyüklemeden önce önceden yapılandırılmış bir ağınız olduğundan emin olun!

HTH


1
Mükemmel çalışıyor - teşekkür ederim! Benim gibi kullanıcılar için, yukarıdaki satırları koymak için bir üst konteyner yapılandırması yapmamış olabilecek ~/.config/lxc/default.confkullanıcılar için, kabı oluşturan kullanıcının hesabının altına bir dosya eklemek ve bu iki satırı ona eklemek gayet iyi çalışıyor.
Brandon Rhodes,

2017'ye dönelim! Son zamanlarda bir "enterprise-y" uygulaması için lxc içinde docker kurmam gerekiyor - iyi çalışıyor ama sorma ...
Lester Cheung

1

Ayrıca ... şimdi TÜM YERLERI tek bir LXC kabına kurabileceğinizi biliyor muydunuz. Openstack "hizmetlerinin" (nova, hızlı vb.) Her biri daha sonra "ana / üst" kap içinde "iç içe" lxc kaplara kurulur.

Her şeyi kurmak biraz zaman alır ancak bittiğinde, dizüstü bilgisayarınızda ya da masaüstünüzde denenecek güzel bir OpenStack ortamını test edebilirsiniz.

OpenStack'i durdurmak istiyorsanız, sadece Ana Sayfa / Üst Kapsayıcıyı açar.

bakınız: Openstack Single Installer talimatları


1

Evet iç içe LXC kaplar yapabilirsiniz ve ilk yoruma rağmen İç içe kapların kesinlikle yararlı olduğu zamanlar ve kullanım durumları vardır. Stephane Graber'in 10 parçalı LXC blog'una bakın, ancak özellikle Container Nesting -

Stephane Graber'in LXC'deki 10 bölüm dizisi

use-cases: Çok kiracılı bir LXC ortamı istediğinizi varsayalım. LXC konteyner yapılandırma dosyasına 2 cm ekleyerek Yuvalamayı etkinleştirdiğinizden emin olarak her kişi veya kuruluş için 1 Ana kapsayıcı oluşturun. Her bir Ana kapsayıcıda, her grubun ihtiyaç duyduğu uygulamaları, masaüstlerini vb. Yüklediğiniz iç içe alt kaplar oluşturun. NOT Ana kapsayıcılar için varsayılan ağın 10.0.3.x olmasına rağmen, iç içe kapsayıcılar varsayılan olarak 10.0.4.x olacaktır (gerekirse, değiştirebilirsiniz).

Nested LXC'yi kullandığım en büyük avantaj nedir ? Master kabını lxc-stop edip lxc-clone yaparsanız .. sadece Master'ı değil, tüm alt-kapları da klonlarsanız ... bu hızlı yedeklemeler için kullanışlıdır. Bu yaklaşım, CXU ile LXC canlı geçişini yapmak istiyorsanız da kullanışlıdır. Master konteynerlerden birini başka bir Makineye geçirdiğinizde ... aslında onu ve tüm iç içe geçmiş konteynerleri de geçirirsiniz.

Son olarak, harika bir LXC yerleştirme örneği için Stephane Graber ve diğerleri, hepsi 1 LXC kabında LXC, BPG ve OSPF kullanan "İnternet" için bir simülatör kurdular. Bu 1 LXC "ana veya ana" LXC kabının içinde, BGP / OSPF yönlendirmesi için her biri Quagga çalıştıran 512 iç içe LXC kabı vardır. Birlikte bu 512 İnternet “düğümleri” interneti simüle ediyor. Bu uygulama 2014 NSEC güvenlik konferansında, tüm katılımcıların İnternetteki güvenliği denemek için kullanıldı.

Bunun için kaynak Githug'da: 2014 NSEC İnternet github kodu için LXC simülatörü

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.