美文网首页
Docker 容器之间的通信

Docker 容器之间的通信

作者: 崐崐 | 来源:发表于2020-05-20 15:05 被阅读0次

容器之间可通过 IP,Docker DNS Server 或 joined 容器三种方式通信。

一、 IP 通信

从上一节的例子可以得出这样一个结论:两个容器要能通信,必须要有属于同一个网络的网卡。

满足这个条件后,容器就可以通过 IP 交互了。具体做法是在容器创建时通过 --network 指定相应的网络,或者通过 docker network connect 将现有容器加入到指定网络。可参考上一节 httpd 和 busybox 的例子,这里不再赘述。

二、Docker DNS Server

通过 IP 访问容器虽然满足了通信的需求,但还是不够灵活。因为我们在部署应用之前可能无法确定 IP,部署之后再指定要访问的 IP 会比较麻烦。对于这个问题,可以通过 docker 自带的 DNS 服务解决。

从 Docker 1.10 版本开始,docker daemon 实现了一个内嵌的 DNS server,使容器可以直接通过“容器名”通信。方法很简单,只要在启动时用 --name 为容器命名就可以了。

下面启动两个容器 bbox1 和 bbox2:

docker run -it --network=my_net2 --name=bbox1 busybox

docker run -it --network=my_net2 --name=bbox2 busybox

然后,bbox2 就可以直接 ping 到 bbox1 了:

使用 docker DNS 有个限制:只能在 user-defined 网络中使用。也就是说,默认的 bridge 网络是无法使用 DNS 的。下面验证一下:

创建 bbox3 和 bbox4,均连接到 bridge 网络。

docker run -it --name=bbox3 busybox

docker run -it --name=bbox4 busybox

bbox4 无法 ping 到 bbox3。

三、joined 容器

joined 容器是另一种实现容器间通信的方式。

joined 容器非常特别,它可以使两个或多个容器共享一个网络栈,共享网卡和配置信息,joined 容器之间可以通过 127.0.0.1 直接通信。请看下面的例子:

先创建一个 httpd 容器,名字为 web1。

docker run -d -it --name=web1 httpd
然后创建 busybox 容器并通过 --network=container:web1 指定 jointed 容器为 web1:

请注意 busybox 容器中的网络配置信息,下面我们查看一下 web1 的网络:

busybox 和 web1 的网卡 mac 地址与 IP 完全一样,它们共享了相同的网络栈。busybox 可以直接用 127.0.0.1 访问 web1 的 http 服务。

joined 容器非常适合以下场景:

  1. 不同容器中的程序希望通过 loopback 高效快速地通信,比如 web server 与 app server。

  2. 希望监控其他容器的网络流量,比如运行在独立容器中的网络监控程序。

转载来源【https://www.cnblogs.com/CloudMan6/p/7096731.html

相关文章

  • Docker 容器之间的通信

    容器之间可通过 IP,Docker DNS Server 或 joined 容器三种方式通信。 一、 IP 通信 ...

  • Docker 入门教程之容器网络

    什么是容器网络 容器网络是 Docker 用来解决相互隔离的容器之间通信问题的技术。 Docker 网络驱动的类型...

  • Docker 网络操作

    1. 借鉴 docker中容器之间通信方式docker启动、重启、日志查看命令18 - Docker networ...

  • Docker容器之间的通信

    目录 一、容器之间添加链接 方式一:--link参数 用法: 解析: --link test1 test1是一个已...

  • 容器网络

    容器网络 如何创建自定义网络、容器之间如何通信、容器如何与外界交互docker network ls 查看dock...

  • docker容器安装rsyslog

    1.创建docker容器之间通信网络 2.启动rsyslog服务端容器 参数说明:  --privileged  ...

  • docker容器技术学习笔记(6、容器通信)

    容器之间的连通性 同一网络中的容器、网关之间都是可以通信的。 通过iptables,docker 在设计上就是要隔...

  • Docker学习笔记#3

    一、网络 docker提供几种网络,它决定容器之间和外界和容器之间怎么样去相互通信。查看网络,我们可以执行: nu...

  • Fabric多机部署前的Docker通信机制了解

    Docker容器通信主要分为以下几类: 容器和主机通信 同一主机上两个容器的通信 跨主机的两个容器的通信 首先,当...

  • Docker-网络

    网络 容器间通信 容器间可通过IP,Docker DNS Server或joined容器三种方式通信。 容器与外部...

网友评论

      本文标题:Docker 容器之间的通信

      本文链接:https://www.haomeiwen.com/subject/whqnohtx.html