在Linux系统中实现高级容器网络配置需要理解多种网络模式和工具。以下是几种常见的配置方法和技巧:
# 创建自定义桥接网络
sudo docker network create --driver=bridge --subnet=192.168.100.0/24 \
--gateway=192.168.100.1 my-bridge-network
# 运行容器并连接到自定义网络
docker run -itd --network=my-bridge-network --name=container1 nginx
docker run -itd --network=my-bridge-network --name=container2 nginx
# 创建Macvlan网络
sudo docker network create -d macvlan \
--subnet=192.168.1.0/24 \
--gateway=192.168.1.1 \
--ip-range=192.168.1.192/27 \
-o parent=eth0 macvlan-net
# 运行容器使用Macvlan网络
docker run --network=macvlan-net --ip=192.168.1.193 -itd alpine
# 创建IPvlan L2模式网络
sudo docker network create -d ipvlan \
--subnet=192.168.210.0/24 \
--gateway=192.168.210.254 \
-o ipvlan_mode=l2 \
-o parent=eth0 ipvlan-l2
# 创建IPvlan L3模式网络
sudo docker network create -d ipvlan \
--subnet=192.168.212.0/24 \
-o ipvlan_mode=l3 ipvlan-l3
# 安装Open vSwitch
sudo apt-get install openvswitch-switch
# 创建OVS桥接
sudo ovs-vsctl add-br ovs-br0
sudo ip addr add 192.168.150.1/24 dev ovs-br0
sudo ip link set ovs-br0 up
# 创建Docker使用的OVS网络
sudo docker network create -d openvswitch --subnet=192.168.150.0/24 ovs-net
# 创建VXLAN覆盖网络
sudo docker network create -d overlay --subnet=10.0.9.0/24 my-overlay-net
# 使用iptables限制容器间通信
sudo iptables -I DOCKER-USER -i docker0 -o docker0 -j DROP
sudo iptables -I DOCKER-USER -i docker0 -o docker0 -s 172.17.0.2 -d 172.17.0.3 -j ACCEPT
# 使用nftables替代方案
sudo nft add table ip filter
sudo nft add chain ip filter input { type filter hook input priority 0 \; }
sudo nft add rule ip filter input ct state established,related accept
sudo nft add rule ip filter input iifname "docker0" drop
# 调整容器网络缓冲区大小
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216
sudo sysctl -w net.ipv4.tcp_rmem="4096 87380 16777216"
sudo sysctl -w net.ipv4.tcp_wmem="4096 65536 16777216"
# 启用TCP快速打开
sudo sysctl -w net.ipv4.tcp_fastopen=3
# 查看容器网络命名空间
sudo lsns -t net
sudo nsenter --net=/var/run/docker/netns/<namespace-id> bash
# 使用tcpdump捕获容器流量
sudo tcpdump -i any -s0 -w container-traffic.pcap port 80
这些高级配置方法可以根据您的具体需求进行组合和调整。在生产环境中实施前,建议在测试环境中验证配置。