关于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@ ...
随机推荐
- typora+picgo+gitee 图片无法加载问题
typora+picgo+gitee 图片无法加载问题 待解决
- 怎么使用chrome浏览器查看内存是否有泄漏
一:什么是内存泄漏 javaScript会在创建变量时分配内存并且在不适用变量时会自动的释放内存,这个释放内存的过程极为垃圾回收,程序运行需要内存,只要程序提出要求操作系统或者运行时就必须提供内存,对 ...
- 由浅入深了解cookie
什么是 Cookie "cookie 是存储于访问者的计算机中的变量.每当同一台计算机通过浏览器请求某个页面时,就会发送这个 cookie.你可以使用 JavaScript 来创建和取回 c ...
- AT1983-[AGC001E]BBQ Hard【dp,组合数学】
正题 题目链接:https://www.luogu.com.cn/problem/AT1983 题目大意 给出\(n\)个数对\((a_i,b_i)\) 求 \[\sum_{i=1}^n\sum_{j ...
- 深入浅出WPF-03.XAML语法
2 XAML语法 树形结构,我们将整个XAML的结构想象成一棵树,我们从树的顶部向下看,形成俯视图.最上面的叶子节点会覆盖父节点,同级的子节点,后面的(也就是树的最上面)会覆盖前面的.覆盖包含了形状( ...
- Monte-carlo-simulation
https://towardsdatascience.com/how-to-use-monte-carlo-simulation-to-help-decision-making-a0a164bc861 ...
- Matrix Analysis and Application
Chap 1: Linear Equations and Matrix Linear equations Gaussian elimination Pivot; Triangularize; Back ...
- 踩坑系列《二》NewProxyResultSet.isClosed()Z is abstract 报错踩坑
在运行测试类的时候莫名其妙的报了个 NewProxyResultSet.isClosed()Z is abstract 这个错误,之前出现过这个错误,以为是版本出现了问题 就将版本 0.9.1.2 改 ...
- Docker部署Mysql,如何开启binlog
0.拉取镜像 sudo docker pull mysql:5.7 1.创建存放映射文件夹 mkdir -p mydata/mysql/log mkdir -p mydata/mysql/data m ...
- 细说JUC的线程池架构
前言 线程的创建是需要JVM和OS(操作系统)相互配合的,一次的创建要花费许多的资源. 1.首先,JVM要为该线程分配堆栈和初始化大量内存块,栈内存至少是1MB. 2.其次便是要进行系统的调用,在OS ...