当前位置: 首页>>技术教程>>正文


如何获取LXC容器的IP地址?

,

问题描述

我编写了一些脚本来管理 LXC 容器,假设我已连接到控制台,我可以通过 ifconfig 获取它们的 IP 地址。

我现在想通过 ssh 连接到这些容器。如何以可以编写脚本的方式获取他们的 IP 地址?我也不想手动设置地址(但我会这样做,如果这是唯一的选择)。

到目前为止,我已经尝试使用 lxc-start ,但在运行 /sbin/init 之前机器没有 IP 地址。

最佳回答

现在最简单的方法是:

lxc-info -n container-name -iH

这将返回 IP 地址,没有其他文本。

-i 选项指定应返回 IP 地址,-H 选项禁用人类可读的输出,即标签。有关更多信息,请参阅 lxc-info man page

编辑新版本的 LXC:

lxc info container-name

然后你会得到详细的信息。查看 “Ips:” 块,它应该如下所示。在这种情况下,您可能会获取第一个 IPv4 地址 ( 10.121.48.241 ):

Ips:
  eth0: inet    10.121.48.241   vethSBP4RR
  eth0: inet6   fda5:b9a9:f3b9:ba32:216:3eff:fe4a:4d7d  vethSBP4RR
  eth0: inet6   fe80::216:3eff:fe4a:4d7d    vethSBP4RR
  lo:   inet    127.0.0.1
  lo:   inet6   ::1

次佳回答

鉴于 Ubuntu 似乎不支持在容器中运行,我的下一个最佳建议是查看 dnsmasq 分发的 IP 地址租约。这真的很简单:

$ cat /var/lib/misc/dnsmasq.leases
1363699477 00:16:3e:4a:ce:a4 10.0.3.83 containername *

那里只有两个部分是有用的,所以我们可以更好地格式化它:

$ awk '{ print $4,$3 }' /var/lib/misc/dnsmasq.leases | column -t
containername  10.0.3.83

第三种回答

从技术上讲,您应该能够使用 lxc-attach 连接并在命令中触发(并处理输出),如下所示:

sudo lxc-attach --name containername -- ifconfig

这需要容器正在运行。

注意:我无法让它工作。我安装了 LXC 并尝试了这个,但只看到了一堆命名空间错误、丢失文件和其他废话。但我对 LXC 的唯一体验是我在这个问题上花了 10 分钟。它可能会起作用。可能不会。祝你好运!

第四种回答

这适用于 Ubuntu 14.04:

lxc-info -n $name -i

如果您只想要 IP 地址(对脚本有用),(感谢 @JulianHLam):

lxc-info -n $name -iH

第五种回答

或者查询 dnsmasq (它为容器提供 IP)

dig @10.0.3.1 $container-name +short

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/13935.html,未经允许,请勿转载。