目录
一、docker的网络模式
Ⅰ、相关命令
1.查看
docker network ls
docker network ls --no-trunc
显示完整的网络ID
docker network ls --filter driver=bridge
过滤显示特定网络
类似的还有 :匹配ID
docker network ls --filter id=c2057140d512d3365c463be95ac63b2ca1279d4a6bbb653e228c0a04fbe9b8ef
docker network ls --format "{
{.ID}}: {
{.Driver}}"
用特定的格式输出docker network的信息:如上面的ID:Driver
2.创建
docker network create ***
默认为bridge
3.删除
docker network rm ***
Ⅱ、网络模式
1.Bridge模式
一对一
此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及iptables nat表配置与宿主之间的关联
当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中
从docker0子网中分配一个IP给容器使用,并设置docker0的IP地址为容器的默认网关。在主机上创建一对虚拟网卡veth pair设备,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。被分配的IP从docker0为首向后递增,容器的生命周期相对来说是短的,当一个容器退出时,其被分配的IP会被释放给下一个容器使用;所以之后必须要对服务进行规划,让容器互相根据服务名查找,而不是通过IP。
bridge模式是docker的默认网络模式,不写–net参数,就是bridge模式。使用docker run -p时,docker实际是在iptables做了DNAT规则,实现端口转发功能。可以使用iptables -t nat -vnL查看
2.Container模式
用别人已有的
创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围(端口不能一致),只有一个容器有自己的网卡,出去还是docker0进行通讯
有点像各个服务放在同一个宿主机上面这种情况
这个模式指定新创建的容器和已经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。同样,