2

这是我第一次设置 LXD 来运行多个容器。我已完成所有配置步骤,但我的容器没有从组织内运行的 DHCP 服务器获取 IP 地址。请帮帮我。

我正在使用 Bridge 接口配置文件。以下是我所做的更改:

root@DMG-LXD-TVM2:~# vi /etc/network/interfaces

auto  br0
iface br0   inet dhcp
    bridge-ports ens32
    bridge-ifaces ens32
iface ens32 inet dhcp


root@DMG-LXD-TVM2:~# lxc list
| NAME        |  STATE  |       IPV4       | IPV6 |    TYPE    | SNAPSHOTS |
| Continer1   | RUNNING |                  |      | PERSISTENT | 0         |

IP 和接口详细说明了我在我的 ubuntu 机器上设置的内容

在容器内执行 ifdown eth0 && ifup eth0 时的 Dhcp 消息

4

1 回答 1

3

这是一个较老的问题,但我决定回答它,因为我被困在同一个主题上并且解决方案并不十分明显。

如果您希望您的容器从外部设备(例如互联网路由器、公司 dhcp 服务器)获取其 ip 配置,您需要在创建时告诉它。这是通过配置参数对完成的,user.network_mode=dhcp 因为此配置在“用户”空间中,因此不是规范的,但适用于 ubuntu 16.04。详情见:https ://github.com/lxc/lxd/blob/master/doc/configuration.md

第一步:在主机上创建网桥/etc/network/interfaces

 auto br0
 iface br0 inet dhcp
    bridge_ports ens32
    bridge_stp off
    bridge_fd 0 

第 2 步:创建您自己的名为 mydhcp 的 lxd 配置文件

lxd profile create mydhcp

或通过调用重新配置您的默认 lxd 配置

sudo dpkg-reconfigure -p medium lxd

(您需要在第一个提示处选择并在第二个提示处添加,然后输入您的网桥名称)

如果您使用自己的个人资料,请对其进行编辑

lxc profile edit mydhcp

粘贴以下内容

name: mydhcp
config:
  user.network_mode: dhcp
description: Profile for creating dhcp containers
devices:
  eth0:
    name: eth0
    nictype: bridged
    parent: br0
    type: nic

(注意空格 - 这是一个 YAML 文件,空格很重要!)

第 3 步:使用您的 mydhcp 配置文件创建一个新容器

lxc launch ubuntu:16.04 mydhcpcontainer -p mydhcp -c user.network_mode=dhcp

如果您在上一步更改了默认 lxd 配置,则只需输入

lxc launch ubuntu:16.04 mydhcpcontainer -c user.network_mode=dhcp

检查新容器的 IP 地址

lxc exec mydhcpcontainer -- ifconfig
于 2016-08-23T12:38:14.257 回答