docker 安装时会自动在host上创建三个网络,我们查看一下docker网络:
#docker network ls
一、none网络
none 网络就是什么都没有的网络。挂在这个网络下的容器除了 lo,没有其他任何网卡。容器创建时,可以通过 --network=none 指定使用 none 网络。
none 网络的应用
封闭的网络意味着隔离,一些对安全性要求高并且不需要联网的应用可以使用none 网络。比如某个容器的唯一用途是生成随机密码,就可以放到 none 网络中避免密码被窃
二、host网络
连接到 host 网络的容器共享 docker host 的网络栈,容器的网络配置与 host完全一样。可以通过 --network=host 指定使用 host
host网络的应用
- 直接使用 Docker host 的网络最大的好处就是性能,如果容器对网络传输效率有较高要求,则可以选择 host 网络。当然不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host 上已经使用的端口就不能再用了。
- Docker host 的另一个用途是让容器可以直接配置 host 网路。比如某些跨host 的网络解决方案,其本身也是以容器方式运行的,这些方案需要对网络进行配置,比如管理 iptabl
三、bridge网络
docker 安装时会创建一个 命名为 docker0 的 linux bridge。如果不指定--network,创建的容器默认都会挂到 docker0
#docker network inspect bridge 查看配置信息
四、自定义网络
#docker network create --driver bridge my-net2 创建网络
#docker network create --driver brigde --subnet 172.22.1.0/24 -- gateway 172.22.1.1 my-net3 指定ip