--永恒的烦恼

docker容器内无网络问题

最近在研究一些网络相关的东西,发觉在公司安装了docker,但docker一直无法访问,进入容器网络也是出不到外网。

docker网络有三个方式,默认是桥接(bridge),也就是网络在不指定的情况下是桥接模式。由于公司(中大型)的网络一般都是到核心交换机或者汇聚交换机,再转发到防火墙(路由器)。
默认的情况下,在虚拟机中安装docker,按常规路由是:容器内部 -> 虚拟机-> 本地主机 -> 核心交换机 -> 路由器
默认情况下,docker桥接分配的子网是 172.17.0.0/16 ,网关是172.68.0.1,这里的网关就是虚拟机本机的,到这里我们不用管,查看虚拟机子网 172.17.0.0/16的路由,都是指向0.0.0.0,也就是虚拟机的默认网关,如下图所示:

它会从虚拟机的默认网关出去,也就是到192.168.1.1,但问题是中间(路由器或交换机)的设备根本就没有这个子网范围,于是就到不了真正的出口路由。

方法一:修改docker桥接网络配置

这个方法失败,本来想着修改docker桥接网络为192.168.1.0/24,跟路由一个网络,但这种方式直接导致虚拟机本机网络瘫痪

方法二:容器使用net的方式

这个不是最优但绝对是适合很多人的选择,在选择容器时,网络方式使用net的方式,如以下代码所示:

docker run -dit   --net=host  --name 测试 镜像

方法三:配置路由设备

这个方法是你可以管理该设备,使用静态路由可以解决该问题,或者划分子网等方式,主要解决路由问题便可以。

赞(1) 打赏
转载请带上源站链接:玖伴一鹏 » docker容器内无网络问题

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫打赏

微信扫一扫打赏