从0开始学docker (每日更新 24-11-7)

docker网络基础

docker容器网络模型

容器网络项目libnetwork:docker网络架构基于一套称为容器网络模型(CNM)的接口

CNM高层架构

包括:

沙箱(Sandbox):又称沙盒,包含容器的网络栈配置,涉及容器的接口、路由表和DNS设置的管理,一个沙箱可以包含多个来自不同网络的端点

端点(Endpoint):又称接入点,用来将沙箱连接到网络。端点架构将与网络的实际连接从应用中抽象出来,这样有助于维护应用系统的可移植性,让服务无须关心如何连接网络就可以使用不同类型的网络驱动

网络(Network):CNM并没有定义OSI模型中的网络层,这里用的网络可以有Linux网桥、虚拟局域网(VLAN)来实现,网络是相互连接的端点的集合

CNM驱动接口 

CNM提供了两个可插拔的且开放的接口供使用

网络驱动(Network Drivers):docker网络驱动提供网络运行的具体实现,多个网络驱动可同时用于指定的docker引擎和集群,但是每个docker网络只能通过一个网络驱动来实现

CNM网络驱动又分为两大类型:

1.本地网络驱动(Native Network Drivers):由docker引擎本身实现,并随docker提供,这类驱动又有多种驱动可供选择,以支持不同的功能

2.远程网络驱动(Remote Network Drivers):由社区或其他供应商提供,可用于与现有的软件或者硬件环境进行集成,用户也可以创建自己的网络驱动来满足各种需求

IPAM(IP地址管理)驱动:docker有一个内置的IP地址管理驱动,如果没有明确指定,它会为网络和端点提供默认的子网或IP地址,IP地址也可以通过网络、容器和服务创建的指令来手动指派

docker本地网络驱动

docker本地网络驱动作为docker引擎的一部分,不需要任何额外模块,就可以通过docker network命令来调用

bridge:桥接网络,这是默认的网络驱动程序,创建容器时若不指定驱动程序就会使用这种网络类型,该驱动在docker主机上创建Linux网桥,默认情况下,在同一个网桥上的容器都可以相互通信,从外部访问容器也可以通过该驱动来设置。当应用程序在需要与之通信的独立容器中运行时,通常会使用桥接网络

host:主机网络,通过该驱动容器可以使用使用主机的网络栈,由于没有名称空间隔离,主机上的所有接口都可以直接被容器使用,独立容器由于移除容器和docker主机之间的网络隔离,可以直接使用主机的网络

overlay:该驱动组合使用本地Linux桥接网络和VxLAN(virtual extensible LAN)技术,在物理网络架构之上叠加一个容器之间的连接,将多个docker守护进程连接到一起,并使Swarm集群服务之间能够相互通信,还可以使用它来实现Swarm集群服务和独立容器之间的通信,或者不同docker守护进程上的两个独立容器之间的通信

macvlan:该驱动使用桥接模式建立容器接口和主机接口之间的连接,为容器提供在物理网络中可路由的IP地址

none:表示关闭容器的所有网络连接,该驱动让容器具有属于自己的网络栈和网络名称空间,但不在容器中配置网络接口

网络作用域

网络作用域可以是local(本地)或swarm(集群)

local作用域仅在docker主机范围内提供连接和网络服务

swarm作用域则提供跨swarm集群的连接和网络服务

swarm作用域网络在整个集群中有同一个网络ID,而local作用域网络在每个docker主机上具有各自唯一的网络ID

docker网络驱动

由社区或者供应商提供的远程网络驱动,与CNM兼容,每个驱动为容器提供独特的功能和网络服务

docker网络驱动选择的原则

同一个docker主机上运行的多个容器需要通信时,最好使用用户自定义的桥接网络

当网络栈不能与docker主机隔离,而容器的其他方面需要被隔离时,最好选择主机网络

不同docker主机上运行的容器需要通信,或者多个应用通过swarm集群服务一起工作时,overlay是最佳选择

从虚拟机迁移过来,或者像网络上的物理机一样,每个容器都需要有一个独立的MAC地址时,macvlan网络是最佳选择

第三方网络插件适用于将docker与专用网络栈进行集成

Linux网络基础 

docker用于实现本地CNM网络驱动的Linux网络模块,包括:

Linux网桥:Linux网桥是docker的bridge模式的底层实现

网络名称空间:Linux网络名称空间是 内核中的一个被隔离的网络栈,拥有自己的网络接口、路由和防火墙规则,用于隔离容器。网络名称空间可以确保在同一主机上的两个容器之间不能相互通信,甚至与主机本身也不能通信,除非配置为通过docker进行网络连接

veth对:要实现网络通信,至少需要一个网络接口来收发数据包,docker在本地主机和容器之间分别创建一个虚拟接口,一对接口是veth对

iptables:包过滤系统

单主机与多主机的docker网络

docker run命令的网络配置用法

设置容器的网络连接

--network设置

none:不使用任何网络连接

bridge:通过veth接口连接容器到网桥(默认)

host:在容器内使用主机的网络栈

container:使用其他容器的网络栈,需要用name或者id指定

