我编写了一些脚本来管理 LXC 容器,假设我已连接到控制台,我可以通过 ifconfig 获取它们的 IP 地址。
我现在想通过 ssh 连接到这些容器。如何以可以编写脚本的方式获取他们的 IP 地址?我也不想手动设置地址(但我会这样做,如果这是唯一的选择)。
到目前为止,我已经尝试过使用lxc-start,但是在我运行之前机器没有 IP 地址/sbin/init。
Oli*_*Oli 10
鉴于 Ubuntu 似乎不支持在容器中运行的东西,我的下一个最佳建议是查看dnsmasq分发的 IP 地址租约。这真的很简单:
$ cat /var/lib/misc/dnsmasq.leases
1363699477 00:16:3e:4a:ce:a4 10.0.3.83 containername *
Run Code Online (Sandbox Code Playgroud)
只有两部分是有用的,所以我们可以更好地格式化它:
$ awk '{ print $4,$3 }' /var/lib/misc/dnsmasq.leases | column -t
containername 10.0.3.83
Run Code Online (Sandbox Code Playgroud)
小智 10
现在最简单的方法是:
lxc-info -n container-name -iH
Run Code Online (Sandbox Code Playgroud)
这将返回没有其他文本的 IP 地址。
该-i选项指定应返回 IP 地址,并且该-H选项禁用人类可读的输出,即标签。有关更多信息,请参阅 lxc-info手册页。
编辑较新版本的 LXC:
lxc info container-name
然后你会得到详细的信息。查看“Ips:”块,它应该如下所示。10.121.48.241在这种情况下,您可能会获取第一个 IPv4 地址 ( ):
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
Run Code Online (Sandbox Code Playgroud)
从技术上讲,您应该能够lxc-attach在命令中使用连接和触发(并处理输出),如下所示:
sudo lxc-attach --name containername -- ifconfig
Run Code Online (Sandbox Code Playgroud)
这需要容器正在运行。
注意:我无法让它工作。我安装了 LXC 并尝试了这个,但只是看到了大量的命名空间错误、丢失的文件和其他废话。但我对 LXC 的唯一体验是我在这个问题上花费的 10 分钟。它可能会起作用。可能不会。祝你好运!
这适用于 Ubuntu 14.04:
lxc-info -n $name -i
Run Code Online (Sandbox Code Playgroud)
如果您只想要 IP 地址(对脚本有用),(感谢 @JulianHlam):
lxc-info -n $name -iH
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
25848 次 |
| 最近记录: |