Docker使用桥接的通信方案
2015-10-30 wcdjDocker提供了四种网络通信方式,每种方式的特点可以参考:https://docs.docker.com/articles/networking/(1) bridge, NAT (default)(2) host(3) container(4) noneDocker默认使用bridge方式,网络拓扑如下:b
·
2015-10-30 wcdj
Docker提供了四种网络通信方式,每种方式的特点可以参考:https://docs.docker.com/articles/networking/
(1) bridge, NAT (default)
(2) host
(3) container
(4) none
Docker默认使用bridge方式,网络拓扑如下:
bridge模式
优点:网络配置简单
缺点:由于安全(入侵追溯难度大)的考虑,很多公司禁止使用NAT通信方式,同时网络性能方面的损耗也是一方面。
host
模式
优点:容器网络配置简单
缺点:容器与宿主机共用一个网络栈,缺乏安全性
# docker run -it -v /root/gerryyang/bin:/gerry --net=none tlinux-sles10sp2-64bit-1.0.13.20150610.sqfs /bin/bash
container模式
暂时没有使用
none 模式
暂时没有使用
none 模式
优点:自定义网络配置,相对灵活
缺点:网络配置复杂,需要自动化,IP持久化
# dockerrun -it -v /root/gerryyang/bin:/gerry--net=none tlinux-sles10sp2-64bit-1.0.13.20150610.sqfs /bin/bash
网络方案:使用桥接模式,将Docker容器网络配置到本地主机网络的网段中。以实现节点之间、各节点与宿主机以及跨主机之间的通信。
原理:将宿主机的网卡桥接到虚拟网桥中,再给Docker容器分配一个本地局域网IP(二层通信)。
网络拓扑:
但是,此方案同样存在一些问题:
1,容器占用主机网络的IP地址,私有IP地址可能不够用;
2,大量容器可能引起广播风暴,导致主机所在网络性能的下降;
3,容器连接在主机网络中可能引起安全问题;
网络配置命令:
brctl addbr br0
ip link set br0 up
ip addr add 172.27.208.238/25 dev br0; \
ip addr del 172.27.208.238/25 dev eth1; \
brctl addif br0 eth1; \
ip route del default; \
ip route add default via 172.27.208.129 dev br0
pid=$(docker inspect --format '{{.State.Pid}}' test1)
mkdir -p /var/run/netns
ln -s /proc/$pid/ns/net /var/run/netns/$pid
ip link add veth-a type veth peer name veth-b
brctl addif br0 veth-a
ip link set veth-a up
ip link set veth-b netns $pid
ip netns exec $pid ip link set dev veth-b name eth0
ip netns exec $pid ip link set eth0 up
ip netns exec $pid ip addr add 172.27.208.135/25 dev eth0
ip netns exec $pid ip route add default via 172.27.208.129
更多推荐
已为社区贡献4条内容
所有评论(0)