Docker使用了Linux的Namespaces技术来进行资源隔离,如PID Namespace隔离进程,Mount Namespace隔离文件系统,Network Namespace隔离网络等。一个Network Namespace提供了一份独立的网络环境,包括网卡、路由、Iptable规则等都与其他的Network Namespace隔离。
网络是Docker中相对比较薄弱的部分,当安装完Docker时,它会自动创建三个网络。可以使用以下docker network ls命令列出这些网络
docker network ls
结果如下
NETWORK ID NAME DRIVER SCOPE
594430d2d4bb bridge bridge local
d855b34c5d51 host host local
b1ecee29ed5e none null local
Docker内置这三个网络,运行容器时,可以使用该来指定容器应连接到哪些网络。
在使用docker run创建Docker容器时,可以用--network标志 选项指定容器的网络模式,Docker有以下4种网络模式:
host模式:使用 --net=host 指定。
none模式:使用 --net=none 指定。
bridge模式:使用 --net=bridge 指定,默认设置。
container模式:使用 --net=container:NAMEorID 指定。
默认的桥接模式,不同docker容器网络是不互通的。