<network-name>|<network-id>:连接用户自定义的网络

设置容器的IP地址

默认情况下,docker守护进程会为容器连接的每个docker网络分配一个IP地址(地址池),因此docker守护进程可以有效充当每个容器的DHCP服务器,每个网络也都有一个默认的子网掩码和网关

docker network connect  #将现有的容器连接到另一个不同的网络

设置容器的网络接口MAC地址

--mac-address为容器指定一个MAC地址

设置容器的DSN和主机名

默认情况下,容器继承docker守护进程的DSN设置,包括/etc/hosts和/etc/resolv.conf配置文件

--dns:为容器设置DNS服务器的IP地址,可以指定多个DSN服务器,如果容器无法连接到所指定的DSN服务器的IP地址,则会自动使用Google公司提供的公共DSN服务器8.8.8.8,让容器能够解析Internet域名

--dns-search:为容器指定一个DSN搜索域,用于搜索非全称主机名

--dns-opt:为容器设置表示DNS选项及其值的键值对

--hostname:为容器指定自定义的主机名

设置容器的发布端口和连接

只能在默认的桥接模式下工作

通过docker run命令创建容器时使用-p(--publish)或-P(--publish-all)来设置对外发布的端口

--link建立容器连接(目前应尽可能使用网络驱动,而不要使用这个连接功能)

docker network命令的网络配置用法

上述的docker run启动容器时只可以连接单个网络,因为 docker run 命令的--network选项只能有一个,如果使用多个--network 选项,最后一个会覆盖之前的。不过容器运行之后,可以使用docker network connect 命令将正在运行的容器连接到多个网络。使用 docker network connect 命令连接到一个已有网络时,还可以使用--alias 选项为容器指定该网络的网络别名。docker network 是Docker 网络管理命令,其基本用法如下:

docker network COMMAND

其中,COMMAND 是子命令,用于完成具体的网络管理任务。常用的 docker network命令列举如下:

docker network conmect:将容器连接到指定的网络。

docker network create:创建一个网络

docker network disconnected:断开容器与指定网络的连接

docker network inspect:显示一个或多个网络的详细信息

docker network ls:显示网络列表

docker network prune:删除所有未使用的网络

docker network rm:删除一个或多个网络
 

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

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

相关文章

Linux学习笔记之组管理和权限管理

组管理 文件/目录 所有者 一般文件所有者是文件的创建者&#xff0c;谁创建了该文件&#xff0c;就自然成为该文件的所有者 ls -ahl &#xff08;查看文件的所有者&#xff09; chown 用户名 文件名 &#xff08;修改文件所有者&#xff09; 文件/目录 所在组 当某个用户…

MySQL 中的索引下推功能

看到索引&#xff0c;应该大家都可以联想到这个是和查询效率有关系的&#xff0c;既然有这个功能&#xff0c;那么那句古话说的好啊&#xff1a;存在即合理。那么这个就是说有了这个功能&#xff0c;可以提升查询效率。 什么是索引下推 我们先有一个大概的理解&#xff1a;在…

CSP/信奥赛C++语法基础刷题训练(1):洛谷P5715 :三位数排序

CSP/信奥赛C语法基础刷题训练&#xff08;1&#xff09;&#xff1a;洛谷P5715 &#xff1a;三位数排序 题目描述 给出三个整数 a , b , c ( 0 ≤ a , b , c ≤ 100 ) a,b,c(0\le a,b,c \le 100) a,b,c(0≤a,b,c≤100)&#xff0c;要求把这三位整数从小到大排序。 输入格式 …

准确--FastDFS快速单节点部署

FastDFS单节点部署 1. 系统准备 # 查看操作系统信息&#xff08;适用于麒麟V10&#xff09; cat /etc/os-release# 安装必要的软件包 yum -y install gcc gcc-c perl zlib-devel unzip2. 准备 FastDFS 环境 cd /usr/local/fastdfs# 下载必要包&#xff08;若有访问限制&…

国标GB28181视频平台EasyCVR私有化部署视频平台对接监控录像机NVR时,录像机“资源不足”是什么原因?

EasyCVR视频融合云平台&#xff0c;是TSINGSEE青犀视频“云边端”架构体系中的“云平台”系列之一&#xff0c;是一款针对大中型项目设计的跨区域、网络化、视频监控综合管理系统平台&#xff0c;通过接入视频监控设备及视频平台&#xff0c;实现视频数据的集中汇聚、融合管理、…

【智谱开放平台-注册/登录安全分析报告】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

计算机新手练级攻略——如何搜索问题

目录 计算机学生新手练级攻略——如何搜索问题1.明确搜索意图2.使用精确关键词3.使用专业引擎搜索4.利用好技术社区1. Stack Overflow2. GitHub3. IEEE Xplore4. DBLP 5.使用代码搜索工具1. GitHub 代码搜索2. Stack Overflow 代码搜索3. Papers with Code4. IEEE Xplore 6.查阅…

【C++】详细介绍模版进阶,细节满满

