1.网络帮助命令
docker network --help

帮助命令.png
2.应用
使用自定义网络,当容器ip变动时,可以通过服务名直接网络通信而不受ip变动影响
3.网络模式
3.1 bridge
为每一个容器分配设置ip,并将容器连接到docker0 , 默认模式
使用示例:
docker run -d --name my_container -p 8080:80 nginx

docker0.png
3.2 host
容器不会虚拟出自己的网卡、配置自己的ip,而是使用宿主机的ip和端口
使用示例:
docker run -d --name my_container --network host nginx
3.3 none
容器有独立的network namespace,但并没有对其进行任何网络设置
使用示例:
docker run -d --name my_container --network none alpine sleep 3600
3.4 container
新创建的容器不会创建自己的网卡和配置自己的ip,而是和一个指定的容器共享ip、端口范围
创建共享容器:
docker run -d --name container1 nginx
使用示例:
docker run -d --name container2 --network container:container1 alpine
3.5 overlay
跨主机的容器网络,支持多主机通信
创建网络:
docker network create -d overlay my_overlay
使用示例:
docker service create --network my_overlay --name my_service nginx
3.6 macvlan
为容器分配独立的 MAC 地址,使其像物理设备一样接入物理网络
创建网络:
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my_macvlan
使用示例:
docker run -d --name my_container --network my_macvlan nginx
3.7 ipvlan
多个容器共享同一 MAC 地址,通过不同 IP 区分
创建网络:
docker network create -d ipvlan --subnet=192.168.1.0/24 -o parent=eth0 my_ipvlanmy_macvlan
使用示例:
docker run -d --name my_container --network my_ipvlan nginx
3.8 模式对比表
| 模式 | 隔离性 | 性能 | 跨主机支持 | 典型用途 |
|---|---|---|---|---|
| bridge | 中 | 中 | ❌ | 单机容器通信 |
| host | 低 | 高 | ❌ | 高性能需求 |
| none | 高 | - | ❌ | 完全自定义网络 |
| container | 低 | 高 | ❌ | 共享同一网络(Sidecar) |
| overlay | 中 | 中 | ✅ | 集群跨节点通信 |
| macvlan | 高 | 高 | ✅ | 直接接入物理网络 |
| ipvlan | 高 | 高 | ✅ | 节省 MAC 地址资源 |
4.自定义网络
4.1 说明
自定义网络本身就维护好了主机名和ip的对应关系(ip和容器名都能ping通)
4.2 创建
docker network create network_name
4.3 使用
docker run -it --network network_name -d image_name
4.4 容器中使用
ping same_network_name other_container_name:port