PVE 的那个 LXC 容器是个什么概念?说是性能和物理机几乎一样?

238 天前
 mouyase

我是想用 PVE 整一个 DNS ,路由,网关的一体机,然后看网上的一些方案,都是先用 LXC 跑一个容器,然后在这个里面再跑一个 Docker 啥的。

有点不太明白 LXC 容器是个啥概念。

而且据说 LXC 下网卡的效率和直通类似?可以 virtio 的性能强得多?

那为啥不能在 LXC 容器下装 OpenWRT 或者爱快之类的?

5547 次点击
所在节点    宽带症候群
27 条回复
PLDj0j9FY2y8Wm9i
238 天前
LXC 可以装 op 啊
chfight
238 天前
LXC 里面尽量不要跑 Docker
LXC 可以直接安装 OpenWRT
mouyase
238 天前
@chfight 他这个 LXC 容器是不是就和 Docker 是类似的技术
mouyase
238 天前
@chfight 那我要跑 Docker 的话,还是先建一个虚拟机装个 Ubuntu 然后再在 Ubuntu 里装 Docker 会比较好?
chfight
238 天前
@mouyase #3 都是虚拟化的
frankilla
238 天前
我之前用 lxc 跑 docker ,然后大佬给我提醒了一下 lxc 不要跑,会遇到各种各样闹心的问题。直接建议我 debian 跑 docker ,但是跑 OpenWrt 是没问题。不过我没有用 lxc 跑 OpenWrt ,强迫症吧。
chfight
238 天前
@mouyase #4 可以宿主机直接跑 Docker ,也可以 KVM 安装 linux 再跑。
mohumohu
238 天前
PVE 就是 debian ,按 debian 的教程直接装 docker 就可以,配置简单性能最好,但隔离性不够好,见仁见智。
或者专门装个虚拟机比如 alpine 来跑 docker ,稳定性兼容性隔离性都很好。
geekvcn
238 天前
关键词 chroot
LXC LXD Docker 都是基于 Linux 内核 chroot 。优点就是能共享系统硬件资源,缺点就是内核共享没法单独配置内核参数,隔离度没有虚拟机高。

现在 KVM 之类的虚拟机纯 CPU 基本也没损耗,缺点是在内存网卡等硬件的共享上代价比较高,但是固定内存,直通网卡显卡等硬件的情况下或者有专门的硬件卸载虚拟网卡 OVS 等负载和物理机性能差距也不大。
geekvcn
238 天前
准确说 Linux namespace 接近于沙盒运行,没有硬件虚拟损耗,本质上只是隔离内核资源
geekvcn
238 天前
你可以这么理解,一个共享内核上跑着不同的 rootfs
mouyase
238 天前
@mohumohu 直接在宿主机上装感觉会污染宿主机的环境,所以不太想这么搞。
@geekvcn 说 chroot 我就有印象了,之前在安卓上也这么玩过。如果是这样可能还是在虚拟机里装 Docker 会更好一点吧,毕竟 CPU 损耗不大。不过这就明白为啥爱快不能用 LXC 了,他应该是有一些特殊的内核参数。
Jeremial
238 天前
虽然不建议用 lxc 跑 docker, 但是实际跑起来也没啥问题.
我是希望宿主机尽可能的干净, 全靠虚拟机或 lxc, 升级啥的方便.

目前已经在跑的
1. vm 1, 安装的 openwrt
2. 3 个 lxc 容器装 docker, 跑了 traefik, vaultwarden, ddns, jellyfin, plex 等服务. 显卡直通, 挂载 nfs 这些也没问题
3. 2 个 lxc 容器分别用包管理装的 tailscale 和 zerotier
4. vm 2, 装的黑群晖
Jeremial
238 天前
@Jeremial sata 控制器直通给了黑群晖管理硬盘, 然后 PVE 宿主机通过 cifs 挂载群晖共享目录, 再将这些目录共享给 lxc 容器中的 jellyfin, plex 等服务
ysc3839
238 天前
lxc 是和 Docker 类似的另一套容器平台,使用的底层接口是一样的。
但是 lxc 有专门支持容器中运行 init system ,Docker 没有,如果你要在 Docker 容器里跑 systemd 之类的,一般得手动 mount 啥进去,还要开启 privileged ,跑起来还会发现 docker stop 不能正常停止 systemd service ,只能等超时被 kill 掉,问题挺多的。
用 lxd 的话直接跑就完事了,没有那么多坑,不过跑 OpenWrt 可能还是有些小坑,例如 iptables 未初始化的问题。
另外 Docker 许多参数在跑起来后就不能改了,比如不能 mount ,但是 lxd 可以运行时 mount 。
关于 lxd 和 lxc ,前者是后者的升级版,用起来会方便很多。我自己是只在 Ubuntu 上用过 lxd ,PVE 的 lxc 如何我不知道。
rulagiti
237 天前
介于 openvz 和 docker 之间?
IvanLi127
237 天前
@chfight 在好几个 LXC 里跑了好多 docker 容器的默默路过...
Jirajine
237 天前
@ysc3839 #15 你搞错了,lxd 可不是 lxc 的升级版,它俩完全是两套对容器在不同层面的封装。
另外 lxc 命令实际上是 lxd 的 client ,lxc-*才是真的 lxc 。只能说 ubuntu 整的东西不适合除了它的目标群体以外的人。
totoro625
237 天前
lxc 跑 docker 只是第一个容器跑起来费劲,找点教程解决 docker 问题就好了
至少比 PVE 直接安装好的多,mp 挂载文件共享就很好用

我的理解是 lxc 相当于 docker ,但是更加底层,可以随意增减配置不会影响宿主机
bkmi
237 天前
我一直在 LXC 里跑 docker ,还没碰到过啥问题

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1036472

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX