Docker技术基础梳理 - Docker网络管理

为什么需要容器的网络管理?

容器的网络默认与宿主机、与其他容器相互隔离,且容器中可以运行一些网络应用,比如nginx、web应用、数据库等,如果需要让外部也可以访问这些容器中运行的网络应用,那么就需要配置网络来实现。

同样的,不同需求下,容器与宿主机的通信有不同的业务状态这时候就需要容器网络管理以达成管理不同业务下相关的网络配置。

Docker中的网络驱动模式有那些?

bridge network(网桥)模式:默认的网络模式,类似虚拟机的nat模式

host network(主机)模式:容器与宿主机之间的网络无隔离,即容器直接使用宿主机网络

none network模式:容器禁用所有网络

overlay network(覆盖)模式:利用vxlan实现的bridge模式

macvlan network模式:容器具备MAC地址,使其在外部看来是一台真实的网络设备

Docker网络管理命令浅析
查看网络(docker network ls)

命令格式: docker network ls [参数]

常用参数:

-q 只显示网络对象的ID

复制

注意: docker安装之后,会自动创建bridge、host、none三种网络驱动。

创建网络(docker network create)

命令格式:docker network create [参数] 网络

常用参数:

-d 指定网络的驱动,不指定默认为bridge
-- subnet 指定子网网段(192.168.0.0/16)
-- ip-range 指定容器的IP范围
-- gateway 子网的网

复制

注意:

  • 创建网络部分参数,涉及到网络工程师相关的知识,这里不做详细介绍有需要可以参考「计算机网络」这本书,内有详解。
  • host、none模式的网络只能存在一个,再次创建会报错。
  • overlay网络创建依赖于docker swarm(集群负载均衡)服务
网络删除(docker network rm)

删除一个或多个网络

命令格式:docker network rm 网络[网络..]

查看网络详细信息(docker network inspect)

命令格式:

docker network inspect [参数] 网络

docker inspect [参数] 网络

常用参数:

-f 根据format输出结果

复制

使用网络(docker run)

命令格式:docker run/create --network 网络

注意:默认情况下,docker创建或启动容器时,会默认使用名为bridge的网络

网络连接与断开(docker network connect /disconnect)

命令格式:

docker network connect/disconnect [参数] 网络 容器

常用参数:

-f 强制断开连接

复制

Docker网络模式简介
bridge网络模式
  1. bridge网络模式的特点:
  • 宿主机上需要单独的bridge网卡,如默认docker默认创建的docker0。
  • 容器之间、容器与主机之间的网络通信,是借助为每一个容器生成的一对veth pair虚拟网络设备对,进行通信的。一个在容器上,另一个在宿主机上。(这是网桥)
  • 每创建一个基于bridge网络的容器,都会自动在宿主机上创建一个veth**虚拟网络设备。 外部无法直接访问容器。需要建立端口映射才能访问。(可以理解为网卡)
  • 容器借由veth虚拟设备通过如docker0这种bridge网络设备进行通信。
  • 每一容器具有单独的IP
  • bridge网络模式下宿主机与容器服务使用的端口可以重复

bridge原理示意图

  1. bridge网络模式下的端口映射 根据上面关于bridge的特点我们可以知道访问bridge网络模式的设备,需要端口映射。

端口映射的命令格式:docker run/create -P/-p

命令参数:

-P 将容器内部所有暴露端口进行随机映射
-p 手动指定端口映射 (-p [宿主机IP] : [宿主机端口] : 容器端口)

复制

关于-p参数的举例:

-p ::80 将容器的80端口随机映射到宿主机的随机IP上
-p :8000:6379 将容器的6379端口映射到宿主机的任意IP的8000端口上

复制

host网络模式

host网络模式的特点:

  • 容器完全共享宿主机的网络,网络没有隔离。宿主机的网络就是容器的网络。
  • 容器、主机上的应用所使用的端口不能重复。
  • 外部可以直接访问容器,不需要端口映射
  • 容器IP就是宿主机的IP

host网络模式示意图

除了普通的host网络模式外,同样还有特殊版本的host网络模式(container网络模式)。

container网络模式的特点:

其实就是容器共享其他容器的网络,相当于该容器,在网络层面上,将其他容器作为“主机”。它们之间的网络没有隔离。

container网络模式

container网络模式的使用:

docker run/create --network container:容器

none、overlay与macvlan网络模式

none网络模式的特点:

  • 容器上没有网络,也无需任何网络设备
  • 如果需要使用网络,需要用户自行安装与配置

overlay网络模式的特点:

  • overlay网络模式实现方案有很多种,在Docker自身集成了一种,基于VXLAN隧道技术实现
  • overlay网络主要用于实现跨主机容器之间的通信

macvlan网络模式的特点:

  • macvlan的主要特点就是通信直接基于mac地址进行转发
  • 在macvlan中宿主机担任的角色是一台二层交换机,docker会维护一张mac地址表,当宿主机收到数据包时,直接根据mac地址找到对应的容器
  • 而在容器内部互相通信的时候,容器直接使用IP互通,所以每个容器对于外面的网络都是一台真实的网络设备
总结

这次文章主要复习了docker的网络管理的内容,其中host,bridge,container是主要的复习内容,且在三种网络模式中建议优先选用host网络模式,其使用性能最优。

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

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

相关文章

thinkphp连接数据库mysql 报错问题

第一 看报错日志php如果是下面这个报错的话 就是mysql 数据库没有验证连接 ​​​​​​​[2023-12-13T09:57:0108:00][error] [10501]SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client 我们就可以去mysql 的文件检查 验证身份 使…

量子芯片技术:未来的计算革命

量子芯片技术:未来的计算革命 一、引言 随着科技的不断发展,人类正在进入一个全新的技术时代,即量子时代。量子芯片技术作为这个时代的重要代表,正逐渐改变我们对计算和信息处理的理解。本文将深入探讨量子芯片技术的基本原理、…

【概率方法】重要性采样

从一个极简分布出发 假设我们有一个关于随机变量 X X X 的函数 f ( X ) f(X) f(X),满足如下分布 p ( X ) p(X) p(X)0.90.1 f ( X ) f(X) f(X)0.10.9 如果我们要对 f ( X ) f(X) f(X) 的期望 E p [ f ( X ) ] \mathbb{E}_p[f(X)] Ep​[f(X)] 进行估计&#xff0…

数据无效:问题和解决方案的分析

一、说明 在数字时代,数据已成为企业、组织和个人的基本资源。然而,在浩瀚的数据海洋中,困扰数据分析的一个常见问题是存在空值或缺失数据。数据无效是指某些数据字段中缺少信息,这在根据该数据进行分析和决策时可能会导致重大问题…

【计算机视觉】SIFT

在边缘提取的时候,用高斯一阶导对信号进行卷积,响应值最大的就是边界如果用高斯二阶导对信号进行卷积,0点就是边界点(二阶导等于0的点,对应一阶导的极值点) 如果用高斯二阶导在不同的信号上进行卷积&#x…

JS基础之作用域链

JS基础之作用域链 作用域链作用域链函数创建函数激活总结 作用域链 当JavaScript代码执行一段可执行的代码(execution code)时,会创建对应的执行上下文(execution context)。 对于每个执行上下文,都有三个重…

Linux 安装图形界面 “startx”

———————————————— 报错,如下: bash :startx command not found ———————————————— 解决方法: 1.先安装 — X Windows System,输入以下命令: yum groupinstall “X Window System”…

【干货分享】KingIOServer与三菱PLC的通讯的应用案例

哈喽,大家好,我是雷工! 最近一个项目涉及用KingIOServer采集三菱PLC数据,特记录通讯过程方便备忘。 一、版本说明: 1、KingIOServer版本:3.7SP2 2、PLC型号:Q03UDV 和Q03UDE自带以太网网口。…

redis:一、面试题常见分类+缓存穿透的定义、解决方案、布隆过滤器的原理和误判现象、面试回答模板

redis面试题常见分类 缓存穿透 定义 缓存穿透是一种现象,引发这种现象的原因大概率是遭到了恶意攻击。具体就是查询一个一定不存在的数据,mysql查询不到数据也不会直接写入缓存,就会导致这个数据的每次请求都需要查DB,数据库压力…

