首页 > 其他分享 >docker系列教程04---容器网络

docker系列教程04---容器网络

时间:2024-03-04 17:34:08浏览次数:25  
标签:容器 docker0 network 04 网络 --- 网卡 网桥 docker

一、Docker不启动时默认的网络情况

这里先把Docker停掉了,然后咱们ifconfig看一眼:

ifconfig

 

ens33不用多说了,lo为回环。这里可能还会有一个virbr0,在CentOS7的安装过程中如果有选择相关虚拟化的的服务安装系统后,启动网卡时会发现有一个以网桥连接的私网地址的virbr0网卡(virbr0网卡:它还有一个固定的默认IP地址192.168.122.1),是做虚拟机网桥的使用的,其作用是为连接其上的虚机网卡提供 NAT访问外网的功能。当然你也可以选择把它删了,命令如下:

yum remove libvirt-libs.x86_64

二、Docker启动时的网络情况

ifconfig

 这时候docker0这个虚拟网桥就冒出来了。 这里有一点可以稍微一下它的ip是172.17.0.1但是它的掩码是255.255.0.0也就是16。负责容器间的互联和通信以及端口映射

三、常用基本命令

查看网络

docker network ls

 创建网络默认为bridge模式

docker network create van

 查看网络数据源

docker network inspect bridge 

 

 

将正在运行的容器连接到网络

docker network connect 网络名 正在运行的容器

启动时将容器连接到网络 

docker run -itd --network=网络名 即将启动的容器

指定容器的IP地址

docker network connect --ip 10.10.10.10 网络名 容器

四、网络模式

1、bridge

为每一个容器分配、设置IP等,并将容器连接到docker0的虚拟网桥。若没有特别申明,则为默认自带一个IP以及网络设置。(一人一个)

Docker服务默认会创建一个 docker0网桥(其上有一个 docker0 内部接口),该桥接网络的名称为docker0,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。Docker默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信。可以看一眼默认的网桥名:

docker network inspect bridge | grep name

 

可以看到默认的网桥名字就叫docker0。

下面来讲讲理论:

 

 

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

2 docker run 的时候,没有指定network的话默认使用的网桥模式就是bridge,使用的就是docker0。在宿主机ifconfig,就可以看到docker0和自己create的network(后面讲)eth0,eth1,eth2……代表网卡一,网卡二,网卡三……,lo代表127.0.0.1,即localhost,inet addr用来表示网卡的IP地址

3 网桥docker0创建一对对等虚拟设备接口一个叫veth,另一个叫eth0,成对匹配。

3.1 整个宿主机的网桥模式都是docker0,类似一个交换机有一堆接口,每个接口叫veth,在本地主机和容器内分别创建一个虚拟接口,并让他们彼此联通(这样一对接口叫veth pair);

3.2 每个容器实例内部也有一块网卡,每个接口叫eth0;

3.3 docker0上面的每个veth匹配某个容器实例内部的eth0,两两配对,一一匹配。

通过上述,将宿主机上的所有容器都连接到这个内部网络上,两个容器在同一个网络下,会从这个网关下各自拿到分配的ip,此时两个容器的网络是互通的。

说白了, docker0 bridge 就相当于一个交换机。它用于把宿主机的ens33网卡和上面的容器虚拟网卡进行连接,让其可以进行联网通信。而docker0的IP地址就是上层容器的网关。上图中红框所标出的就类似于进行连接的RJ45水晶头。eth0就相当于是容器中虚拟出的网卡接口,veth相当于交换机上的接口。接下来咱们去容器实例中去看看他们的对印关系

2、host

容器不会虚拟出自己的网卡、IP等,而是使用宿主机的IP和端口。(多人一个)

 

3、none

容器有自己独立的Network namespace,但是没有进行任何的相关配置。(有,但是空的)

五、使用自定义网络

自定义网络新建时默认依旧是bridge模式,我们先来新建一个van♂的网络:

可以看到它的驱动模式默认还是bridge。

docker network create van_network

自定义网络本身就维护好了主机名和IP的对应关系,也就是IP和域名都能联通

标签:容器,docker0,network,04,网络,---,网卡,网桥,docker
From: https://www.cnblogs.com/zhengwei-cq/p/16558486.html

相关文章

  • Python-集合
    集合python中的集合(set)是由一些唯一的、不可变的对象组成的无序集合体,集合支持与数学集合中相对应的操作,一个元素在集合中只能出现一次,无论它被添加了多少次。集合是可迭代对象(iterable),可以按需增长或缩短,并且可以包含多种对象类型,集合很像一个有键无值的字典,但由于集合是无......
  • java进阶9 -「IO」
    一何为IOI/O(Input/Outpu)即输入/输出 。我们先从计算机结构的角度来解读一下I/O。 根据冯.诺依曼结构,计算机结构分为5大部分:运算器、控制器、存储器、输入设备、输出设备。输入设备(比如键盘)和输出设备(比如显示器)都属于外部设备。网卡、硬盘这种既可以属于输入设备,也可以......
  • pytnon -- 解决在excel使用pyxll-jupyter时读取excel文件出现”OSError: [Errno 22] I
     在jupyter中运行以下代码:importpandasaspddataset=pd.read_excel(r'‪D:\a.xlsx',sheet_name='Sheet1')print(dataset)出现报错信息:---------------------------------------------------------------------------OSError......
  • 道路交通安全法实施条例-学习笔记
    1.初次申领机动车号牌、行驶证的,应当向机动车所有人住所地的公安机关交通管理部门申请注册登记。 申请机动车注册登记,应当交验机动车,并提交以下证明、凭证: (一)机动车所有人的身份证明; (二)购车发票等机动车来历证明; (三)机动车整车出厂合格证明或者进口机动车进口凭证;......
  • docker构建镜像
    Howtobuildadockerimage.本项目用于学习使用docker来构建镜像。这里我们使用docker来编译我们的一个c++项目然后生成一个docker镜像,并将镜像上传到自己的docker仓库,最后使用该镜像来运行我们的项目。0.cpp源文件介绍在src文件夹下面有一个cpp文件,实现了整数的加法,我们在......
  • flask_04days
    cbv源码分析 执行流程#1app.add_url_rule('/user','user',UserView.as_view('user'))-第三个参数,放视图函数的内存地址---》UserView.as_view('user')是函数内存地址#2UserView中找类方法as_view--》返回值是一个函数内存地址-UserView中没有-MethodVi......
  • 洛谷题单指南-搜索-P2392 kkksc03考前临时抱佛脚
    原题链接:https://www.luogu.com.cn/problem/P2392解题思路:参考https://www.cnblogs.com/jcwy/p/18003097前面已经给出了二进制法的代码,这里给出DFS的代码100分代码:#include<bits/stdc++.h>usingnamespacestd;constintN=25;ints1,s2,s3,s4;inta[N],b[N],c[......
  • 19 SWERC 2022-2023 - Online Mirror (Unrated, ICPC Rules, Teams Preferred)L. Cont
    L.Controllers思路:#include<bits/stdc++.h>#defineintlonglong#definerep(i,a,b)for(inti=(a);i<=(b);++i)#definefep(i,a,b)for(inti=(a);i>=(b);--i)#define_for(i,a,b)for(inti=(a);i<(b);++i)#definepiipair&......
  • RISC-V SV39地址映射方式
    SV39地址映射PTESV39是RV64支持的虚拟地址转换方式,其虚拟地址是39bit,可以映射的物理地址是56bit,页表entry格式如下,512GB地址空间被划分为512个1GB的吉页,每个吉页被进一步划分为512个2MB的兆页,每个兆页被进一步划分为512个4KB的基页:  satpSV39页表的基地址由satp(Supervisor......
  • WIFI&蓝牙(ESP32)转CAN总线&串口TTL模块-B1-设备作为TCP客户端连接TCP服务器,实现RS48
    <p><iframename="ifd"src="https://mnifdv.cn/resource/cnblogs/ESP32_CAN"frameborder="0"scrolling="auto"width="100%"height="1500"></iframe></p>说明这节测试的是让设备连接路由器,然后设备以......