配置文件中的 lxd-type 容器静态 IP

配置文件中的 lxd-type 容器静态 IP

我正在尝试在 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 地址

相关内容