我正在使用 LXC 容器,并将 CONTAINERNAME.lxd 解析为指定容器的 IP,使用:
sudo resolvectl dns lxdbr0 $bridge_ip
sudo resolvectl domain lxdbr0 '~lxd'
这很好用!但是这些更改不会在主机重新启动后持续存在。
(我已经将“我尝试过的事情”描述为这个问题的答案,它们取得了不同程度的成功。)
我在 Pop!_OS 22.04 上,它基于 Ubuntu 22.04。
我应该如何使这些 resolvectl 更改在重新启动后持续存在?
LXD 文档描述了一个解决方案:
把它放在 /etc/systemd/system/lxd-dns-lxdbr0.service 中:
(替换您自己的 BRIDGEIP,来自
lxc network show lxdbr0 | grep ipv4.address
)然后应用这些设置而无需使用以下命令重新启动:
我已经破解了一个可怕的解决方法:创建了一个脚本
lxc-ip
,从lxc list
. 使用示例:ping $(lxc-ip mycontainer)
.脚本如下所示:
如果有人可以改进或确认,一位同事报告说他已经使用某种机制解决了这个问题,该机制涉及以下文本
/etc/systemd/network/lxd.network
:(替换您自己的 BRIDGEIP,来自
lxc network show lxdbr0 | grep ipv4.address
)(这可能还需要同时运行 systemd-networkd 和 NetworkManager)
我看到了一个类似的 askubuntu.com 问题,其中唯一的 (-1) 答案建议通过将其他 resolvectl 更改转换为 nmcli(网络管理器 CLI)调用来保留它们。这显然将信息存储在某个地方,用于在启动时填充“resolvectl”配置。
如果我这样做,我想我可以看到我将如何转换我的第一个 resolvectl 调用,使用类似的东西:
但我无法将我的第二个 resolvectl 调用(设置“domain=~lxd”)转换为 nmcli 命令。
所以这种方法并不能解决问题。