docker的网络模式
作者:bindocker的常用网络模式
None网络:这种网络模式下容器只有lo回环网络,没有其他网卡。none网络可以在容器创建时通过 –network=none 来指定。这种类型的网络没有办法联网,封闭的网络能很好的保证容器的安全性。
Host网络: 通过命令–network=host 指定,使用host模式的容器可以直接使用docker host的IP地址与外界通信,容器内部的服务端口也可以使用宿主机的端口,不需要进行NAT,host最大的优势就是网络性能比较好,但是docker host上已经使用的端口就不能再用了,网络的隔离性不好。
bridge网络:容器的默认网络模式,新建的容器未指定网络模式都会挂在bridge0下面,挂在相同的bridge下的容器可以相互访问,并且容器间可以通过容器名称直接访问,无需指定容器的ip(例如ip可能会在变,名称固定)
1、容器或应用在一台宿主机上,容器互相访问
运行2个容器
docker run -itd --name=container_a alpine:3.9.4 docker run -itd --name=container_b alpine:3.9.4
这两个容器都运行在bridge0下,可以相互访问,我们为他们换一个bridge网络,先新建一个网络
docker network create bridge-a
然后链接网络
docker network connect bridge-a container-a docker network connect bridge-a container-b
如此就可以互相访问了,如果要断开链接:
docker network disconnect bridge-a container-a
2、容器或应用在一台宿主机上,容器与宿主机器都其它应用访问
本机都应用间可以用127.0.0.1或者localhost加端口进行访问,但是本机的docker内的应用和本机的应用就不行了。
我们可以使用docker当前网络的GateWay的ip,就可以访问到宿主主机的应用了,我们可以用如下命令查看:
docker inspect bridge-b
找到里面的ip:
NetWork/bridge-b/GateWay
3、容器或应用不在一台宿主机上,容器互相访问
这个没啥好说的, 借助宿主的网络,进行端口映射访问