Docker 容器使用宿主机同网段IP

依赖包

net-tools iproute2 bridge-utils git curl

权限

需要在 root 下执行

脚本

dnet.sh j脚本内容

#like br0 要创建的桥接设备名
BRNAME=$1
#like eth0 要矫健的网络接口名
IFNAME=$2
#192.168.1.2/24 当前主机IP
LOCALIP=$3
#192.168.1.1 当前主机网关
GWIP=$4
# 注意如果此脚本出错会导致主机离线,无法进行网络访问,请做好应急预案
yum install -y net-tools iproute2  bridge-utils git
git clone https://github.com/jpetazzo/pipework
cp pipework/pipework /usr/local/bin/
(ip link add dev "$BRNAME" type bridge > /dev/null 2>&1) || (brctl addbr "$BRNAME")
ip link set "$BRNAME" up
ip addr add $LOCALIP dev $BRNAME; \
ip addr del $LOCALIP dev $IFNAME; \
brctl addif $BRNAME $IFNAME; \
ip route del default; \
ip route add default via $GWIP dev $BRNAME
  • 实例
sh dnet.sh br0 eth0 192.168.1.2/24 192.168.1.1

创建一个测试用容器

docker run -itd --name testweb1 nginx

为创建好的容器分配主机同网段IP

pipework br0 testweb1 192.168.1.3/[email protected]

验证是否成功

在任意同网段主机内执行都可成功访问

ping 192.168.1.3
curl http://192.168.1.3

你可能感兴趣的:(Docker 容器使用宿主机同网段IP)