<aside> 💡 Docker支持的网络配置有以下几种:

Null(--net=None)

Host

Container

Bridge(--net=bridge)

Overlay(libnetwork, libkv)

Remote(work with remote drivers)

一、Null模式

  1. Null 模式是一个空实现
  2. 可以通过 Null 模式启动容器并在宿主机上通过命令为容器配置网络。
mkdir -p /var/run/netns
find -L /var/run/netns -type l -delete
ln -s /proc/$pid/ns/net /var/run/netns/$pid
ip link add A type veth peer name B
brctl addif br0 A
ip link set A up
ip link set B netns $pid
ip netns exec $pid ip link set dev B name eth0
ip netns exec $pid ip link set eth0 up
ip netns exec $pid ip addr add
$SETIP/$SETMASK dev eth0
ip netns exec $pid ip route add default via
$GATEWAY

二、默认模式– 网桥和 NAT

为主机 eth0 分配 IP 192.168.0.101; 启动 docker daemon,查看主机 iptables; • POSTROUTING -A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE

在主机启动容器:

docker run -d --name ssh -p 2333:22 centos-ssh

Docker 会以标准模式配置网络: • 创建 veth pair; • 将 veth pair的一端连接到 docker0 网桥; • veth pair 的另外一端设置为容器名空间的 eth0; • 为容器名空间的 eth0 分配 ip; • 主机上的 Iptables 规则:PREROUTING -A DOCKER ! -i docker0 -p tcp -m tcp --dport 2333 -j DNAT --todestination 172.17.0.2:22

Untitled

三、跨主机网络访问-Underlay

Untitled