容器通信除了以上的方式,还有如下的方式:
docker容器除了使用ip地址进行通信,还可以进行容器名称通信。dns解析功能必须在自定义网络中才可以使用。启动容器时使用 --name参数指定容器名称
joined容器时一种较为特别的网络模式
在容器创建时使用–network=container:vm1指定(vm1指定运行的容器名)。处于这个模式下的docker容器会共享一个网络栈,这样两个容器之间可以使用localhost高速快速通信。
joined容器类似于之前的host模式,host模式是容器与宿主机共享,而这里是容器与容器之间之间共享。
此时可以通过vm2来访问vm1的容器:
其实ping真实名和别名都可以ping通:
跨主机容器通信:
macvlan网络方案实现:
实验环境:
准备两台安装并且启动了docker的机器,这两太机器添加一个网卡,使其拥有两个网卡
两台机器本身需要可以通信:
配置eth1网卡并且激活:(server1与server2均需要配置)
两台机器打开混杂模式:
清空实验环境:
server1:
通过parent参数直接告诉机器使用物理接口eth1进行通信:
此时利用该网络启动一个容器,自动分配该网段的一个地址:
也可以手动指定Ip(前提:之前需要设置了subnet gateway参数)
server2:
在server2中配置相同网段的网络(相当于交换机,只在二层进行交换,所以需要设置为相同的网段)
手动设置ip(不能与server1的ip一样,否则会冲突)
此时两台机器可以互通:
此方法的缺陷:在企业中,即使创建多个网卡仍然不够用,并且机器真实的物理网卡有限。
server与server2在原来的基础上创建: