【云原生】· 一文了解docker中的网络

目录

🍒查看docker网络

🍒bridge网络

🍒none网络

🍒host网络

🍒自定义容器网络


    🦐博客主页:大虾好吃吗的博客

    🦐专栏地址:云原生专栏

        根据前面的学习,已经对docker有了一些简单的概念。这里在啰嗦一句,容器是一个独立的环境,可以理解为一个小型的linux系统(但不要把它当真正的系统),而docker的网络分为三种分别为bridge、host、none。

bridge:默认网络,可以ping通外网,但是外网无法访问内网。

host:跟本地主机host使用的同一个网络。

none:没有网络,挂载网络下的容器除了lo,没有其他网卡。

查看docker网络

docker安装时会自动在网络中创建三个网络,通过下面命令查看,默认网络是bridge。

[root@doc11 ~]# docker network ls
NETWORK ID     NAME      DRIVER    SCOPE
7d96a5075951   bridge    bridge    local
32cea9efbc61   host      host      local
4341e5f3526d   none      null      local

bridge网络

        docker安装的时候会创建一个名为docker0的linux bridge。如果不指定network,创建容器默认都挂在docker0上。

[root@doc11 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.0242c661a50d       no

        当docker0上没有任何网络设备,我们创建一个容器看看有什么变化。这里以httpd为例,没有镜像的话使用docker pull httpd下载一个。

[root@doc11 ~]# docker run -d httpd
dbd6e608e12332df931f8b010e8ea0c2404856d06b24c500bbf1bd551e590a70
[root@doc11 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
docker0         8000.0242c661a50d       no              vethd3c5074

        通过上面的命令可以看到,一个新的网络接口vethd3c5074被挂到了docker0上,vethd3c5074就是新创建容器的虚拟网卡。

none网络

        我们看一下none网络,它就是一个完全隔离的网络。对于安全性要求高且不需要联网的应用可以使用none网络,比如某个容器的唯一用途就是生成随机密码,就可以放到none网络中避免密码被窃取。

[root@doc11 ~]# docker run -it --network=none busybox
/ # ifconfig 
lo        Link encap:Local Loopback  inet addr:127.0.0.1  Mask:255.0.0.0UP LOOPBACK RUNNING  MTU:65536  Metric:1RX packets:0 errors:0 dropped:0 overruns:0 frame:0TX packets:0 errors:0 dropped:0 overruns:0 carrier:0collisions:0 txqueuelen:1000 RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
​
/ # 

host网络

        连接到host网络的容器共享docker host的网络,容器的网络配置与host完全一样。容器中可以看到host的所有网卡,hostname也是host的。

[root@doc11 ~]# docker run -it --network=host busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft foreverinet6 ::1/128 scope host valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast qlen 1000link/ether 00:0c:29:74:01:52 brd ff:ff:ff:ff:ff:ffinet 192.168.8.11/24 brd 192.168.8.255 scope global noprefixroute ens33valid_lft forever preferred_lft foreverinet6 fe80::62ba:6b5b:2f04:4aef/64 scope link noprefixroute valid_lft forever preferred_lft forever
3: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue link/ether 02:42:c6:61:a5:0d brd ff:ff:ff:ff:ff:ffinet 172.17.0.1/16 brd 172.17.255.255 scope global docker0valid_lft forever preferred_lft foreverinet6 fe80::42:c6ff:fe61:a50d/64 scope link valid_lft forever preferred_lft forever
/ # hostname
doc11
/ # 

那么host网络的使用场景是什么呢?

        直接使用host的网络最大的好处就是性能,如果容器对网络传输效率有较高的要求,可以选择host网络。当然也是有一些缺点的,比如要考虑端口冲突问题,如果host上已经使用的端口,容器内就不能使用了。

自定义容器网络

        除了上面三种网络,用户也可以根据也无需求创建user-defined网络。docker提供了三种user-defined网络驱动 :bridge,overlay和macvlan。overlay和macvlan用于创建跨主机网络。

我们通过bridge驱动创建类似bridge网络。

[root@doc11 ~]# docker network create --driver bridge my_net
ce55c3cfefb5138572dcf58a8a1a81805415543b69893f2899ba37f18c2641fb
[root@doc11 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br-ce55c3cfefb5         8000.0242c21d4aba       no
docker0         8000.0242c661a50d       no

        新增一个网桥br-ce55c3cfefb5,这里br-ce55c3cfefb5正好新建bridge网络my_net的短id。下面命令查看my_net的配置信息。

[root@doc11 ~]# docker network inspect my_net
[{"Name": "my_net","Id": "ce55c3cfefb5138572dcf58a8a1a81805415543b69893f2899ba37f18c2641fb","Created": "2023-06-19T02:46:15.02356553-04:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.18.0.0/16","Gateway": "172.18.0.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}}
]

上述172.18.0.0/16是docker自动分配的IP网段,我们可以自己指定网段。

只需要创建的时候指定--subnet和--gateway参数

[root@doc11 ~]# docker network create --driver bridge --subnet 172.66.66.0/24 --gateway 172.66.66.1 my_net2
0f463941f2aa09619d41ccde1adb96a04af9228851c7c6eea5ddd0c24b54700b
[root@doc11 ~]# docker network inspect my_net2
[{"Name": "my_net2","Id": "0f463941f2aa09619d41ccde1adb96a04af9228851c7c6eea5ddd0c24b54700b","Created": "2023-06-19T02:50:57.224944386-04:00","Scope": "local","Driver": "bridge","EnableIPv6": false,"IPAM": {"Driver": "default","Options": {},"Config": [{"Subnet": "172.66.66.0/24","Gateway": "172.66.66.1"}]},"Internal": false,"Attachable": false,"Ingress": false,"ConfigFrom": {"Network": ""},"ConfigOnly": false,"Containers": {},"Options": {},"Labels": {}}
]

        上面新建的bridge网络my_net2,网段为172.66.66.0/24,网关为172.66.66.1,网关在my_net2对应的网桥br-0f463941f2aa上面。

[root@doc11 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br-0f463941f2aa         8000.02426b2b8eb7       no
br-ce55c3cfefb5         8000.0242c21d4aba       no
docker0         8000.0242c661a50d       no
[root@doc11 ~]# ifconfig br-0f463941f2aa
br-0f463941f2aa: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500inet 172.66.66.1  netmask 255.255.255.0  broadcast 172.66.66.255ether 02:42:6b:2b:8e:b7  txqueuelen 0  (Ethernet)RX packets 0  bytes 0 (0.0 B)RX errors 0  dropped 0  overruns 0  frame 0TX packets 0  bytes 0 (0.0 B)TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

        我们来看看网络怎么使用吧,大概可以猜到想到,使用方法和上面的相同,使用--network参数指定网络。(因为使用的虚拟机环境恢复快照了,重新下载了一下busybox)

[root@doc11 ~]# docker run -it --network=my_net2 busybox
Unable to find image 'busybox:latest' locally
latest: Pulling from library/busybox
5cc84ad355aa: Pull complete 
Digest: sha256:5acba83a746c7608ed544dc1533b87c737a0b0fb730301639a0179f9344b1678
Status: Downloaded newer image for busybox:latest
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue link/ether 02:42:ac:42:42:02 brd ff:ff:ff:ff:ff:ffinet 172.66.66.2/24 brd 172.66.66.255 scope global eth0valid_lft forever preferred_lft forever
/ # 

可以看到上面的网络是172.66.66.2/24,也可以通过--ip指定一个静态ip。

[root@doc11 ~]# docker run -it --network=my_net2 --ip 172.66.66.66 busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00inet 127.0.0.1/8 scope host lovalid_lft forever preferred_lft forever
8: eth0@if9: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue link/ether 02:42:ac:42:42:42 brd ff:ff:ff:ff:ff:ffinet 172.66.66.66/24 brd 172.66.66.255 scope global eth0valid_lft forever preferred_lft forever

注:只有使用--subnet创建的网络才能指定静态ip。

                                        创作不易,支持一波,点赞,收藏,关注~

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/943.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt/C++原创项目作品精选(祖传原创/性能凶残)

00 前言说明 从事Qt开发十年有余&#xff0c;一开始是做C#.NET开发的&#xff0c;因为项目需要&#xff0c;转行做嵌入式linux开发&#xff0c;在嵌入式linux上做可视化界面开发一般首选Qt&#xff0c;当然现在可选的方案很多比如安卓&#xff0c;但是十多年前那时候板子性能低…

Heroku 部署有关 opencv 的 Django 后端应用(pdf2docx)

文章目录 场景解决方案AptfileBuildpacksDashboard 上手动构建Heroku CLI 终端构建 Requirements.txt提交改变 场景 我使用 heroku 部署了一个 Django 后端项目&#xff0c;里面使用了 pdf2docx 库进行 pdf 转 docx 这个库底层调用了 opencv 的一些操作&#xff0c;因此在部署…

服务器反向代理

反向代理作用 隐藏服务器信息 -> 保证内网的安全&#xff0c;通常将反向代理作为公网访问地址&#xff0c;web服务器是内网&#xff0c;即通过nginx配置外网访问web服务器内网 举例 百度的网址是&#xff1a;http://www.baidu.com &#xff0c; 现在我通过自己的服务器地…

手机自动化脚本-- 模拟器模拟真机环境过检测

文章目录 安装包目录结构一、安装雷电模拟器9二、新建模拟器并且初始化1. 性能设置2. 其他设置3. 当前配置三、面具1. 安装2. 面具初始化四、修改机型1. 将机型模块安装到模拟器2. 安装机型模块五、修改su问题1. 安装RE管理器2. 删除自带su文件,避免文件冲突六、下载地址额外安…

Linux中使用nmap基本使用以及扫描一组计算机的脚本

nmap扫描一组计算机的脚本 说明 Nmap&#xff08;Network Mapper&#xff09;是一个开源的网络探测和安全评估工具。它用于扫描和发现网络上的主机、端口和服务&#xff0c;以及评估网络的安全性。 Nmap具有以下主要功能&#xff1a; 主机发现&#xff1a;Nmap可以通过发送…

unity 调用C++ dll 有类和指针操作

这个在之前unity 调用C dll 操作升级套娃函数调用_天人合一peng的博客-CSDN博客的基础上&#xff0c;但实事时类相互嵌套&#xff0c;非常不好处理。 1 测试直接将main()生成dll程序能运行不。 发现是可以的。 2 那就是想方法把对象或指针的操作的下一级函数直接写到main里面&…

Linux 学习总结(93)—— 实用 shell 脚本汇总

1、检测两台服务器指定目录下的文件一致性 #!/bin/bash ###################################### 检测两台服务器指定目录下的文件一致性 ##################################### #通过对比两台服务器上文件的md5值&#xff0c;达到检测一致性的目的 dir/data/web …

STM32基础知识点总结

一、基础知识点 1、课程体系介绍 单片机概述arm体系结构STM32开发环境搭建 STM32-GPIO编程-点亮世界的那盏灯 STM32-USART串口应用SPI液晶屏 STM32-中断系统 STM32-时钟系统 STM32-ADC DMA 温湿度传感器-DHT11 2.如何学习单片机课程 多听理论、多理解、有问题及时提问 自己多…

ChatGPT助力校招----面试问题分享(十一)

1 ChatGPT每日一题&#xff1a;PCB布线&#xff0c;高速信号线走直角的后果 问题&#xff1a;PCB布线&#xff0c;高速信号线走直角的后果 ChatGPT&#xff1a;对于高速信号线来说&#xff0c;最好避免使用直角布线。直角布线会引入反射和信号损耗&#xff0c;从而导致信号完…

【Python】selenium项目实战:从12306网站获取特定时间段二等座有票的车次

文章目录 一、项目背景二、页面查找1、查询条件2、定位有二等座的元素3、定位有二等座的车次信息4、CtrlF检验xpath查找的车次 三、代码实现 一、项目背景 工具&#xff1a; pythonpycharmselenium 12306网址&#xff1a; https://kyfw.12306.cn/otn/leftTicket/init?linktyp…

【云原生】Docker跨主机网络Overlay与Macvlan的区别

跨主机网络通信解决方案 docker原生的overlay和macvlan 第三方的flannel&#xff0c;weave&#xff0c;calico 1.overlay网络 在Docker中&#xff0c;Overlay网络是一种容器网络驱动程序&#xff0c;它允许在多个Docker主机上创建一个虚拟网络&#xff0c;使得容器可以通过这…

氢辉能源|[4GW]质子交换膜产线投产发布会暨[3MW]PEM电解槽正式交付

2023年7月12日下午&#xff0c;氢辉能源&#xff08;深圳&#xff09;有限公司&#xff08;以下简称氢辉能源&#xff09;质子交换膜产线投产发布会暨12台50标方3MW电解槽交付仪式在深圳市龙岗区国际低碳城成功举办。 此外&#xff0c;氢辉能源与远景能源、润世华集团、宏洲新能…

【MySQL】MySQL里程碑

个人主页&#xff1a;【&#x1f60a;个人主页】 系列专栏&#xff1a;【❤️MySQL】 文章目录 时间表从产品特性的角度梳理其发展过程中了解MySQL里程碑事件 时间表 从产品特性的角度梳理其发展过程中了解MySQL里程碑事件 1995年&#xff0c;MySQL 1.0发布&#xff0c;仅供内…

2.4 文件与文件系统

文章目录 2.4 文件与文件系统介绍文件的概念文件系统文件操作文件权限和所有权文件路径文件系统管理总结 2.4 文件与文件系统 介绍 在运维工作中&#xff0c;文件和文件系统是非常重要的概念。本文将介绍文件和文件系统的基本概念&#xff0c;以及在运维中常见的文件操作和管…

MongoDB负载均衡集群监控

对负载均衡的集群监控&#xff0c;不仅仅集中在对集群所有的资源、服务等进行监控&#xff0c;还要兼顾整体逻辑。以MongoDB高可用负载均衡集群为例&#xff0c;对逻辑层面的监控&#xff0c;就是模拟用户行为&#xff0c;访问集群数据&#xff0c;判断运行状态是否正常。 Mong…

opencv 图像基础处理_灰度图像

opencv 学习2_灰度图像 二值图像表示起来简单方便&#xff0c;但是因为其仅有黑白两种颜色&#xff0c;所表示的图像不够细腻。如果想要表现更多的细节&#xff0c;就需要使用更多的颜色。例如&#xff0c;图 2-3 中的 lena 图像是一幅灰度图像&#xff0c; 它采用了更多的数值…

第八十五回:如何使用字体图标

文章目录 概念介绍使用方法示例代码 我们在上一章回中介绍了Icon这种Widget&#xff0c;本章回中将介绍 如何使用字体图标。闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 本章回中介绍的字体图标是指Icon中使用特殊的字体来充当图标&#xff0c;字体图标可以看作…

极简websocket实时聊天

在线体验链接&#xff1a;http://47.242.53.5:888/ 项目git地址&#xff1a;https://gitee.com/xiao-ming-1999/websocket-server.git 实现步骤&#xff1a; 在前端创建WebSocket连接&#xff1a;在Vue组件中使用vue-native-websocket库或原生的WebSocket API来创建WebSocket…

简单线性回归评估指标+R Squared

使得每一个数据集尽可能的小 均方误差MSE&#xff1a;&#xff08;平方和取平均值&#xff09; 均方根误差RMSE&#xff1a;&#xff08;平方和取平均值开根号&#xff09;&#xff1a;平均误差值 平均绝对误差MAE&#xff1a;&#xff08;绝对值取平均&#xff09;&#xff1a…

Vue3通透教程【十八】TS为组件的props标注类型

文章目录 &#x1f31f; 写在前面&#x1f31f; 回顾defineProps的基础写法&#x1f31f; defineProps的TS写法&#x1f31f; withDefaults方法&#x1f31f; 拓展&#x1f31f; 写在最后 &#x1f31f; 写在前面 专栏介绍&#xff1a; 凉哥作为 Vue 的忠实 粉丝输出过大量的 …