您可能想先阅读简单的路由概念或子网和路由
如果网关不在子网中,如何创建macvlan docker网络?
网关地址必须与接口在同一子网中。要使用此新子网,您将需要用完一个IP地址并将其分配在主机上的某个位置作为网关。
子网路由到网桥网络。
从主机屏幕快照中,已将88.99.114.16/28子网设置为通过主机88.99.102.103进行路由。如果希望Docker使用子网中的其余IP地址,则需要在主机上的某个位置创建一个接口用作网关。
创建一个供Docker使用的网桥网络,该网桥将被分配网关地址88.99.114.17
docker network create --driver=bridge --subnet 88.99.114.16/28 --gateway=88.99.114.17 name0
您可能还需要启用IP转发才能使路由正常工作。在
/etc/sysctl.conf以下位置配置IP转发:
net.ipv4.ip_forward = 1
并应用新设置
sysctl -p /etc/sysctl.conf
然后使用路由网络在新桥上运行容器,应该能够访问网关和互联网
docker run --net=name0 --rm busybox sh -c "ip ad sh && ping -c 4 88.99.114.17 && wget api.ipify.org"
您可能需要允许访问iptables中的子网,具体取决于您的默认
FORWARD策略。
iptables -I DOCKER -d 88.99.114.16/28 -j ACCEPT
可以从外部访问子网中的服务
docker run --net=name0 busybox nc -lp 80 -e echo -e "HTTP/1.0 200 OKnContent-Length: 3nnHin"
然后在外面
○→ ping -c 2 88.99.114.18PING 88.99.114.18 (88.99.114.18): 56 data bytes64 bytes from 88.99.114.18: icmp_seq=0 ttl=63 time=0.527 ms64 bytes from 88.99.114.18: icmp_seq=1 ttl=63 time=0.417 ms--- 88.99.114.18 ping statistics ---2 packets transmitted, 2 packets received, 0.0% packet lossround-trip min/avg/max/stddev = 0.417/0.472/0.527/0.055 ms○→ curl 88.99.114.18Hi
不需要macvlan接口映射。
当我只有IP地址但没有mac地址时,如何使用macvlan网络运行容器?
macvlan用于将物理/主机接口映射到容器中。由于您没有这些地址的物理接口,因此很难将其映射到容器中。



