我安装了lxd
使用 Linux 容器。出于某种原因,我一直使用lxc
命令来安装和启动容器。由于lxd
似乎接近,lxc
也许有原因(但不清楚)。
我想将两个lxc
容器绑定到两个不同的网桥,不同于默认lxcbr0
网桥。我创建了它们br1
并br2
赋予了它们 IP 地址。它们工作正常,可以 ping 通。
我现在正试图找到应该更改容器(cont1
和cont2
)配置的地方,以便将它们eth0
(每个客户的接口名称可以保持相同)分别绑定到br1
和br2
。
这文档指出
然后,在容器配置文件中指定主机的网桥来代替 lxcbr0,例如
这个配置文件在哪里?
在此文档页面的顶部,有关于 con图形文件:
LXC 会参考以下配置文件。对于特权使用,它们位于 /etc/lxc 下,而对于非特权使用,它们位于 ~/.config/lxc 下。
lxc.conf 可以选择为几个 lxc 设置指定备用值,包括 lxcpath、默认配置、要使用的 cgroup、cgroup 创建模式以及 lvm 和 zfs 的存储后端设置。
default.conf 指定每个新创建的容器应包含的配置。这通常至少包含一个网络部分,对于非特权用户,还包含一个 ID 映射部分
lxc-usernet.conf 指定非特权用户如何将其容器连接到主机拥有的网络。
lxc.conf 和 default.conf 都位于 /etc/lxc 和 $HOME/.config/lxc 下,而 lxc-usernet.conf 仅限于主机范围。
默认情况下,对于 root 用户,容器位于 /var/lib/lxc 下,否则位于 $HOME/.local/share/lxc 下。可以使用“-P|--lxcpath”参数为所有 lxc 命令指定位置。
如果我没看错的话,它并没有表明容器配置文件是。
我想添加的配置cont1
是
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br1
lxc.network.name = eth0
lxc.network.ipv4 = 10.10.11.0/24
lxc.network.ipv4.gateway = 10.10.11.11
我尝试将其放入文件中/etc/lxc/cont1/config
,/var/lib/lxc/cont1/config
但均未得到考虑:容器未启动,无法启动网络。使用默认配置即可正常运行lxcbr0
。
答案1
有点晚了,但万一其他人 - 就像我一样 - 正在寻找这个“显而易见”的问题的答案:
特权容器的配置文件似乎位于/var/lib/lxc/${containerName}/config
。
答案2
将 LXC 容器的配置文件放在任意位置,然后在使用 -f 选项创建容器时指定此文件:
lxc-create {-n name} [-f config_file] {-t template} [-B backingstore] [-- template-options]
例如:
sudo lxc-create -t download -f /any/path/u1.container.conf -n u1 -- -d ubuntu -r xenial -a amd64