参考官方文档
docker版本:
v19.03
docker的网络驱动
docker
通过驱动实现了可插拔的网络子系统。
安装Docker
时,它会自动创建三个内置的网络驱动:
bridge
:默认使用的网络驱动。此模式会为每一个容器分配IP
等,并将容器连接到一个docker0
的虚拟网桥。host
:容器不会虚拟出自己的网卡,直接使用宿主机的IP
和端口。none
:关闭了容器的网络功能。
可以通过docker network ls
查看:
docker@default:~$ docker network ls
NETWORK ID NAME DRIVER SCOPE
3968339e434d bridge bridge local
1942bf2656a7 host host local
9a43a21dd9c7 none null local
在创建容器的时候,可以通过--network
显示指定容器的网络驱动:
docker@default:~$ docker run -dit -P --name=my-redis --network=host redis
此外,docker
还提供了以下网络驱动:
overlay
:该网络驱动能够将多个Docker daemon
连接起来,实现集群间的网络通信。macvlan
:该网络驱动允许您将MAC
地址分配给容器,使其作为网络上的物理设备出现,Docker daemon
守护进程根据容器的MAC
地址将流量路由到容器。
除了以上docker
提供的网络驱动,我们还可以通过安装第三方网络驱动来扩展docker
的网络。
使用bridge网络
Docker
的bridge
网络允许连接到同一个桥接网络的容器之间可以互相通信,并且与那些不在同一个桥接网络的容器通信进行隔离。
bridge
网络适用于运行在同一个守护进程主机上面的容器。
安装Docker
后会默认创建一个docker0
桥接网络,可以通过docker container inspect bridge
查看。在创建容器的时候,如果未显示指定容器的网络,则会默认连接到这个docker0
的网络。
使用默认bridge网络
不建议生产环境中使用!
在创建容器的时候,如果不配置--network
参数,则