人工智能导论习题集(3)

第五章:不确定性推理 题1题2题3题4题5题6题7题8 题1 题2 题3 题4 题5 题6 题7 题8

基于YOLOv8深度学习的吸烟/抽烟行为检测系统【python源码+Pyqt5界面+数据集+训练代码】目标检测、深度学习实战

《博主简介》 小伙伴们好,我是阿旭。专注于人工智能、AIGC、python、计算机视觉相关分享研究。 ✌更多学习资源,可关注公-仲-hao:【阿旭算法与机器学习】,共同学习交流~ 👍感谢小伙伴们点赞、关注! 《------往期经典推…

编程应用实际场景:台球厅怎么样用电脑给客人计时,台球计时收费系统操作教程

一、前言 准确控制顾客在店内游玩的时间,从而控制店内的各项成本,并提升店内的客流量。在顾客享受计时项目的时候,可以同时添加其他食物消费,并将单据合并统一结账。软件中的会员功能可以为客户办理会员可以使用灯控器控灯&#…

C语言之基本数据类型和数

目录 算数类型和基本数据类型 基数 基数转换 由八进制数、十六进制数、二进制数向十进制数转换 由十进制数向八进制数、十六进制数、二进制数转换 二进制和十六进制的基数转换 在学习基本数据类型之前我们先来学习数。 算数类型和基本数据类型 在前面的学习中我们可以使用…

html 中vue3 的setup里调用element plus的弹窗 提示

引入Elementplus之后&#xff0c;在setup&#xff08;&#xff09;方法外面导入ElMessageBox const {ElMessageBox} ElementPlus 源码 &#xff1a; <!DOCTYPE html> <html> <head><meta charset"UTF-8"><!-- import Vue before Elemen…

外包干了3个月,技术退步明显.......

先说一下自己的情况&#xff0c;大专生&#xff0c;18年通过校招进入武汉某软件公司&#xff0c;干了接近4年的功能测试&#xff0c;今年年初&#xff0c;感觉自己不能够在这样下去了&#xff0c;长时间呆在一个舒适的环境会让一个人堕落! 而我已经在一个企业干了四年的功能测…

Web前端 ---- 【Vue】Vue路由传参(query和params)

目录 前言 为什么用路由 路由route和路由器router Vue中路由的工作原理 安装配置vue-router 使用VueRouter 多级路由 路由传参 query传参 params传参 前言 本文介绍路由相关知识路由传参 为什么用路由 为了单页面应用开发&#xff0c;只更换组件&#xff0c;不频繁刷…

【C语言】字符串函数及其模拟实现

这是最好的时代&#xff0c;这是最坏的时代&#xff0c;我们一无所有&#xff0c;我们巍然矗立 本文由睡觉待开机原创&#xff0c;未经允许不得转载。 本内容在csdn网站首发 欢迎各位点赞—评论—收藏 如果存在不足之处请评论留言&#xff0c;共同进步&#xff01; 系列文章目录…

Apache Flink(十三):Flink History Server

🏡 个人主页:IT贫道_大数据OLAP体系技术栈,Apache Doris,Clickhouse 技术-CSDN博客 🚩 私聊博主:加入大数据技术讨论群聊,获取更多大数据资料。 🔔 博主个人B栈地址:豹哥教你大数据的个人空间-豹哥教你大数据个人主页-哔哩哔哩视频 目录

[论文阅读]BEVFusion

BEVFusion BEVFusion: A Simple and Robust LiDAR-Camera Fusion Framework BEVFusion&#xff1a;简单而强大的激光雷达相机融合框架 论文网址&#xff1a;BEVFusion 论文代码&#xff1a;BEVFusion 简读论文 论文背景&#xff1a;激光雷达和摄像头是自动驾驶系统中常用的两…

【LeetCode每日一题】1904. 你完成的完整对局数

给你两个字符串 startTime 和 finishTime &#xff0c;均符合 "HH:MM" 格式&#xff0c;分别表示你 进入 和 退出 游戏的确切时间&#xff0c;请计算在整个游戏会话期间&#xff0c;你完成的 完整对局的对局数 。 如果 finishTime 早于 startTime &#xff0c;这表示…