在Linux上配置容器网络需要根据具体需求选择网络模式(如桥接、主机、Overlay等),并掌握工具链(如Docker、Podman等)。以下是详细配置指南:
Bridge(默认桥接)
docker0
)通信bash
docker run --network=bridge -it alpine
Host(主机模式)
bash
docker run --network=host -it nginx
Overlay(跨主机网络)
bash
docker swarm init
docker network create -d overlay my-overlay
Macvlan/IPvlan
bash
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my-macvlan
# 创建自定义网络
docker network create --driver=bridge --subnet=172.18.0.0/16 my-bridge
# 运行容器并指定IP
docker run --network=my-bridge --ip=172.18.0.100 -it alpine
docker run -p 8080:80 -d nginx # 主机8080映射到容器80端口
docker network ls
docker inspect <network_id>
iproute2
)查看网络命名空间
ip netns list # Docker需先创建符号链接
ls /var/run/docker/netns/
手动连接容器到网络
# 创建veth pair
ip link add veth0 type veth peer name veth1
# 将一端放入容器网络命名空间
docker inspect -f '{{.State.Pid}}' <container_id> > pid
ip link set veth1 netns $(cat pid)
安装Flannel
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Calico配置示例
kubectl create -f https://docs.projectcalico.org/manifests/calico.yaml
工具 | 用途 |
---|---|
ping |
测试基础连通性 |
dig/nslookup |
DNS解析检查 |
tcpdump |
抓包分析(例:tcpdump -i docker0 ) |
conntrack |
跟踪NAT连接 |
ss/netstat |
查看端口监听状态 |
bash
docker run --cap-drop=NET_RAW ...
yaml
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-deny
spec:
podSelector: {}
policyTypes: ["Ingress"]
通过以上配置,您可以根据场景需求构建灵活、安全的容器网络。对于生产环境,建议结合监控工具(如Prometheus+Granfana)持续观察网络性能指标。