关于docker中容器可以Ping通外网,真机无法Ping通容器的问题
首先我们要知道整体的框架结构,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通容器的问题的更多相关文章
- CentOS7设置静态IP以及windows下ping不通虚拟机、虚拟机ping不通外网解决方案
问题:CentOS7安装完成后默认使用的是动态IP,当你每次重新启动CentOS7后,它的IP地址都不一样.一般我们都是使用远程连接工具连接CentOS7进行操作,如果每次IP都不一样,系统启动后,每 ...
- [原]openstack-kilo--issue(七):虚拟机怎么通外网,外网怎么ping通虚拟机
=====问题======= 虚拟机可以ping通外网,外网能ping通虚拟机但是收不到reply 这个问题本人遇到有两种情况: 1.安装完整openstack-kilo后,在route中和虚拟机中抓 ...
- 集群搭建:主机宽带拨号上网,虚拟机使用桥接模式,该如何ping通外网
首先介绍一下看这篇文章需要的基础.需要了解虚拟机的 虚拟机的三种网络模式,有Linux基础知识,这些都是前提.首先介绍一下我的环境:主机:win7虚拟机:VMware Workstation 10虚拟 ...
- 为虚机Linux系统设置静态IP,ping通外网并解决相关问题
在虚机中安装完Linux系统后,虚机是ping不通外网的,而默认的动态IP会为之后的Hadoop应用造成不少麻烦,为了减少这些不必要的麻烦,我们把系统的IP设置为静态. 步骤: 修改系统配置文件 命令 ...
- 能ping通外网dns但不能上网一例
一个win7本本仅通过一个无线路由一个人上网,突然一天不能上网了,甚是奇怪,一看本地连接均是正常的.而且能ping通外网的dns,但无论如何就是打不开网页,表现为输入任何网址很迅速的显示该页无法显示, ...
- Linux中ping不通外网
在linux中ping www.baidu.com 无法ping通 需要修改vi /etc/resolv.conf 增加如下内容: nameserver 114.114.114.114 nameser ...
- ping通网关 ping不能外网 DNS无法解析
###ping通网关 ping不能外网 DNS无法解析 客户上不了网 DNS解析不了 首先登陆机器 先查看IP 然后看dns是否正常 然后测试ping网关 ping外网 nslookup ...
- 关于开发板不能ping通外网IP
最近在做远程监控的项目,打算用开发板给一个网站发送数据包.不过发现开发板只能ping通同一局域网内的ip,外网的ip不能ping通.纠结了半天发现是网关没有设置的原因.下面来说说如何解决这个问题. 首 ...
- 解决虚拟机连接不上外网,不能互相ping通
0.解决虚拟机连接不上外网,不能互相ping通 直接在linux系统下,编辑修改如下文件: //编辑文件/etc/sysconfig/network-scripts/ifcfg-eth0 [root@ ...
随机推荐
- Java基础系列(4)- 编译型和解释型
概念 有一个外国人要看一本中文的书,有两种方式可以看,一种是把这本书翻译成英文版,另外一种是请一个中文翻译,想看哪边,翻译就翻译哪边. 针对上述的描述,翻译成英文版本的书籍对应的就是编译型,将代码编译 ...
- WireShark基础用法
特点 免费 开源 跨平台 抓包原理 内部原理 抓取网卡 抓包环境 抓取本地数据 抓取外部数据 利用hub 流量镜像span.rspan.erspan 界面介绍.首选项.抓包选项 界面介绍 菜单栏 帮助 ...
- k8s-PodApi对象
init容器 pod的生命周期钩子 资源限制 podApi对象概览 apiVersion + kind 一个是版本 一个是资源组 共同确定当前yaml由谁来管理 metadata元数据 用来唯一标 ...
- 【Vue】淘气三千问之 data为什么是函数而不是对象?这河狸吗
朋友,当你提出以上问题的时候建议你先去复习下原型链的知识 但是我好人做到底直接就讲了吧,我们先看一下下面的这段代码: function Component () { this.data = this. ...
- 经典软件测试面试题目:Android 和 ios 测试区别?这样回答:稳!
Android 和 ios 测试区别? App 测试中 ios 和 Android 有哪些区别呢?1.Android 长按 home 键呼出应用列表和切换应用,然后右滑则终止应用:2.多分辨率测试, ...
- Redis之品鉴之旅(五)
Redis事务 原子性:就是最小的单位 一致性:好多命令,要么全部执行成功,要么全部执行失败 隔离性:一个会话和另一个会话之间是互相隔离的 持久性:执行了就执行了,数据保存在硬盘上 典型例子:银行转账 ...
- IdentityServer4[3]:使用客户端认证控制API访问(客户端授权模式)
使用客户端认证控制API访问(客户端授权模式) 场景描述 使用IdentityServer保护API的最基本场景. 我们定义一个API和要访问API的客户端.客户端从IdentityServer请求A ...
- 【问题记录】Java服务发起HTTPS请求报错:PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException
问题报错 今天上线了我开发的一个OAuth2单点登录客户端的实现,在测试系统验证没问题,到生产环境由于单点登录服务端HTTPS协议,报错如下: I/O error on POST request fo ...
- 深入理解JAVA虚拟机《二》
对象.内存回收和垃圾收集算法 一.引用计数算法(不可靠) 现在很多比较普遍的判断对象是否存活的算法就是引用计数算法,其大概原理是:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1:当 ...
- Java - 你的 Java 代码有这些坏味道吗?
列举一些 Java 开发中常见的"不良实践",来源于代码扫描(https://github.com/pmd/pmd),和诸君一起学习参考: 1 - 关闭资源 CloseResour ...