开发者社区> 蓝帽子小智> 正文

Docker05_Docker默认网络原理、网络模式、自定义网络(一)

简介: ①. Docker默认网络原理
+关注继续查看

①. Docker默认网络原理


  • ①. 在linux下使用 ip addr


  1. lo: 本地所有的


  1. ethO:虚拟机的私有ip地址 172.28.0.3(所处的路由器分配的),公网不能访问


  1. docker0:是一个桥接网络 172.17.0.1/16,这里的/16是什么意思呢?


  1. (点分10进制 11111111.11111111.11111111.11111111,172.17.0.2/16 是前16位不变(也就是172.17不变) ,现在能分配到的ip是 256*256-2(子网域))


微信图片_20220107122115.png


②. 环境搭建:拉取一个alpine的镜像,基于这个镜像启动两个容器,进入容器查看各自的ip addr,最后我们重开一个窗口,使用ip addr 查看linux下的网络情况


# 第一个窗口
# 内部有一个330,外部有一个331对应
[root@i-id8g0yu9 ~]# docker run -it --name myalpine1 alpine
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
330: eth0@if331: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.2/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
# 第二个窗口
[root@i-id8g0yu9 ~]# docker run -it --name myalpine2 alpine
/ # ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
332: eth0@if333: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:ac:11:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.3/16 brd 172.17.255.255 scope global eth0
       valid_lft forever preferred_lft forever
/ # 
# 第三个窗口
[root@i-id8g0yu9 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether 52:54:99:b7:86:34 brd ff:ff:ff:ff:ff:ff
    inet 172.28.0.3/24 brd 172.28.0.255 scope global noprefixroute dynamic eth0
       valid_lft 79710sec preferred_lft 79710sec
    inet6 fe80::5054:99ff:feb7:8634/64 scope link 
       valid_lft forever preferred_lft forever
3: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:42:aa:2c:80:a6 brd ff:ff:ff:ff:ff:ff
    inet 172.17.0.1/16 brd 172.17.255.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:aaff:fe2c:80a6/64 scope link 
       valid_lft forever preferred_lft forever
331: veth0808c3f@if330: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether c2:44:6c:bc:76:b8 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::c044:6cff:febc:76b8/64 scope link 
       valid_lft forever preferred_lft forever
333: vetha2656be@if332: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP group default 
    link/ether ae:55:f3:40:d2:f3 brd ff:ff:ff:ff:ff:ff link-netnsid 1
    inet6 fe80::ac55:f3ff:fe40:d2f3/64 scope link 
       valid_lft forever preferred_lft forever
[root@i-id8g0yu9 ~]# 


③. 默认网络原理:Docker使用Linux桥接,在宿主机虚拟一个Docker容器网桥

(docker0),Docker启动一个容器时会根据Docker网桥的网段分配给容器一个IP地址,称为Container-IP,同时Docker网桥是每个容器的默认网关。因为在同一宿主机内的容器都接入同一个网桥,这样容器之间就能够通过容器的Container-IP直接通信。


  1. ocker容器网络就很好的利用了Linux虚拟网络技术,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫veth pair)


  1. 每一个安装了Docker的linux主机都有一个docker0的虚拟网卡。桥接网卡


  1. 每启动一个容器linux主机多了一个虚拟网卡


微信图片_20220107122205.png


微信图片_20220107122225.png


版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
探索本地Docker桥接网络
本文讲的是探索本地Docker桥接网络,【编者的话】本文主要介绍了Docker的基础网络知识,作者通过容器与MongoDB实例的连接的小实验探索了Docker的网路知识以及其中的一些问题。
1665 0
Docker——网络通信(五)(5)
Docker——网络通信(五)(5)
12 0
阿里云服务器如何登录?阿里云服务器的三种登录方法
购买阿里云ECS云服务器后如何登录?场景不同,阿里云优惠总结大概有三种登录方式: 登录到ECS云服务器控制台 在ECS云服务器控制台用户可以更改密码、更换系.
28396 0
docker 之网络配置
Docker 网络实现 首先,要实现网络通信,机器需要至少一个网络接口(物理接口或虚拟接口)来收发数据包;此外,如果不同子网之间要进行通信,需要路由机制。
1085 0
阿里云服务器端口号设置
阿里云服务器初级使用者可能面临的问题之一. 使用tomcat或者其他服务器软件设置端口号后,比如 一些不是默认的, mysql的 3306, mssql的1433,有时候打不开网页, 原因是没有在ecs安全组去设置这个端口号. 解决: 点击ecs下网络和安全下的安全组 在弹出的安全组中,如果没有就新建安全组,然后点击配置规则 最后如上图点击添加...或快速创建.   have fun!  将编程看作是一门艺术,而不单单是个技术。
20321 0
Docker——网络通信(五)(4)
Docker——网络通信(五)(4)
16 0
阿里云服务器怎么设置密码?怎么停机?怎么重启服务器?
如果在创建实例时没有设置密码,或者密码丢失,您可以在控制台上重新设置实例的登录密码。本文仅描述如何在 ECS 管理控制台上修改实例登录密码。
23543 0
+关注
蓝帽子小智
一朵花凋零荒芜不了整个春天,一次跌倒也荒废不了整段旅程!
646
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
JS零基础入门教程(上册)
立即下载
性能优化方法论
立即下载
手把手学习日志服务SLS,云启实验室实战指南
立即下载