标签: lxc

LXC 容器未启动

我的 CentOS LXC 容器不再在 Ubuntu 14.10 机器上启动。我认为问题是在重新启动后开始的,但我不确定。

我在 yum 更新后遇到了类似的问题,当时 init 脚本被替换为不支持 LXC 的库存脚本。他们正在尝试启动 udev 等......但是这次我对所有 CentOS 实例都有这个问题,即使是那些新创建的实例。

主机操作系统:Ubuntu14.10 64 位
来宾操作系统:Centos 6.5 64 位

root@ubuntu-mvutcovici:~# lxc-start --logfile stash-lxc.log --logpriority DEBUG -dn stash
lxc-start: lxc_start.c: main: 337 The container failed to start.
lxc-start: lxc_start.c: main: 339 To get more details, run the container in foreground mode.
lxc-start: lxc_start.c: main: 341 Additional information can be obtained by setting the --logfile and --logpriority options.
root@ubuntu-mvutcovici:~#
Run Code Online (Sandbox Code Playgroud)

这是 stash-lxc.log 文件的内容:

lxc-start 1416596262.928 INFO     lxc_start_ui …
Run Code Online (Sandbox Code Playgroud)

lxc ubuntu-14.10

10
推荐指数
2
解决办法
2万
查看次数

有 linux-vserver 时为什么是 LXC?

我不是LXC专家,但据我所知,它与linux-vserver非常相似。

如果这是正确的,我想知道为什么在已经拥挤的虚拟化阵营中还有另一个玩家?LXC 提供(或承诺)什么是 linux-vserver 没有的?

我是 linux-vserver 的长期用户,我记得大约在很多年前,在所有这些虚拟化炒作之前。最近开发速度放缓,但从未完全停止 - 我知道是因为开发人员帮助我将其恢复到 linux/hppa 上的有用状态(至少在 Gentoo 中)。他们定期推出针对最新内核的补丁,使用所有最新的好东西(LXC 使用的相同容器基础架构),甚至与 GRsecurity 集成。

开始 LXC 工作的人可能有充分的理由这样做,而不是加入已经完善的 linux-vserver 基础?那我想知道。

这都是关于主线集成的吗?那么为什么不采用 linux-vserver 进行集成,就像 Xen 人对 XenLinux 所做的那样?

virtualization linux containers lxc linux-vserver

9
推荐指数
1
解决办法
5167
查看次数

在较重的虚拟化(Xen、KVM、Hyper-V、VMVare)下使用 LXC

是否可以在较重的虚拟化(Xen DomU、KVM、Hyper-V、VMVare)下使用 LXC?我想将它用作安全(隔离)工具,限制资源消耗的能力对我来说不是优先事项。我只对是否可以以直接的方式完成感兴趣;类似于在非虚拟化服务器上​​使用 LXC。我不想在生产服务器上使用太复杂的设置。

virtualization xen jail lxc kvm-virtualization

9
推荐指数
1
解决办法
7545
查看次数

用简单的英语解释什么是 LXC 以及它的用处

  • 什么是LXC?
  • 它有什么用?
  • LXC 和普通虚拟化有什么区别?

linux containers lxc

9
推荐指数
2
解决办法
4436
查看次数

使用 lxc-execute 限制内存和 CPU

我想使用 lxc-execute 隔离进程。是否可以设置带宽、CPU 和内存限制?

我查看了 lxc.conf 的人,但我没有发现它详尽无遗。

linux lxc

9
推荐指数
1
解决办法
2万
查看次数

LXC、端口转发和 iptables

我有一个 LXC 容器 ( 10.0.3.2) 在主机上运行。服务正在容器内的端口上运行7000

从主机 ( 10.0.3.1, lxcbr0),我可以访问服务:

$ telnet 10.0.3.2 7000
Trying 10.0.3.2...
Connected to 10.0.3.2.
Escape character is '^]'.
Run Code Online (Sandbox Code Playgroud)

