首先我们要知道整体的框架结构,docker是我们安装在centos7上的,而centos7是安装在vmware上。其中docker中还有若干容器运行。

整体框架图如下:

  

    我们将它分为两部分,一部分是docker环境,除去docker的所有划分到另一个部分。(我们知道centos7和我们的真机是同一个网段的ip,不需要配置之间可以相互通信)。那dokcer本身又是一个大整体,其下面还有很多我们生成的容器,他们的ip是由docker的虚拟网卡生成的,他们是一个网段的。彼此之间应该是可以相互ping通的。

    例如我的docker中ubuntu的ip为172.17.0.2,而真机和centos7是192.168网段的。

  之前我们尝试过,发现docker的ubuntu竟然也可以ping通外网,按道理它不是应该不通向外网的吗?后来知道,在docker环境中,不同的容器就像相当于不同的主机,而docer本身将它们互通,起到了交换机的作用,同时,docker本身也有着路由功能,自带dhcp和nat服务。我们都知道(你知道吗)NAT服务是将一个网段的ip转换为另一个网段的ip来进行通信。

  按照最上面的框架图来说,docker中的ubuntu(172.16.111.1)想要去连接外网,docker发现它和外网的ip网段不同,自动转换为172.16.3.222。这时候,和我们外面的真机环境网段匹配了,就可以正常通信了。而当我们真机环境的主机去寻找ubuntu容器时,发现找不到172.16.111.1,就会出现请求超时或者目标不可达的现象。

  问题找到了,那么解决办法也很简单,既然主机找不到,那我们就添加一条静态即可,当我们真机去ping172.16.111.1时,人为的将它转换为192.16.3.222,这时候自然也能ping通了。

  上一篇我们的解决办法是在创建容器的一开始就配置端口映射,使得我们能够通过ssh连接到ubuntu,但也是不能直接ping通ubuntu的。但对我们后序使用无关紧要。在实验过程中我查到很多人说可以再配置防火墙来实现,但是我出现了报错的现象,未能解决,希望评论区大佬指正。

      安装完iptables后想要查看占用,报错说我不是root用户,但是看前面的提示符可以看到我就是root用户登录的。

    

        以及我之前安装完防火墙,进行任何操作都会有类似的报错,说我不是root用户?

关于docker中容器可以Ping通外网,真机无法Ping通容器的问题的更多相关文章

  1. CentOS7设置静态IP以及windows下ping不通虚拟机、虚拟机ping不通外网解决方案

    问题:CentOS7安装完成后默认使用的是动态IP,当你每次重新启动CentOS7后,它的IP地址都不一样.一般我们都是使用远程连接工具连接CentOS7进行操作,如果每次IP都不一样,系统启动后,每 ...

  2. [原]openstack-kilo--issue(七):虚拟机怎么通外网,外网怎么ping通虚拟机

    =====问题======= 虚拟机可以ping通外网,外网能ping通虚拟机但是收不到reply 这个问题本人遇到有两种情况: 1.安装完整openstack-kilo后,在route中和虚拟机中抓 ...

  3. 集群搭建:主机宽带拨号上网,虚拟机使用桥接模式,该如何ping通外网

    首先介绍一下看这篇文章需要的基础.需要了解虚拟机的 虚拟机的三种网络模式,有Linux基础知识,这些都是前提.首先介绍一下我的环境:主机:win7虚拟机:VMware Workstation 10虚拟 ...

  4. 为虚机Linux系统设置静态IP,ping通外网并解决相关问题

    在虚机中安装完Linux系统后,虚机是ping不通外网的,而默认的动态IP会为之后的Hadoop应用造成不少麻烦,为了减少这些不必要的麻烦,我们把系统的IP设置为静态. 步骤: 修改系统配置文件 命令 ...

  5. 能ping通外网dns但不能上网一例

    一个win7本本仅通过一个无线路由一个人上网,突然一天不能上网了,甚是奇怪,一看本地连接均是正常的.而且能ping通外网的dns,但无论如何就是打不开网页,表现为输入任何网址很迅速的显示该页无法显示, ...

  6. Linux中ping不通外网

    在linux中ping www.baidu.com 无法ping通 需要修改vi /etc/resolv.conf 增加如下内容: nameserver 114.114.114.114 nameser ...

  7. ping通网关 ping不能外网  DNS无法解析

       ###ping通网关 ping不能外网  DNS无法解析 客户上不了网 DNS解析不了  首先登陆机器 先查看IP  然后看dns是否正常 然后测试ping网关  ping外网 nslookup ...

  8. 关于开发板不能ping通外网IP

    最近在做远程监控的项目,打算用开发板给一个网站发送数据包.不过发现开发板只能ping通同一局域网内的ip,外网的ip不能ping通.纠结了半天发现是网关没有设置的原因.下面来说说如何解决这个问题. 首 ...

  9. 解决虚拟机连接不上外网,不能互相ping通

    0.解决虚拟机连接不上外网,不能互相ping通 直接在linux系统下,编辑修改如下文件: //编辑文件/etc/sysconfig/network-scripts/ifcfg-eth0 [root@ ...

