是否可以在 LXC 容器内启动 LXC 容器?

Mik*_*ail 22 lxc

是否可以在另一个 LXC 容器内启动 LXC 容器?

Ada*_*lin 48

我将在这里消除一些神话。

这只是一个坏主意。抱歉。– 雅各布 3 月 5 日 20:30

我不明白这是一个坏主意。它实际上只是 chroot 中的一个 chroot。一方面,它可能会以某种可以忽略不计的方式降低性能(与在 VM 内运行 VM 相比,这没什么)。另一方面,它可能更安全(例如,与根主机系统及其组成部分更加隔离)。

你真的有这样做的真正理由吗?请记住,这里的问题应该是关于您面临的实际问题。– Zoredache 3 月 5 日 21:52

我 100% 同意海报的以下评论。此外,我认为可以安全地假设每个在这里发布问题的人都可能认为他们有真正的理由去做 [它]..

我认为,lxc 应该能够简化 VM 迁移(以及备份+恢复)。但是我不确定在无法访问主机操作系统(例如便宜的 vps)的情况下。– 米哈伊尔 3 月 6 日 11:17

实际上,我在 6 月份第一次深入研究用于 PaaS/IaaS 项目的 LXC 时遇到了这个问题,我对允许用户出于开发目的模拟云环境的能力特别感兴趣。

LXCception。我们太深了。– 汤姆奥康纳 3 月 6 日 22:46

当我读到这个时我笑了一点,但事实并非如此:)

无论如何,在阅读完所有内容后,我最终设置了一个 VirtualBox 环境,并安装了 Ubuntu 12.04 LTS 服务器版,认为这是 100% 可能的。安装 LXC 后,我创建了一个新容器,并使用 apt-get 在容器内安装了 LXC。大多数安装进展顺利,但最终由于 cgroup-lite 包的问题而导致错误,在安装包后,其 upstart 作业无法启动。

经过一番搜索,我在 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
Run Code Online (Sandbox Code Playgroud)

安装该 AppArmor 策略并重新启动守护程序即可解决问题(但不要忘记更改网络范围!)。事实上,我认为那个特定的片段非常重要,所以我在@ http://pastebin.com/JDFp6cTB 上镜像了它,以防文章脱机。

之后,sudo /etc/init.d/cgroup-lite start成功了,一帆风顺。

所以,是的,可以在另一个 LXC 容器内启动一个 LXC 容器:)

  • 实际用例:我有一个运行 jenkins 的 LXC 容器,我希望 jenkins 能够在执行集成测试之前运行 LXCs 容器。替代方案:在 LXC 之外运行 jenkins,或者通过 ssh 在主机上创建 LXC 容器(丑陋)。 (10认同)

Les*_*ung 13

使用 Ubuntu 14.04(可信),您只需在父容器配置中添加以下内容:

lxc.mount.auto = cgroup
lxc.aa_profile = lxc-container-default-with-nesting
Run Code Online (Sandbox Code Playgroud)

参考:https : //ubuntu.com/server/docs/containers-lxc (搜索“嵌套”)

确保您在启动前已预先配置好网络,以避免在登录屏幕出现之前出现长时间的停顿!

HTH