我想让外部世界可以访问在容器内运行的服务。因此,我想7002将主机上的端口转发到7000容器上的端口:

iptables -t nat -A PREROUTING -p tcp --dport 7002 -j DNAT --to 10.0.3.2:7000
Run Code Online (Sandbox Code Playgroud)

结果是 ( iptables -t nat -L):

DNAT   tcp  --  anywhere     anywhere     tcp dpt:afs3-prserver to:10.0.3.2:7000
Run Code Online (Sandbox Code Playgroud)

尽管如此,我仍无法使用转发端口从主机访问该服务:

$ telnet 10.0.3.1 7002
Trying 10.0.3.1...
telnet: Unable to connect to remote host: Connection refused
Run Code Online (Sandbox Code Playgroud)

我觉得我在这里错过了一些愚蠢的东西。我应该检查哪些事项?调试这些情况的好策略是什么?

为了完整起见,这里是如何iptables …

iptables port-forwarding lxc

9
推荐指数
1
解决办法
3万
查看次数

LXC 对于 VPS 托管是否足够安全?

现在我正在使用 Linux VServer 进行 VPS 托管。但是它缺少一些我需要的功能(例如 cpu 使用虚拟化、来宾配额支持等),所以我正在考虑切换到 OpenVZ 或直接切换到 LXC。我在某处读到 LXC 尚未被认为是安全的(例如http://en.gentoo-wiki.com/wiki/LXC#MAJOR_Temporary_Problems_with_LXC_-_READ_THIS) - 这仍然是真的吗?因为我不认识经营客人的人,所以我真的必须照顾好安全。

security linux openvz lxc

8
推荐指数
1
解决办法
3875
查看次数

将 LXC 容器桥接到托管 eth0,以便它们可以拥有公共 IP

更新:

我在那里找到了解决方案:http : //www.linuxfoundation.org/collaborate/workgroups/networking/bridge#No_traffic_gets_trough_.28except_ARP_and_STP.29

 # cd /proc/sys/net/bridge
 # ls
 bridge-nf-call-arptables  bridge-nf-call-iptables
 bridge-nf-call-ip6tables  bridge-nf-filter-vlan-tagged
 # for f in bridge-nf-*; do echo 0 > $f; done
Run Code Online (Sandbox Code Playgroud)

但我想就此获得专家意见:禁用所有 bridge-nf-* 是否安全?他们来这里做什么?

更新结束

我需要将 LXC 容器桥接到主机的物理接口 (eth0),阅读有关该主题的大量教程、文档和博客文章。

我需要容器拥有自己的公共 IP(我以前做过 KVM/libvirt)。

经过两天的搜索和尝试,我仍然无法使其与 LXC 容器一起使用。

主机运行新安装的 Ubuntu Server Quantal (12.10),仅安装了 libvirt(我没有在此处使用)和 lxc。

我创建了容器:

lxc-create -t ubuntu -n mycontainer
Run Code Online (Sandbox Code Playgroud)

所以他们也运行 Ubuntu 12.10。

/var/lib/lxc/mycontainer/config 的内容是:


lxc.utsname = mycontainer
lxc.mount = /var/lib/lxc/test/fstab
lxc.rootfs = /var/lib/lxc/test/rootfs


lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.network.veth.pair = …
Run Code Online (Sandbox Code Playgroud)

networking iptables bridge lxc

8
推荐指数
1
解决办法
3万
查看次数

用于短期私有 VM 的技术

我正在尝试构建一个系统,该系统将运行短期(CI 和测试版本)的软件组件,根据我的要求,每个组件都位于私人主机上是强制性的。我将这个定义也包含在半虚拟化选项中,因为它似乎可以让我省去很多麻烦。

我在 Mac 上工作,所以几乎所有技术都已淘汰,libvirtquemu等对我不起作用。然而,我计划部署到 Debian;所以在 Debian 上运行的任何东西都回到了桌面上,前提是我可以编写主机及其来宾域的配置脚本。

我的预期设置是我可以用来引导 Debian 安装程序,这意味着在启动时,机器会自动配置(Chef、Puppet、Babushka,别介意,真的) - 并且该配置的一部分应该构建一个可用于启动容器的模板 rootfs。容器本身也需要进行配置,这样当容器上来的时候,知道要做什么工作,可以做工作,然后退出。

简而言之,这是我需要的工作流程:

  1. 启动一台机器(虚拟的或其他的)并准备好开始工作。
  2. 该工作应由chef/puppet/babushka/etc安装的脚本执行
  3. 当工作开始时,应该启动一个虚拟机来完成工作。
  4. VM 应该完成工作,退出并将其资源释放给父/主机。(重要的是,这可以在合理的硬件上扩展到至少数百个来宾 VM)

我已经到了尝试以下的地步,并出于以下内联的原因放弃了它们:

对于主机

  1. 使用 Instalinux(LinuxCOE 支持)预种子 Debian micro ISO 映像(坏: 根本不起作用(“未找到内核模块”(因为 Instalinux 映像与 FTP 存储库不同步,显然该解决方案非常脆弱,它也不允许安装后有太多空间,并将已知的 SSH 密钥、主机密钥等放到机器上,这似乎是一发不可收拾,最后我有一台正在运行的机器,但无法访问它.)
  2. Pre-seed Debian netinst ISO(与上述相同的问题,除了至少安装通常会完成,因为 ISO 和 FTP 存储库之间没有内核差异。安装后的范围仍然有限。 绝对可靠且可重复,很容易在 Mac 或裸机上使用任何 VM 技术堆栈,可以在任何地方工作,但是我无法进行足够的后安装
  3. 构建 rootfs 的各种方法,并将其编译为可引导的硬盘映像(我能做的一点点工作非常脆弱,很难安装到真机上,并且是一个复杂的构建过程。 好: 如果我可以让它工作,这似乎为使用 ssh 密钥、主机密钥、主机名、从 Git 安装的软件以及其他任何东西将机器预配置为给定规范提供了最大的范围,但问题是如何打包它用于分发,或者如何编写它的娱乐脚本。

老实说,我不确定人们应该使用什么技术来将虚拟机从一无所有变成一个运行、工作和有用的系统。对我来说似乎是三个步骤 …

virtualization debian provisioning libvirt lxc

8
推荐指数
1
解决办法
460
查看次数

在 LVM 上的主机和 LXC 容器之间传输文件的简单方法

对于共享相同文件系统的容器,这是一项简单的任务,但我不确定使用 LVM 磁盘的容器的正确方法是什么。

我知道我可以使用rsyncscp,但我想知道是否有可能做到这一点,没有设置ssh/ ftp/http服务器。此外,能够在不修改容器配置的情况下传输文件会很好,因为它需要重新启动容器。避免永久挂载共享文件夹是个好主意,因为这可能会带来潜在的安全风险(应该可以使用简单的挂载/卸载选项)。

我想到的一个选项是在主机上使用 WebDAV 服务器并将其安装在容器中,但我还没有分析它,我不确定它可能带来的性能损失。我认为的其他选项是在主机上安装 LVM 分区,但我不确定这是否安全。

更新

在我的配置中,我使用以下命令创建容器:

lxc-create -t ubuntu -n "${NAME}" -B lvm --vgname lxc-vg --fssize "${SIZE}"
Run Code Online (Sandbox Code Playgroud)

除了自动启动功能外,我使用的是默认配置,该功能是通过将以下几行添加到/var/lib/lxc/${NAME}/config文件中实现的:

lxc.start.auto = 1
lxc.start.delay = 0
Run Code Online (Sandbox Code Playgroud)

lvm file-transfer lxc

8
推荐指数
3
解决办法
4万
查看次数