随机推荐

  1. TP5模型开启事务

    和Db开启事务类似,Db是静态方法 $userObj = new UserModel(); $userObj->startTrans(); try { $userObj->data($da ...

  2. Appium Android Toast控件

    Android Toast控件是Android系统级别的控件,不是App的控件,getPageSource是⽆法找到的. Toast介绍 1.背景 在安卓设备里面,使用各种手机应用程序的时候,需要先进 ...

  3. Kafka 性能篇:为何 Kafka 这么快?

    『码哥』的 Redis 系列文章有一篇讲透了 Redis 的性能优化 --<Redis 核心篇:唯快不破的秘密>.深入地从 IO.线程.数据结构.编码等方面剖析了 Redis " ...

  4. jzoj4496-[GDSOI2016]互补约数【莫比乌斯反演】

    正题 题目链接:https://gmoj.net/senior/#main/show/4496 题目大意 给出\(n\),定义 \[f(i)=\sum_{d|i}gcd(d,\frac{i}{d}) ...

  5. JPA基本用法

    jpa基本查询 1.继承JpaRepository,生成了CRUD方法 public void testBaseQuery() throws Exception {   User user=new U ...

  6. 经典软件测试面试题目:Android 和 ios 测试区别?这样回答:稳!

    Android 和  ios 测试区别? App 测试中 ios 和 Android 有哪些区别呢?1.Android 长按 home 键呼出应用列表和切换应用,然后右滑则终止应用:2.多分辨率测试, ...

  7. 14-Java锁的概述

    14-锁的概述 乐观锁与悲观锁 ​ 乐观锁与悲观锁是数据库中引入的名词,但是在并发包里也引入了类似的思想,在这里我们还是有必要需要了解一下. ​ 悲观锁指数据被外界修改持保守态度,认为数据会很容易被其 ...

  8. go语言游戏服务端开发(四)——RPC机制

    五邑隐侠,本名关健昌,12年游戏生涯. 本教程以Go语言为例. RPC指远程方法调用,游戏里引入RPC目的是降低跨进程交互的复杂度. 游戏业务设计为多go routine,一个玩家一个go routi ...

  9. 使用 PyTorch Lightning 将深度学习管道速度提高 10 倍

    ​  前言  本文介绍了如何使用 PyTorch Lightning 构建高效且快速的深度学习管道,主要包括有为什么优化深度学习管道很重要.使用 PyTorch Lightning 加快实验周期的六种 ...

  10. 七牛云的 python sdk 是如何 批量删除资源的

    今天做项目的时候用到七牛云,关于对资源的操作是在后端做的,用的SDK,但是,在网上没找到详细的解析,官方文档也没有太详细的解说,所以无奈只好看下源码 这里做一下简单的记录 from qiniu imp ...