我正在尝试在 OpenVZ 中托管的 VPN 上运行 LXC,我尝试过使用多种图像风格 ubuntu 来执行此操作。centos,debian ......没有运气。LXC 安装正确,但是由于网络原因容器无法启动,这似乎与接口的桥接有关!
有没有人遇到过类似的问题?有谁知道这是否是 OpenVZ 的限制?
从全新的 ubuntu 14.04 安装开始:
sudo apt-get update
sudo apt-get install lxc
sudo lxc-create -n p1 -t ubuntu
sudo lxc-start -n p1 --logfile log.txt
cat log.txt
lxc-start 1434379565.265 ERROR lxc_conf - conf.c:instantiate_veth:2949 - failed to create veth pair (vethP4LPC8 and vethO6MP73): Operation not supported
lxc-start 1434379565.265 ERROR lxc_conf - conf.c:lxc_create_network:3261 - failed to create netdev
lxc-start 1434379565.265 ERROR lxc_start - start.c:lxc_spawn:826 - failed to create the network
lxc-start 1434379565.265 ERROR lxc_start - start.c:__lxc_start:1080 - failed to spawn 'p1'
lxc-start 1434379565.265 ERROR lxc_start_ui - lxc_start.c:main:342 - The container failed to start.
lxc-start 1434379565.265 ERROR lxc_start_ui - lxc_start.c:main:346 - Additional information can be obtained by setting the --logfile and --logpriority options.
并尝试:
sudo brctl addbr lxcbr0
add bridge failed: Invalid argument
OpenVZ 是一种操作系统虚拟化技术,与 LXC 和 Docker 一样,但基于各种内核补丁,许多从未与主流内核集成。
OpenVZ 基于旧内核(2.6.x),现在不需要很多东西来管理容器(主要是 cgroups)。不幸的是,您不能在 OpenVZ 虚拟环境中运行 LXC 容器。
不要减少其他答案(因为他们正确地声明 OpenVZ 容器是容器),而是看到这个有趣的链接: OVZ CT 中的 Docker(“自从 OpenVZ 内核 042stab105.4 以来,可以在容器中运行 Docker。这篇文章描述了如何。” )
它可能会或可能不会为您的问题提供一些解决方案,但理论上可以在 CT 中使用 cgroups(在比042stab105.4更新的内核上并使用相当新的vzctl)。基本上你需要:
lxc-checkconfig
,或CONFIG=/boot/config-2.6.32-openvz-042stab108.2-amd64 lxc-checkconfig
用于安装的任何内核。如果看起来没问题,您可以继续前进,并且:
vzctl set $veid --save --features bridge:on --netif_add eth0 --netfilter full --devnodes net/tun:rw
并在 CT 中挂载自定义 cgroup:
这确实是一个有趣的结构,但 ovz 控件和 cgroup 并非天生不兼容(许多 cgroup 功能是空的存根函数,例如,什么都不做,但不会发出错误消息)。
免责声明:我还没有尝试过(我的内核缺少 cgroup 命名空间)。
另一个有用的链接是这个 Docker 问题跟踪器评论,关于如何用所需的特性编译你的 OVZ 内核。