LXC - Linux容器 - 无需重新启动即可添加新的网络接口

时间:2014-04-01 08:48:28

标签: lxc

在谷歌搜索,只有添加新网络接口的方法是添加到配置文件。是否有任何lxc命令可以添加生动,(不需要重启容器)?

该页面提到了如何添加第二个网络接口:http://box.matto.nl/lxctwonics.html

谢谢!

3 个答案:

答案 0 :(得分:16)

这在很大程度上取决于您尝试添加到容器中的界面的配置。

如果主机上有现有界面,您希望在容器内可见:

# on the host:
pid=$(lxc-info -pHn foobar)
ip link set dev eth3 netns $pid name eth1

这会导致您的主机eth3界面移至容器foobar,并重命名为eth1。这与此配置大致相同:

lxc.network.type=phys
lxc.network.link=eth3
lxc.network.name=eth1

另一个有用的方案是在容器内创建一个新接口,桥接到主机上的现有网桥:

# on the host:
pid=$(lxc-info -pHn foobar)
ip link add name veth0 type veth peer name veth0_container
brctl addif br0 veth0
ip link set dev veth0_container netns $pid name veth0

这将创建一对连接的虚拟以太网接口(veth0veth0_container),将其中一个添加到br0网桥,并将另一个移动到容器{{ 1}}。这与此配置大致相同:

foobar

答案 1 :(得分:1)

线程非常有帮助,但我必须设置创建的链接以使容器访问网络:

之前:(ip link)

$

设置链接:

11: veth0@if10: <BROADCAST,MULTICAST> mtu 1500 qdisc noop master vmbr0 state DOWN mode DEFAULT group default qlen 1000
    link/ether 42:f1:f9:5a:5c:ae brd ff:ff:ff:ff:ff:ff link-netnsid 1

之后:(ip link)

ip link set dev veth0 up

答案 2 :(得分:0)

就像@Leahkim一样,我也必须启动设备,但是还要从容器内分配一个静态IP:

ifconfig veth0 add 192.168.18.2 netmask 255.255.255.0 up

此时您可能还可以使用dhcp客户端,但这对我来说不可用。