是否可以在另一个LXC容器内启动LXC容器?
我要在这里消除一些神话。
这只是一个坏主意。 对不起。 – Jacob 3月20日20:30
我不明白这是一个坏主意。 这实际上只是一个chroot里面的chroot。 一方面,它可能会以一些微不足道的方式降低性能(与在虚拟机内部运行虚拟机相比毫无用处)。 另一方面,它可能更安全(例如,与根系主机系统及其组成部分隔离)。
你真的有这个理由吗? 请记住,这里的问题应该是关于你面临的实际问题。 – Zoredache 3月5日21:52
我同意100%的发贴者的评论。 此外,我认为可以肯定的是,每个在这里提出问题的人都认为他们有一个真正的理由去做。
我认为,lxc应该能够简化虚拟机迁移(以及备份+恢复)。 但我不确定的情况下,当没有访问主机操作系统(例如便宜的VPS)。 – 米哈伊尔3月6日11:17
6月份,当我第一次潜入PaxS / IaaS项目的LXC时,实际上遇到了这个问题,我特别感兴趣的是允许用户模拟云环境以进行开发。
LXCeption。 我们太深了 – 汤姆奥康纳3月6日22:46
当我读到这篇文章的时候,我笑了一下,但事实并非如此:)
无论如何,我最终设置了一个VirtualBox环境,并在安装了Ubuntu 12.04 LTS服务器版后,认为这是完全可能的。 安装LXC之后,我创build了一个新的容器,并使用apt-get在容器中安装了LXC。 大多数安装进行得很顺利,但是最终由于cgroup-lite软件包的问题而导致错误,在安装软件包之后,它的upstart作业无法启动。
经过一番search之后,我在stgraber.org上看到了这篇精美的文章 (好东西隐藏在“容器嵌套”部分):
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策略并重新启动守护进程的技巧(不要忘了更改networking范围!)。 事实上,我认为这个特别的片段非常重要,所以我反映了这个文章,以防万一这篇文章脱机。
之后, sudo /etc/init.d/cgroup-lite start
成功,并且顺利航行。
所以,是的,可以在另一个LXC容器中启动一个LXC容器:)
使用Ubuntu 14.04(可信赖),您可以简单地在父容器configuration中添加以下内容:
lxc.mount.auto = cgroup lxc.aa_profile = lxc-container-default-with-nesting
参考: https : //help.ubuntu.com/lts/serverguide/lxc.html#lxc-basic-usage (search“嵌套”)
请确保在启动之前已经预先configuration了networking,以避免login屏幕出现之前长时间停顿!
HTH
另外…你知道你现在可以将所有的Openstack安装到一个LXC容器中。 然后,每个OpenStack“服务”(nova,swift等)都被安装到“master / parent”容器内的“嵌套”lxc容器中。
需要一段时间来安装一切,但完成后,您可以在笔记本电脑或台式机上testingOpenStack环境,以便进行试验。
如果你想停止OpenStack你只需要停止主/父容器相同的重新启动OpenStack。
请参阅: Openstack单一安装程序说明
是的,你可以做嵌套的LXC容器,尽pipe第一个评论有时间和用例,其中嵌套的容器肯定是有用的。 请参阅Stephane Graber的LXC博客10部分,特别是容器嵌套部分 –
Stephane Graber在LXC的10部分系列
使用案例:假设您想要一个多租户LXC环境。 为每个人或组织创build一个主容器,确保通过将2 cmds添加到LXC容器configuration文件来启用嵌套。 接下来,在每个主容器中创build嵌套的子容器,在其中安装每个组需要的应用程序,桌面等。 请注意,虽然主容器的默认networking将是10.0.3.x,但默认情况下,嵌套容器将是10.0.4.x(如果需要,您可以更改)。
我使用嵌套LXC 的最大优势是什么 ? 如果lxc停止主容器和lxc克隆它..你不仅克隆主,但所有的子容器…这是方便快速备份。 如果您想要进行带有CRIU的LXC实时迁移,这种方法也非常方便。 当您将其中一个主容器迁移到另一台机器时,您实际上正在迁移它以及所有嵌套的容器。
最后,对于LXC嵌套的一个很好的例子,Stephane Graber和其他人使用LXC,BPG和OSPF在1个LXC容器中构build了一个“互联网”的模拟器。 在1个LXC“主或父”LXC容器内部,有512个嵌套的LXC容器,每个容器运行Quagga进行BGP / OSPF路由。 这512个互联网“节点”一起模拟互联网。 在2014年NSEC安全大会上,所有与会者都使用了这个实现来实验互联网的安全性。
来源于Githug: 2014 NSEC LXC模拟器,用于互联网github代码