6.4。 联网
默认情况下,LXC 为每个容器创建一个私有网络命名空间,其中包括一个第 2 层网络堆栈。 容器通常通过将物理 NIC 或 veth 隧道端点传递到容器中来连接到外部世界。 LXC 在主机启动时创建一个 NATed 网桥 lxcbr0。 使用默认配置创建的容器将有一个 veth NIC,远程端插入 lxcbr0 网桥。 一个 NIC 一次只能存在于一个命名空间中,因此传递到容器中的物理 NIC 在主机上是不可用的。
可以在没有私有网络命名空间的情况下创建容器。 在这种情况下,容器将可以像任何其他应用程序一样访问主机网络。 请注意,如果
容器正在运行一个新贵的发行版,比如 Ubuntu,因为与 init 对话的程序,比如 关闭, 将通过抽象的 Unix 域套接字与主机的新贵对话,并关闭主机。
要根据域名为 lxcbr0 上的容器提供一个持久的 IP 地址,您可以将条目写入 /etc/lxc/dnsmasq.conf 喜欢:
dhcp-主机=lxcmail,10.0.3.100 dhcp-主机=ttrss,10.0.3.101
如果希望容器可公开访问,有几种方法可以实现。 一种是用
例如,iptables 将主机端口转发到容器
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 587 -j DNAT \
--到目的地 10.0.3.100:587
另一个是桥接主机的网络接口(参见 Ubuntu 服务器指南的网络配置章节,第 1.4 节,“桥接”[p. 46])。 然后,在容器配置文件中指定主机的网桥代替 lxcbr0,例如
lxc.network.type = veth lxc.network.link = br0
最后,您可以要求 LXC 为容器的 NIC 使用 macvlan。 请注意,这有限制,并且根据配置可能不允许容器与主机本身对话。 因此,其他两个选项是首选和更常用的。
有几种方法可以确定容器的 IP 地址。 首先,您可以使用 lxc-ls--花式 它将打印所有正在运行的容器的 IP 地址,或 lxc-信息 -i -H -n C1 这将打印 C1 的 IP 地址。 如果主机上安装了 dnsmasq,还可以添加一个条目到 /etc/dnsmasq.conf 如下
服务器=/lxc/10.0.3.1
之后 dnsmasq 将在本地解析 C1.lxc,以便您可以执行以下操作:
ping C1 SSH C1
有关更多信息,请参阅 lxc.conf 联机帮助页以及下的示例网络配置 /usr/share/doc/lxc/examples/.