我们接着盗图,如下:

在这张图上,可以看到,如果两个容器使用同一个bridge,那么两个容器之间是互相能通的

可以看到两个容器在同一个bridge下是可以互相ping通的

当两个容器在不同的bridge的时候,容器之间是不能ping通的,(但是不同bridge的容器为什么能ping通不同bridge的网关呢?)和拓扑图是一样的

如何让两个不同的网段之间能够ping通呢?

1.增加路由

如果host上对每个网络都有一个路由,同时操作系统上打开了ip forwarding,host就成了一个路由,挂在不同的网桥上的网络就能够互相ping通

我们可以看一下host上是否满足这个条件

ip r查看路由表

我们可以看到这些网段的路由表都定义好了,那我们再看一下ip forwarding

/proc/sys/net/ipv4/ip_forward,这里面本来是0,我们将他改成1

我们开启路由转发后不同bridge之间是否能通信呢?

可以看到ping向其他bridge的ip还是不能通,但是ping到网关是能通的

2.为什么已经开启了路由转发,还是不能互相通信啊?是不是因为防火墙?但是我的firewalld 和selinux都已经全部关闭了啊

但是linux内核还有个iptables,我们看一下iptables规则

可以看到bridge被iptables给DROP掉了,从命名规则 DOCKER-ISOLATION可知:docker 在设计上就是要隔离不同的network

那是不是我们更改一下iptables的规则就可以实现不同bridge容器间的通信呢,答案是肯定的(由于本人iptables特别不好,所以这里就不讨论了)

3.我们还可以通过docker另外的增加网卡的办法来解决:

使用docker network connect给容器增加一块新的网卡

可以看到我们通过docker network connect 这个命令给容器添加网卡eth1,并让这个网卡使用另外的bridge,现在不同bridge之间的容器建可以进行通信

容器间的通信方式其实有三种:

1.IP通信:

上面我们讨论的相同bridge的容器间的通信与不同的bridge之间的通过docker network connect增加网卡使容器间通信,都属于基于IP方式的通信

2.docker dns server:

我们在部署应用之前可能无法确定IP,部署之后在指定IP可能比较麻烦,docker 自带的DNS 服务可以解决这个问题

docker 从1.10版本开始,docker daemon实现了一个内嵌的DNS server,使容器可以直接通过容器名进行通信,

方法也很简单,只要在运行容器的时候通过--name指定容器名,就可以了

运行了两个容器名字为name1和name2,为什么我用name2去pingname1时,不能ping通呢?

因为,这个DNS server通信的方式只适用于user-defined的网络

试验结果为:确实是需要user-defined的网络,才能实现dns server的通信方式

但是不同bridge之间的容器通过DNS的通信方式还是不能实现

3.joined通信方式

joined容器非常特别,它可以使两个或两个以上的容器共享一个网络栈,共享网卡和配置信息,joined容器可以使容器之间可以通过127.0.0.1直接进行通信

通过--nemwork=container:name5的方式将一个新建的容器加入另外一个容器后,两个容器间就有了相同的mac和ip,他们共享了相同的网络栈

name5可以直接通过127.0.0.1直接访问新建httpd容器的http服务

joined通信方式非常适合一下场景:

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

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

