如何设置LXC guest虚拟机以使其获得dhcp地址,以便我可以在网络上访问它?

我使用以下方法设置LXC:

lxc-create -t ubuntu -n lxcguest1 

但我无法访问从我的LAN上运行的任何服务,它似乎是NATed。 如何设置它以便我可以访问它(它可能需要从我的Linksys路由器获取它的dhcp地址)?

谢谢。

我自己刚刚处理过这个问题。 基本上,您需要设置一个桥接器并将网卡和容器绑定到它。 这是我遵循的文章:

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"并重新启动。

我在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地址。

我使用默认的Ubuntu LXC设置,并配置我的路由器将10.0.3.xxx上的所有流量发送到Ubuntu机器。 在启用DD-WRT的路由器上,设置类似于下面的屏幕截图。 将192.168.1.137替换为运行LXC的机器的IP。 其他路由器应具有类似的选项来设置静态路由(例如,这里是Linksys的静态路由指令 )。

用于静态路由到LXC的DD-WRT设置

这是无关的,但我也使用DNSMasq服务将主机名指向LXC容器的IP地址。 这样我就可以在http://gitlab/网络上的任何地方访问容器。 在我看来,使用主机名访问容器要比记住IP地址容易得多。

DD-WRT DNSMasq设置