如何创建LXC的多个桥?

Posted

技术标签:

【中文标题】如何创建LXC的多个桥?【英文标题】:how to create multiple bridges of LXC? 【发布时间】:2015-02-23 12:45:34 【问题描述】:

现在,安装 LXC 后,您只有一个默认网桥“lxcbr0”,用于将容器连接到主机。所以通过这种方式,我们可以创建多个容器,并将它们全部连接到网桥“lxcbr0”。我的问题是: 我可以创建两个网桥“lxcbr0”和“lxcbr1”,这样我就可以将多个容器分成两个子网,一个连接到“lxcbr0”,另一个连接到“lxcbr1”?

节日快乐! 谢谢。 德里克

【问题讨论】:

【参考方案1】:

这是将 lxcbr1 添加到 eth2 的 bash 代码

main.sh:

#!/bin/bash
BRCTL_BIN="/sbin/brctl"
IP_BIN="/sbin/ip"

# variable
brName=lxcbr1
brDev=eth2
# function: add bridge
# 
function  addBr() 
local brName=$1
local brDev=$2 || ""
if [ -d /sys/class/net/$brName ]; then
  # bridge exists
  return
else
 $BRCTL_BIN addbr $brName
 $BRCTL_BIN setfd $brName 0
 $BRCTL_BIN sethello $brName 5
 $IP_BIN link set dev $brName up
 if [ "$brDevx" != "x" ]; then
     $BRCTL_BIN addif $brName $brDev
     $IP_BIN link set dev $brDev up
 fi
fi



# add lxcbr1
addBr $brName $brDev 

# it's simple example 
#  without bash variable
# add lxcbr1 and lxcbr3

addBr lxcbr1 eth1
addBr lxcbr3 eth3

现在您可以将 lxc 容器作为 eth11 连接到 lxcbr1

lxc.network.type = veth
lxc.network.flags = up
lxc.network.mtu = 1500
lxc.network.link = lxcbr1
lxc.network.ipv4 = 192.168.0.11/24
lxc.network.name = eth11
lxc.network.veth.pair = veth11.1

【讨论】:

看起来很有趣。你能评论你的代码吗?

以上是关于如何创建LXC的多个桥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在Ubuntu上创建及管理LXC容器

如何使用RHEL/CentOS 7安装创建和管理LXC

如何理解LXC与Docker之间的主要区别

如何将文件添加到已创建的桥接头中?

Proxmox VE LXC容器上运行Docker

“lxd”与 lxc/docker 有何不同?