如何在LXD下使用dnsmasq映射静态IP地址(Linux容器)

时间:2020-01-09 10:41:23  来源:igfitidea点击:

我正在使用LXD(Linux容器)托管基于Apache,MySQL,Perl和PHP的应用程序。
如何将固定IP地址分配或映射到我的MySQL容器。
如何允许dnsmasq DHCP服务器根据名称或MAC地址为LXD容器分配静态IP地址?
您可以为DHCP服务器设置每个主机/容器参数。
可以始终为LXD机器(VM)提供相同的主机名,IP地址和租用时间。
例如,您可以告诉dnsmasq始终为VM msyqldb1提供IP地址192.168.1.100。

如何始终为名为db的LXD VM /计算机分配IP地址10.147.164.3?

您的dnsmasq DHCP服务器可以读取包含每行一台主机的信息的文件。
默认文件名为/var/lib/lxd/networks/lxdbr0/dnsmasq.hosts。
行的格式如下:

{ipaddr},{hostname}

或者

{macadd},{ipaddr},{hostname}

在此文件中存储DHCP主机信息的优点是,当dnsmasq收到SIGHUP时将重新读取该文件时,可以在不重新启动dnsmasq服务器的情况下进行更改。
编辑/var/lib/lxd/networks/lxdbr0/dnsmasq.hosts文件,执行:

$ sudo vi /var/lib/lxd/networks/lxdbr0/dnsmasq.hosts

示例配置:

# always set IP to 10.147.164.2 for apache1 vm
10.147.164.2,apache1
# always set IP to 10.147.164.3 for db1 vm having mac addr 00:16:ee:62:ff:90
00:16:ee:62:ff:90,10.147.164.3,db1

保存并关闭文件。
使用killall命令将SIGHUP发送到dnsmasq,如下所示:

$ sudo killall -SIGHUP dnsmasq

现在,您可以启动lxd vm或重新启动已经运行的lxd vm:

$ lxc restart db1
$ lxc start db1

验证新的IP地址:

$ lxc list
$ lxc info db1