容器内外应用与非容器应用之间互访方式

Docker中常用的三种网络种类

  • bridge,应用都是容器形式,且都在一个宿主机上,各个容器需要互相通信的场景;
  • host,容器和本机应用混杂且需要相互访问的情况;容器会使用宿主机的网络
  • overlay,在不同宿主机的容器之间需要互相通信的情景。

注:docker中的网络常用的分为host(如果启动的容器绑定的是80端口,使用host网络驱动,应用程序将使用主机的ip+端口)、bridge(允许容器之间使用相同桥接网络进行通信,同时与使用其他桥接网络的容器进行隔离)、overlay(可以在多个docker宿主机之间创建一个分布式网络)

docker安装好后会默认创建一个bridge网络(docker0),也就是“default bridge”,未指定网络的容器会默认使用这个网络。一般使用自定义bridge较多,我们定义一个私有网络,可以将我们的应用与其他应用相隔离。

不指定driver时默认为bridge :

创建:

docker network create bridge-a && docker inspect bridge-a

比如我们使用一个数据库容器供多个网络中的应用使用,分别使用不同的数据库

docker network disconnect bridge container-a

多种场景的访问方式

容器A访问容器B

这种情况最好使用自定义到bridge网络,上面也提到了,自定义到bridge网络自带“容器名 => 容器IP”的解析能力,因此在容器A要想访问容器B,直接使用容器名称即可。

容器内访问容器外应用

通过docker0的Gateway访问到宿主机。查看一下docker0的gateway,在容器中使用gateway的ip就可以访问到宿主机。

容器外应用访问容器A

容器内应用要想开放访问,容器需要使用host网络,或者将端口映射到宿主机的端口,就可以像访问本地应用一样访问容器应用了。

机器A容器访问机器B本地应用

机器A容器中访问机器B的IP地址和应用的端口即可。

机器A本地应用访问机器B容器

只要机器B中的容器使用host网络或者将端口映射到宿主机(机器B)端口,就可以通过宿主机IP加端口访问。

机器A容器访问机器B容器

机器B中的容器使用host网络或者将端口映射到宿主机(机器B)端口,就可以通过宿主机IP加端口访问。

发布了16 篇原创文章 · 获赞 1 · 访问量 813

猜你喜欢

转载自blog.csdn.net/apple_1900/article/details/104010134