论:docker的两个容器为什么默认不能通过服务名互通,而指定自定义bridge模式网络就可以

最近看docker相关视频,满屏幕对这个问题的弹幕,也没见一个正确说明这个问题的弹幕,固来探讨一下。

我其实也没有相关官方正式资料之类的证据,但我只要把逻辑讨论出一二三,我相信你一定会同意。甚至,我只需要反问一个问题,你可能也会想明白。

请问:你认为docker中自定义网络的存在意义是什么?

...

...

...

答案:网络隔离

Linux中网络命名空间(network namespace)的概念,可以去了解一下,你可以拿很多高级程序设计语言中的命名空间来联想思考。

正如你所知,容器默认为bridge,那所有容器一启动,就全部互通,这个服务器的网络该多乱,该多不好管。就如docker是为了微服务诞生,那诸多微服务也可以按照模块分隔成很多大小不同的单元,要是全都互通,不头大吗。

所以,虽然我也不知道底层实现具体怎么样,但猜测大概类似于是默认bridge自己有一个命名空间,自定义网络有自己各自的命名空间,去做到不同自定义网络之间的隔离,所有网络命名空间又是基于docker0能连它。至于默认bridge的容器,估计就是为了这个目的,特殊处理了。

不同自定义命名空间之间通过docker network connect实现互通,不同docker服务之间也有相应的东西,官网貌似见到过一眼,目前我还没兴趣。

到此,标题讨论结束。

==============================================

答案,我相信你心里已经有了,但我想在这跑一下题。

你为什么没想到

我很喜欢一句话:《好的角度,能提高你80的智商》

很多时候,我们不是不够聪明,而是没有一个清晰冷静的头脑状态和好的切入角度。所以我们经常追一个BUG,长时间没有头绪,就不能上头,必须要休息一下,因为已经在某个角度,过于深入出不来了。

学习一个概念或者技术,我觉得先提出通用的核心问题,再根据这些问题去学习比较好。

一个概念,它,是什么?为什么诞生?为什么同类竞争中胜出?为什么淘汰?说白了,相当于追逐本质、核心。

学习途中产生一些疑问,暂时想不明白,就试着回归那些本质问题去重新思考。

但很多时候,也不能太较真,因为有很多技术,他不是因为本身的优势,而是因为历史原因,替换成本原因,普及开来或者继续存在。

至于为什么啰嗦了呢,是因为我有一个不成熟的小目标,想给中国软件行业做出一份自己的小贡献。你看我文章有收获,你就是我对中国软件行业的贡献,你可给我长点心吧。

另。

我一个PHP,那么多中间件,天天蹭java的教学视频,生态好差,我不服。

咳咳,我还是想说:PHP是世界上最好的语言。不服来战

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值