我是想用 PVE 整一个 DNS ,路由,网关的一体机,然后看网上的一些方案,都是先用 LXC 跑一个容器,然后在这个里面再跑一个 Docker 啥的。
有点不太明白 LXC 容器是个啥概念。
而且据说 LXC 下网卡的效率和直通类似?可以 virtio 的性能强得多?
那为啥不能在 LXC 容器下装 OpenWRT 或者爱快之类的?
1
PLDj0j9FY2y8Wm9i 237 天前
LXC 可以装 op 啊
|
2
chfight 237 天前
LXC 里面尽量不要跑 Docker
LXC 可以直接安装 OpenWRT |
6
frankilla 237 天前
我之前用 lxc 跑 docker ,然后大佬给我提醒了一下 lxc 不要跑,会遇到各种各样闹心的问题。直接建议我 debian 跑 docker ,但是跑 OpenWrt 是没问题。不过我没有用 lxc 跑 OpenWrt ,强迫症吧。
|
8
mohumohu 237 天前
PVE 就是 debian ,按 debian 的教程直接装 docker 就可以,配置简单性能最好,但隔离性不够好,见仁见智。
或者专门装个虚拟机比如 alpine 来跑 docker ,稳定性兼容性隔离性都很好。 |
9
geekvcn 237 天前
关键词 chroot
LXC LXD Docker 都是基于 Linux 内核 chroot 。优点就是能共享系统硬件资源,缺点就是内核共享没法单独配置内核参数,隔离度没有虚拟机高。 现在 KVM 之类的虚拟机纯 CPU 基本也没损耗,缺点是在内存网卡等硬件的共享上代价比较高,但是固定内存,直通网卡显卡等硬件的情况下或者有专门的硬件卸载虚拟网卡 OVS 等负载和物理机性能差距也不大。 |
10
geekvcn 237 天前
准确说 Linux namespace 接近于沙盒运行,没有硬件虚拟损耗,本质上只是隔离内核资源
|
11
geekvcn 237 天前
你可以这么理解,一个共享内核上跑着不同的 rootfs
|
12
mouyase OP |
13
Jeremial 237 天前
虽然不建议用 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, 装的黑群晖 |
14
Jeremial 237 天前
@Jeremial sata 控制器直通给了黑群晖管理硬盘, 然后 PVE 宿主机通过 cifs 挂载群晖共享目录, 再将这些目录共享给 lxc 容器中的 jellyfin, plex 等服务
|
15
ysc3839 237 天前 via Android
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 如何我不知道。 |
16
rulagiti 237 天前
介于 openvz 和 docker 之间?
|
18
Jirajine 237 天前
@ysc3839 #15 你搞错了,lxd 可不是 lxc 的升级版,它俩完全是两套对容器在不同层面的封装。
另外 lxc 命令实际上是 lxd 的 client ,lxc-*才是真的 lxc 。只能说 ubuntu 整的东西不适合除了它的目标群体以外的人。 |
19
totoro625 237 天前
lxc 跑 docker 只是第一个容器跑起来费劲,找点教程解决 docker 问题就好了
至少比 PVE 直接安装好的多,mp 挂载文件共享就很好用 我的理解是 lxc 相当于 docker ,但是更加底层,可以随意增减配置不会影响宿主机 |
20
bkmi 237 天前 via Android
我一直在 LXC 里跑 docker ,还没碰到过啥问题
|
21
wueryi 237 天前
虽然不建议 lxc 里跑 docker....但是咱这不是为了省事儿嘛,想测试个啥直接 clone 一个现成的 lxc 就能用 还不影响其他的容器 也不改动宿主机 不过如果是这个 docker 准备部署些常用的 呢不如新建个虚拟机里装 缺点就是内存是固定的
|
22
wsbqdyhm 237 天前
我也是 LXC (乌班图)里跑 docker ,还没碰到过啥问题,备份管理相当方便,有问题直接删除从来。几秒搞定
|
23
ChaosAttractor 237 天前
这些都是 Linux 的容器化技术,内核层面依赖 CGourps 实现,它可以提供在同一个内核中隔离多个用户空间进程,你可以理解为 LXC 里面的进程和外面的进程性能什么都是一样的(当然也可以限制),只是所有东西互相隔离
共享内核意味着 0 额外性能和内存开销,只有里面的进程会占用内存 而 LXC 则是管理管理 CGroups 和各种 Namespace 隔离的用户空间程序,类似的还有 ContainerD 和 LXD ,Docker 和 K8S 则基于 ContainerD 此外它们支持嵌套,所以在 LXC 中运行 Docker 并无不妥,因为 LXC 一般直接用于替代 Hypervisor 但 LXC 的网络基于内核的 NetNS ,并且因为共享内核和非特权的设计使得 eBPF 和 iptables/nftables 功能受限,而且大概率你还需要 CPU 转发(虚拟化则你可以直通网卡),各种硬件卸载功能也受限(当然如果你在用最新最热的 Mellanox 网卡那支持的还蛮好的) 一般作为路由我觉得不太合适 |
24
geekvcn 237 天前 via Android
@ChaosAttractor LXC 可以启用特权容器,直接把物理网卡资源传给容器,并不一定要用 veth 网卡
|
25
busier 236 天前
lxc 是操作系统容器
docker 是应用的容器 本质一样,定位不同 |
26
scguanzhong 235 天前
唉我用 lxc 跑 docker ,总是会遇到网络问题,重启又好了
直接虚拟机装个 ubuntu ,一点问题都没有 |
27
shao 135 天前
一直用 PVE LXC 跑 debian ,debian 跑 docker 。
直到遇到 MongoDB ,才知道 cpu 不支持 avx 。 |