一、原生网络介绍
1,查看网络
Docker 安装时会自动在 host 上创建三个网络:none、host、bridge。我们可以使用如下命令进行查看:
1 | docker network ls |
2,none 网络
(1)none 网络就是什么都没有的网络,一些对安全性有求高并且不需要联网的应用可以使用 none 网络。
比如:某个容器的唯一用途是生成随机密码,就可以放到 none 网络中避免密码被窃取。
(2)我们可以使用 --network=none 来指定容器使用 none 网络。
1 | docker run -it --network=none busybox |
3, host 网络
(1)连接到 host 网络的容器共享 Docker host 网络栈,容器的网络配置与 host 完全一样。相当于主机中套了一个与外部一模一样的容器,可以直接通过 host 的 ip 地址来访问该容器。
(2)host 网络主要使用如下几个场景:
如果容器对网络传输效率有较高要求,可以选择 host 网络。因为 host 网络最大的好处就是性能。
Docker host 的另一个用途是让容器可以直接配置 host 网络,比如某些跨 host 的网络解决方案,其本身也是以容器方式运行的,这些方案需要对网络进行配置,比如管理 iptables。
(3)host 网络不便之处就是牺牲一些灵活性,比如要考虑端口冲突问题,Docker host 上已经使用的端口就不能再用了。
(4)我们可以使用 --network=host 指定使用 host 网络。
1 | docker run -it --network=host busybox |
4,bridge 网络
(1)如果我们运行容器时不指定 --network,那么创建的容器都会挂到 bridge 网络上,可以通过如下命令查看 bridge 网络的配置信息:
1 | docker network inspect bridge |
可以看到 bridge 网络的网关是 172.17.0.1,子网是 172.17.0.0/16。容器创建时,docker 会自动从 172.17.0.0/16 中分配一个 IP,这里的 16 位掩码保证有足够的 IP 可以供容器使用。
(2)不指定 --network 则使用 bridge 网络:
1 | docker run -it busybox |
原文链接:https://www.hangge.com/blog/cache/detail_2474.html