如何设置标准LXC容器的DHCP IP?

在主机上创build一些容器时,例如:

sudo lxc-create -n container1 -t ubuntu sudo lxc-create -n container2 -t ubuntu 

LXC系统为新的子网上的主机创buildIP地址,例如

 lxc-ls --fancy NAME STATE IPV4 IPV6 AUTOSTART ---------------------------------------------------- container1 RUNNING 10.0.3.143 - NO container2 RUNNING 10.0.3.12 - NO 

问题是,分配这些地址的DHCP服务在哪里,我们如何根据服务器名称或MAC地址分配固定IP?

我们尝试编辑/etc/lxc/default.conf并添加:

  dhcp-host=container1,10.0.3.10 dhcp-host=container2,10.0.3.20 

然后停止并启动容器,并执行sudo service lxc-net restart但这没有效果。 我可以在每个容器上编辑/etc/network/interfaces ,并且硬编码一个IP而不是使用DHCP,但是我宁愿控制它。

有没有办法做到这一点?

好的,find了另一种方法来做到这一点:

  1. 停止所有容器
  2. 编辑/ etc / default / lxc-net
  3. 取消注释“LXC_DHCP_CONFILE = / etc / lxc / dnsmasq.conf”
  4. 创build文件/etc/lxc/dnsmasq.conf
  5. 编辑dnsmasq.conf:

    DHCP主机= CONTAINER_NAME,10.0.2.10

  6. 服务lxc-net重新启动

现在重新启动容器,并为自己的IP提供荣耀。

– 编辑 –

说得太快 – 这只有一半的作品。

有4个容器,在dnsmasq.conf中我有:

 dhcp-host=host01,10.0.2.10 dhcp-host=host02,10.0.2.20 dhcp-host=host03,10.0.2.30 dhcp-host=host04,10.0.2.40 

现在,当我重新启动包括容器在内,我得到这个:

 # lxc-ls --fancy NAME STATE IPV4 IPV6 AUTOSTART ----------------------------------------------- host01 RUNNING 10.0.2.99 - YES host02 RUNNING 10.0.2.20 - YES host03 RUNNING 10.0.2.198 - YES host04 RUNNING 10.0.2.40 - YES 

它有一半是正确的。 我们用相同的方式创build的所有容器,并没有以任何方式编辑。

任何人有什么想法是怎么回事?

这是一个有问题的容器上的/ etc / network / interfaces的内容:

 auto lo iface lo inet loopback auto eth0 iface eth0 inet dhcp 

没有什么不同的工作。

– 编辑2 —

停止所有的容器,然后运行这个:

 $ sudo restart lxc-net 

修正了这个问题!