目录 一、非类型模版参数&#xff1a; 1、介绍&#xff1a; 2、使用&#xff1a; 3、注意&#xff1a; 4、应用 二、模版特化 &#xff08;一&#xff09;、概念 &#xff08;二&#xff09;、函数模版特化 1、步骤&#xff1a; 2、举例&#xff1a; 3、不建议使用函…

动态规划---解决多段图问题

ok 小伙伴们&#xff0c;我现在有点小小的红温&#xff0c;有点毛躁。 怎么解决多段图问题呢&#xff1f;求取最短路径有多种方法可取。 家人们&#xff0c;毫无思绪可言……………………………… 要实现动态规划&#xff0c;条件&#xff1a;子问题重叠度较高&#xff0c;并…

JMeter基础篇

目录 总目录&#xff1a; 一、JMeter简介&#xff1a; -用途&#xff1a; -优缺点&#xff1a; 二、JMeter安装&#xff1a; 三、项目简介&#xff1a; -学生管理系统&#xff1a; -API接口清单&#xff1a; 查询&#xff1a; 新增&#xff1a; 更新&#xff1a; 删…

Elasticsearch中什么是倒排索引?

倒排索引&#xff08;Inverted Index&#xff09;是一种索引数据结构&#xff0c;它在信息检索系统中被广泛使用&#xff0c;特别是在全文搜索引擎中。倒排索引允许系统快速检索包含给定单词的文档列表。它是文档内容&#xff08;如文本&#xff09;与其存储位置之间的映射&…

【Python特征工程系列】利用SHAP进行特征重要性分析-XGB模型为例(案例+源码)

这是我的第374篇原创文章。 一、引言 SHAP有多种实现方式&#xff0c;每种方式都适用于特定的模型类型&#xff0c;可以实现更快的逼近。 TreeExplainer :TreeExplainer专为树集合方法开发&#xff0c;如XGBoost&#xff0c;LightGBM或CatBoost。 DeepExplainer :DeepExplain…

C++数据结构算法学习

C ,orient(面向) object , object entity(实体) Visible(可见的) or invisible(不可见) 变量用来保存数据 objects attribute(属性) services(服务) C STL 容器 vector, list&#xff08;&#xff09; vector底层是数组&#xff0c;类似双向链表和list底层 map/s…

ELK-Logstash配置

文章目录 一、什么是Logstash、有什么用&#xff1f;什么是 Logstash&#xff1f;Logstash 的主要特点&#xff1a;Logstash 的用途&#xff1a; 二、Logstash的安装与基本配置事先要安装Java的环境&#xff1f;Logstash 安装Debian/UbuntuRed Hat/CentOSmacOS&#xff08;使用…

R语言机器学习与临床预测模型69--机器学习模型解释利器:SHAP

R小盐准备介绍R语言机器学习与预测模型的学习笔记&#xff0c; 快来收藏关注【科研私家菜】 01 机器学习的可解释性 对于集成学习方法&#xff0c;效果虽好&#xff0c;但一直无法解决可解释性的问题。我们知道一个xgboost或lightgbm模型&#xff0c;是由N棵树组成&#xff0c;…

Vue自定义指令详解——以若依框架中封装指令为例分析

自定义指令 在Vue.js中&#xff0c;自定义指令提供了一种非常灵活的方式来扩展Vue的功能。以下是对Vue中自定义指令的详细解释&#xff1a; 一、自定义指令的基本概念 自定义指令允许开发者直接对DOM元素进行低层次操作&#xff0c;而无需编写大量的模板或者JavaScript代码。…

sql server启用远程连接与修改默认端口

一&#xff0c;数据库右键属性 二&#xff0c;sa账号状态属性启用 三&#xff0c;SQL Server配置管理器, 点击SQL Server 服务选项&#xff0c;确定SQL Server是正在运行的。 四&#xff0c;手动修改数据库的连接端口 1&#xff09;确保启用 2)修改默认端口 3)客户端IP改为一…

吴恩达机器学习笔记(3)

吴恩达机器学习&#xff08;3&#xff09; tensorflow实现 用 TensorFlow 实现神经网络 以下是一个完整的代码示例&#xff0c;展示如何使用 TensorFlow 和 Keras 构建和训练一个简单的神经网络来处理 MNIST 数据集&#xff1a; import tensorflow as tf from tensorflow.k…

【入门篇】A+B Problem——多语言版

AB Problem 跳转 题目分析&#xff1a; 这个题目要求输入两个整数 a 和 b&#xff0c;然后输出它们的和。需要注意的是 a 和 b 的绝对值都不超过 10^9。此外&#xff0c;题目中提到了 Pascal 使用 integer 类型可能会爆掉&#xff0c;说明需要使用更大范围的数据类型来处理这…

Matlab实现鹈鹕优化算法(POA)求解路径规划问题

目录 1.内容介绍 2.部分代码 3.实验结果 4.内容获取 1内容介绍 鹈鹕优化算法&#xff08;POA&#xff09;是一种受自然界鹈鹕捕食行为启发的优化算法。该算法通过模拟鹈鹕群体在寻找食物时的协作行为&#xff0c;如群飞、潜水和捕鱼等&#xff0c;来探索问题的最优解。POA因其…