怎么设定Docker容器网路不能外网

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了怎么设定Docker容器网路不能外网相关的知识,希望对你有一定的参考价值。

参考技术A

怎么设定Docker容器网路不能外网

在你的宿主机启动docker的时候会多出一个 docker0 的虚拟网络卡,然后容器都通过这个和外面通讯。

solaris 11怎么设定网路,ping不通外网

设定:
/etc/resolv.conf
nameserver 8.8.8.8

如果是线路由不通,网路装置有问题、网络卡的问题都PINK不通外网。

怎么设定网路能看国外网站?

理论上,国家不限制你访问国外的网站,实际上,部分内容有问题的网站是限制访问的,各国其实都是这样做的,不过要突破这样的限制还是有一定的法子的,比如说你可以在网上下载一个叫做“无界”的程式,现在我不知道是多少版本了,你在网上搜一下,能够找到的

怎么设定网站图片不能外链

网站防外链程式码.htaess 可以防盗链 要Linux程式才行 windows的话 设定比较麻烦

docker容器里网路请求慢怎么解决

docker网路里的速度取决于你的网路模式和dns配置,具体看下面的部落格介绍
docker容器内网路请求缓慢问题解决:
:embbnux./2016/10/06/docker-container-neork-too-slow-timeout/

如何给docker容器设定ip

要重新再获得被分配IP地址,可以在客户端主机的DOC下(在[开始]-[执行]里输入“cmd”或点选附件里的[命令提示符]就可以进入)
输入命令 ipconfig/release (释放掉你获得的IP)
然后 ipconfig/renew(重新到DHCP伺服器那里获得IP)
A类是第1段1-126,B类第1段是128-191,C类第1段就是192-223
A、B类被作为外网地址,C类被用做区域网地址。
你要连通外网后A、B类的都是网路经营商拥有的,你得花钱租的。
DHCP有一定的记忆性,如果只连一台计算机,肯定经常出现总分配同1个地址,或差不多的地址,以求网路的稳定,并节省消耗。

TOTOLINK路由器怎么设定远端监控,网路还有DVR.内网和外网怎么设定,求解

你是什么型号的路由器? 做远端监控只需要在路由器里面做一个埠转发,然后再做一个DDNS动态域名来转换广域网IP就可以了。

palm手机在国外网路配置怎么设定?

我用的centro,用了三年了,24小时开机还能用2天,摔过几次,都没坏,洗衣服忘了拿出来泡了一夜,修好后系统也很稳定,可惜PALM手机比较特立独行,虽然簇拥不少,不过后期研发和配套都不是太给力,让众多胖友比较失望的,网路配置不知道,不过手机是真正的好!

OUTLOOK EXPRESS能不能设定网路储存,怎么设定!

outlook express 不能支援网路储存,只能在本机进行储存

centos7下安装docker(12.4容器如何与外部进行通信)

 

 

1.容器如何访问外部

前面我们做了很多试验:只要host能连外网,使用默认bridge(docker0)创建得容器就能访问外网,那么容器是怎样访问外网的呢?

注:这里的外网不仅是internet,包括internet

容器是怎样访问外网的呢?

这里的关键就是NAT。我们查看一下docker host上的iptables的规则

可以看到iptables对docker0这个bridge做了策略:当网桥docker0收到外出的包,把他交给MASQUERADE处理。而MASQUERADE的处理方式是将包的源地址替换成host地址发送出去,即做了一次网络地址转换(NAT)

 

 

我们可以通过tcpdump查看地址如何转换。先查看docker host的路由表:(此试验我开了三个终端)

默认路由通过ens160(host网卡) 发出去的,所以我们要同时监控ens160和docker0上的icmp(ping)数据包

源地址容器发送请求

docker0接收到源地址的请求,docker0将请求交给MASQURADE进行处理

我们可以看到ens160的变化:MASQUERADE将源地址的包转换成Host的地址,发送出去(这就是NAT的网络地址转换,深刻理解了)

这就是iptables NAT规则的处理结果,从而保证数据包能到达外网

继续盗图

处理过程:1.容器发送ping包:172.17.0.5>www.baidu.com

                  2.docker0收到包后,发现是发送到外网的。交给NAT处理

                 3.NAT将源地址转换成ens160的IP:192.168.7.222>www.baidu.com

                 4.ping包从ens160发出去。到达www.baidu.com

通过NAT,docker容器实现了对外网的访问。

 

 

 

 

 

2.外部访问容器:端口映射

docker将容器对外提供服务的端口映射到host的某个端口,外网通过该端口访问容器。容器启动时通过-p映射端口

之前我们学习制作私有仓库的时候registry:docker run -d -p 5000:5000  -v /myregistry:/var/lib/docker registry

我们可以通过docker ps 和docker port来查看端口映射,上面的例子中,httpd容器的端口80,被映射到host32768上,这样就可以通过<host ip>:<32768>来访问容器的web服务,但是这个32768我们并没有指定,是怎么来的呢?

可以看出是在没指定的情况下,这个端口是host随机分配的一个,这叫动态映射

在host上可以看到32768这个端口已经被监听了,我们来试验一下外网能否访问到web

是可以访问的

 

除了动态映射,我们也可以在-p中指定映射到host某个特定端口,例如将80映射到host的8080

 

 每一个端口映射,host都会启动一个docker-proxy进程来处理访问容器的流量

 

 再盗一图:

我们以0.0.0.0:32768->80为例子,来分析整个过程

1.当外网访问<host ip>:<32768>时,docker-proxy监听到host的32768端口有请求

2.docker-proxy将请求转发给对应的容器172.17.0.7:80

3.容器接收到请求后响应请求并返回结果。

 

 

 

总结:本节深刻理解了NAT网络地址转换,知道容器是通过NAT访问外网的;外网访问容器的时候,是通过-p设置端口映射实现的,设置了容器的端口映射后,host会为每个容器对应的端口启动一个docker-proxy来监听host上对应端口,并将请求转发给容器进行处理。通过容器的动态映射,可以体会到,host的端口是唯一的,也就是说当32768已经存在的时候,就不能再映射一个32768端口到host上。docker-proxy能保持容器和host上的映射保持一一对应。

 

以上是关于怎么设定Docker容器网路不能外网的主要内容,如果未能解决你的问题,请参考以下文章

Docker 不能被外网正常访问

外网访问内网Docker容器

怎样从外网访问内网Docker容器

创建容器后手动映射端口

完整的docker打包流程

使用Jenkins Pipeline插件和Docker打造容器化构建环境