none 和 host 网络的适用场景
Docker 安装时会自动在 host 上创建三个网络,我们可用
$ docker network ls
命令查看:
none网络
none网络就是没有什么网络,容器创建时,可以通过 --network=none 指定使用 none 网络。
虽然none网络是一个封闭的网络,但是其可以使用在某些安全性要求较高但是不需要联网的场景,例如某个容器的唯一用途是生成随机密码,就可以放到 none 网络中避免密码被窃取。
host网络
连接到 host 网络的容器共享 Docker host 的网络栈,容器的网络配置与 host 完全一样。可以通过
$ --network=host
指定使用 host 网络。
直接使用 host 网路最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择 host 网络。当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host 上已经使用的端口就不能再用了。
bridge 网络
Docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定–network,创建的容器默认都会挂到 docker0 上。
bridge 网络配置的 subnet 就是 172.17.0.0/16,并且 docker0 就是网关(172.17.0.1),每run一次,如果不指定 netstate,就会给这个容器在 docker0 上分配一个接口(veth28c57df,或者说是虚拟网桥),当然这个容器上也会有一个接口,这个接口和veth28c57df是成对存在的。