centos7下安装docker(12.3容器之间的连通性)的更多相关文章

  1. centos7下安装docker(19容器架构)

    What,Why,How What:什么是容器? 说起容器大家想到的是什么?      集装箱(container),虚拟机,docker,k8s 1. 没毛病,因为容器与集装箱的英文都可以翻译成co ...

  2. centos7下安装docker(11容器操作总结)

    这段时间主要是学习了对容器的操作,包括:容器的状态:start,stop,restart,rename,pause,unpause,rm,attach,exec,kill,logs:还学习了对容器的资 ...

  3. centos7下安装docker(10容器底层--cgroup和namespace)

    cgroup和namespace是实现容器底层的重要技术 cgroup:实现资源限制 namespace:实现资源隔离 1.cgroup:control group Linux操作系统通过cgroup ...

  4. centos7下安装docker(9容器对资源的使用限制-内存)

                  一个docker Host上面会运行若干容器,每个容器都需要CPU,内存和IO资源.容器提供了控制分配多少CPU,内存给每个容器的机制,避免摸个容器因占用太多资源而影响其他 ...

  5. CentOS7下安装docker(Docker系列1)

    CentOS7下安装docker 系统要求 为了安装docker,需要准备 64-bit的CentOS 7 删除非官方的Docker包 yum的仓库中有一个很旧的Docker包, 现在Docker官方 ...

  6. docker(一) Centos7下安装docker

    docker(一) Centos7下安装dockerdocker(二) windows10下安装dockerdocker(三) 镜像和容器常用命令 docker(四) 使用Dockerfile构建镜像 ...

  7. centos7下安装docker与镜像加速

    1.背景 centos7下安装docker 2.安装 第一步:检查是否为centos7版本 第二步:依赖环境安装 执行如下两个命令: yum -y install gcc yum -y install ...

  8. centos7 下安装docker报错:You could try using...

    搞了台VPS,想要装docker,发现死活装不上,各种报错.之前系统是centos6,发现官方现在已经不支持centos6了,遂升级到centos7,然后还是出现下面这个错误. Error: Pack ...

  9. centos7下安装docker(12.5容器在单个host上的网络总结)

    单个host上的容器的网络:通过本章的学习,我们知道docker默认有三种网络,可以通过docker network ls查看: none:封闭的网络,通过--network=none来指定: hos ...

随机推荐

  1. #7 Python顺序、条件、循环语句

    前言 上一节讲解了Python的数据类型和运算,本节将继续深入,涉及Python的语句结构,相当于Python的语法,是以后编写程序的重要基础! 一.顺序语句 顺序语句很好理解,就是按程序的顺序逻辑编 ...

  2. C#基础---浅谈XML读取以及简单的ORM实现

    背景: 在开发ASP.NETMVC4 项目中,虽然web.config配置满足了大部分需求,不过对于某些特定业务,我们有时候需要添加新的配置文件来记录配置信息,那么XML文件配置无疑是我们选择的一个方 ...

  3. 二维码编码与解码类库ThoughtWorks.QRCode

    官方地址:https://www.codeproject.com/Articles/20574/Open-Source-QRCode-Library 有源代码和示例程序 支持二维码编码(生成)和解码( ...

  4. Django Rest Framework之用户频率/访问次数限制

    内置接口代码基本结构 settings.py: REST_FRAMEWORK = { 'DEFAULT_THROTTLE_CLASSES':['api.utils.mythrottle.UserThr ...

  5. 笔记-返回到前一个页面时显示前一个页面中ajax获取的数据

    笔记第一部分:http://www.cnblogs.com/zczhangcui/p/6869219.html 在第一部分遇到的问题是,用ajax获取了一系列列表信息后,拼接好html后插入到了原有页 ...

  6. 【读书笔记】iOS-微定位技术

    在大型商场,医院或是大楼里,你是否曾经有过找不到想去的地方的经历呢?这种情况下采用传统的定位方法就有些力不从心了.首先这些地方不能采用GPS定们,而Wifi和蜂窝式移动电话基站定位误差比较大.这种情况 ...

  7. CSS布局设置

    一 盒模型 盒模型 在CSS中,"box model"这一术语是用来设计和布局时使用,然后在网页中基本上都会显示一些方方正正的盒子.我们称为这种盒子叫盒模型. 盒模型有两种:标准模 ...

  8. python之正则表达式及RE模块

    正则表达式(匹配字符串)web界面正则匹配工具:http://tool.chinaz.com/regex/ 元字符 1 . 匹配除换行符之外的任意字符 2 \w 匹配数字字母下划线 3 \d 匹配数字 ...

  9. MIPS 安全相关paper阅读笔记

    前言 论文来自 ​ https://cyber-itl.org/2018/12/07/a-look-at-home-routers-and-linux-mips.html Linux_MIPS_mis ...

  10. Android 打开文件或文件夹777权限

    打开777权限 public class SystemManager extends Activity { public static boolean RootCommand(String comma ...