如何从主机获取 lxc 容器的名称?

如何从主机获取 lxc 容器的名称?

默认情况下,dns.mode 中会lxd创建桥接网络managed 。此模式的一个特点是所有容器都可以通过名称(而不仅仅是 IP 地址)相互查看。例如,从容器“ c1”中,我可以使用 向默认名称服务器查询另一个容器 c2 的 IP 地址nslookup c2

这很酷。

但它在主机上不起作用。我知道我可以查询lxc list 容器的 IP 地址,但如果我只想要一个简单的,那么这样做很麻烦ssh root@c1

当我意识到解决方案需要自定义dnsmasq为桥梁提供名称的设置时,我便想到了这一点。当我发现最佳候选设置是时,我放弃了--auth-server。那人说

配置 dnsmasq 以充当权威 DNS 服务器非常复杂,因为它涉及配置外部 DNS 服务器来提供委派。

我不想在外部 (dyn)dns 服务上注册我的家庭动态 IP 网络。我只希望容器名称在主机中可见(甚至在我的整个局域网上都可见)

答案1

添加行

server=/lxd/10.150.161.1

到你的 /etc/dnsmasq.conf 并重启 dnsmasq 服务。之后

nslookup ‹containter_name›.lxd

应该管用。

这假设您使用当前默认设置,即运行 dnsmasq 守护程序作为本地 DNS 服务器(检查您的 /etc/resolv.conf 是否将 127.0.0.x 列为名称服务器)。引用的配置行指示此名称服务器查询 10.150.161.1 以获取 .lxd 域中的地址。辅助 dnsmasq 在那里运行,它由 LXD 安装设置 — 这是您的容器所监听的。

答案2

为了能够从您的主机通过主机名访问您的容器,您需要运行以下命令:

resolvectl dns lxdbr0 [lxdbr0 IP]
resolvectl domain lxdbr0 lxd

执行以上两个命令后应该就可以正常工作了。

相关内容