我正在尝试在 lxd 容器中设置静态 IP 地址。该容器由以下组件构成:
nonroot $ lxc 启动镜像:centos/7/amd64 my_centos
在一个相当标准的 lxd 环境中(只是默认的 apt-get install lxd;service lxd start)。现在我想给它一个静态 IP 10.0.3.50(比如说)。
经过一番谷歌搜索(为什么网站上的文档中没有明确说明这一点,我目前还不清楚),我发现个人资料信息位于 sqlite 数据库中,我必须破解它才能完成此操作。好的:
lxc profile copy default my_centos
lxc profile edit my_centos
...
name: my_centos
config: {}
description: ""
devices:
eth0:
name: eth0
nictype: bridged
parent: lxcbr0
type: nic
并且它不允许我将其更改为:
name: my_centos
config:
raw.lxc:
lxc.network.type = veth
lxc.network.name = eth0
lxc.network.link = lxcbr0
lxc.network.ipv4 = 10.0.3.50/24
lxc.network.ipv4.gateway = 10.0.3.1
lxc.network.flags = up
description: ""
devices:
eth0:
name: eth0
nictype: bridged
parent: lxcbr0
type: nic
错误是:配置解析错误:只允许特定于接口的 ipv4/ipv6 lxc.network 密钥
这可能与 nictype 和 eth0 的类型有关,但移除该设备具有相同的效果。
有人能告诉我正确的方法吗?
这有点与LXD 容器和具有静态 IP 的网络,但我想用 lxd 来设置它(因此,使用配置文件而不是配置文件)。
答案1
我遇到了类似的问题,我想要具有静态 IP 的容器,并希望它们在我的本地网络上可见。
还没有弄清楚如何通过 lxd 配置文件来实现。但下面是创建具有静态 IP 的单个容器的步骤。然后,您可以编写一个脚本来克隆容器并在 /etc/network/interfaces 文件中简单地更改其 IP,从而实际上使您能够创建具有静态 IP 的容器。
步骤如下:
在主机上创建桥接器。
编辑:/etc/network/interfaces
# The loopback network interface
auto lo
iface lo inet loopback
# The primary network interface
#auto eth0
#iface eth0 inet dhcp
auto br0
iface br0 inet static
address 172.16.115.208
broadcast 172.16.119.255
netmask 255.255.248.0
gateway 172.16.112.1
bridge_ports eth0
bridge_fd 9
bridge_hello 2
bridge_maxage 12
bridge_stp off
用您的值替换 IP 地址。
请注意“bridge_ports”将您的 eth0 添加到网桥。
重启网络:
sudo /etc/init.d/networking restart
建立新的桥梁:
sudo ifup br0
此时您应该确保是否仍然可以通过新创建的网桥建立网络连接。
编辑您的 lxc 配置文件并将父级设置为新创建的桥。
lxc profile edit default<or your container's profile name>
- parent: lxcbr0
+ parent: br0
访问容器并设置静态IP地址。
lxc exec my-container-name /bin/bash
sudo vim /etc/network/interfaces
#auto eth0
#iface eth0 inet dhcp
auto eth0
iface eth0 inet static
address 172.16.115.252
broadcast 172.16.119.255
netmask 255.255.248.0
gateway 172.16.112.1
再次相应地更改 IP 地址。重新启动容器并检查是否已分配新 IP。
lxc info my-container-name
您的容器现在具有静态 IP,并且在网络上可见。您现在可以编写一个脚本来克隆它并更改接口文件中的 IP 值,以获取具有不同静态 IP 的多个容器。
答案2
您可以通过添加外部 dnsmasq 配置文件让 lxd-bridge 分配静态 IP 地址。
打开 /etc/default/lxd-bridge 你会找到一个添加它的位置。
LXD_CONFILE=""
在那里插入一个文件名。例如 lxd_dnsmasq.conf。您可以随意命名。
然后创建文件并为每个容器添加这样的条目。
dhcp-host=容器名称,ip地址
以下是有关设置的详细说明的链接: lxd 静态 ip 地址