我使用以下方式设置 LXC:
lxc-create -t ubuntu -n lxcguest1
但我无法从我的 LAN 访问其上运行的任何服务,它似乎被 NAT 了。我该如何设置它才能访问它(它可能需要从我的 Linksys 路由器获取其 dhcp 地址)?
谢谢。
答案1
我自己刚刚处理过这个问题。基本上你需要设置一个桥接器并将你的网卡和容器绑定到它。这是我遵循的文章:
http://bj0z.wordpress.com/2011/08/19/howto-build-a-base-lxc-container-in-ubuntu-11-04/
听起来就像我一样,您需要“桥接”解决方案而不是 NAT 解决方案。我还关闭了默认的 LXC 桥接设置(已 NAT)。为此,只需编辑文件:/etc/default/lxc
并更改USE_LXC_BRIDGE="TRUE"
为USE_LXC_BRIDGE="FALSE"
并重新启动。
答案2
我在 Ubuntu 14.04.1 LTS (Trusty Tahr) 主机上的设置
添加到/etc/network/interfaces
主机上
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 0.0.0.0
auto br0
iface br0 inet dhcp
bridge_ports eth0
(修改后重启)
在容器配置文件中/var/lib/lxc/containername/config
我设置lxc.network.link = br0
这样,容器将像主机一样从 dhcp 服务器获取公共 IP 地址。
答案3
我使用了默认的 Ubuntu LXC 设置,并将路由器配置为将 10.0.3.xxx 上的所有流量发送到 Ubuntu 机器。在启用 DD-WRT 的路由器上,设置类似于下面的屏幕截图。替换192.168.1.137
为运行 LXC 的机器的 IP。其他路由器应该有类似的选项来设置静态路由(这里是Linksys 的静态路由说明, 例如)。
这无关紧要,但我还使用了 DNSMasq 服务将主机名指向 LXC 容器的 IP 地址。这样我就可以http://gitlab/
在网络上的任何地方访问容器。在我看来,使用主机名访问容器比记住 IP 地址要容易得多。