Docker学习笔记(四)单主机网络

简介

  Docker从容器中抽象除出了底层的主机连接网络,使得程序不用关心运行时的环境。连接到Docker网络的容器将获得唯一的地址,其他连接到同一Docker网络的容器也可以根据该IP找到目标容器并发送消息。
  但是容器内运行的软件没法方便的确定主机IP地址,从而阻止了容器将服务端点告知容器网络以外的服务
  在Docker中,网络和卷一样,拥有自己的生命周期,我们可以通过docker network来直接定义和管理网络。

网络类型与网络范围

网络类型

  默认情况下,Docker包括三种网络:
在这里插入图片描述

  1. bridge:桥接网络。驱动-bridge;Docker的默认网络,它为一台计算机上运行的所有容器提供容器间的网络连接能力。
      需要注意的:默认的bridge为了兼容旧版的Docker,无法利用新版本的优点,如服务发现、负载均衡等,因此,尽量创建自己的桥接网络。
  2. host:主机网络。驱动-host;Docker不会为连接host网络的容器创建特殊的网络命名空间或资源。共享 Docker host 的网络栈,容器的网络配置 与 host 完全一样。
      host网络上的容器与主机上的网络交互方式,就像未容器化的进程与主机的网络交互一样。对主机上的网络设施和接口也有完全的访问权限。
      但需要注意的是,host网络会有端口号冲突的问题。
  3. none:驱动-null;表示与外界完全隔离,连接none的容器自身外部没有任何网络连接。

网络范围

  Docker网络的范围有三种类型:
    1) 本地(local):指网络被限制在所在的计算机上。(默认类型)
    2) 全局(global):表示在集群的每个节点上都创建网络,但不在节点之间转发消息。
    3) 集群(swarm):指网络无缝的跨接Docker集群中的所有主机。使得容器能够跨多个物理或虚拟机进行通信。
创建一个网络的基础命令为:

docker network create \
--dirver [驱动类型] \
--scope [网络范围] \
--label project=[标签元数据] \ #方便资源识别
--attachable \ #将网络标记为可连接的,可以随时对容器与网络进行连接或分离
--subnet 10.0.1.0/24 \#为网络定义子网掩码
--ip-range 10.0.1.128/25 \#设置可分配的网络IP地址范围
[网络名]

host网络只允许创建一个

NodePort publishing 节点端口发布

  Docker容器网络都是关于容器之间的简单连接和路由,即使是桥接网络上的容器,运行Docker的宿主机外外部直接路由到。因此要将容器中运行的服务与外部网络客户端连接起来,需要执行额外的步骤。
  NodePort publishing是用来匹配Docker和其他容器生态系统项目的专用术语,通过-p--publish列表选项,对容器的端口和主机的端口进行映射,使流经主机指定端口的流量转发到容器的端口
命令示例:

docker run -p [主机端口号]:[容器端口号]/[端口协议]
docker run -p [主机端口号]:[容器端口号]
docker run -p [容器端口号]

  最后一个命令只指定了容器端口号,这样做会使主机随机选择一个端口号作为发送端口,这种用法可以避免端口冲突问题。这时,我们可以通过docker port命令进行端口映射查找到被分配的主机端口。

docker port [容器名] [容器端口号]

容器网络的注意事项与定制化

没有防火墙或网络策略

  Docker容器网络不再提供容器之间的访问控制或防火墙机制。同一容器网络上的容器具有相互无限制的网络访问权限。只有应用程序级别的身份验证和授权管理才能在同一网络上相互保护容器。

自定义DNS配置

  域名系统(DNS)是用于将主机名映射到IP地址的协议。通过这种映射,客户端可以从对特定主机IP的依赖关系中解耦,而依赖于使用已知名称引用任何主机。
1)dns配置
  首先,通过--hostname选项,可以设置新容器的主机名。再通过nslookup将容器主机名映射到容器的桥接IP地址。
命令:

docker run \
--hostname [容器主机名]
nslookup [容器主机名]
...

2)为容器指定一到多个DNS服务器
  由于其他服务器不知道指定容器的主机名,使得主机名的用途有限。如果使用外部dns服务器,则可以共享这些主机名。并且,最好使用特定的DNS服务器来保持服务的一致性。
  需要注意是:
    1.DNS服务器地址必须是IP地址。
    2.可以多次设施--dns选项来访问多个DNS服务器。
    3.在容器运行时停止Docker服务,并在重启Docker服务时通过编辑==/etc/docker/daemon.json==文件,并添加或修改dns字段,设置全局默认的DNS服务器,容器将仍使用旧的DNS设置,只有重启这些容器,更改才会生效。
命令:

docker run \
--dns 8.8.8.8
nslookup docker.com #解析docker.com 的IP地址
...

3)–dns-search
  --dns-search这个选项允许指定DNS搜索域名,类似于默认的主机名后缀。指定搜索域名后,DNS主机名后只要不包括顶级域名(如.com/.net),就会被附加指定的搜说域名,然后进行搜索。该命令只有在创建容器时设置才能生效。
示例:

docker run \
--dns-search docker.com
nslookup hub
···

  以上命令将解析名为hub.docker.com的主机的IP地址。我们也可以通过操作==/etc/resolv.cong(配置通用名称解析库的文件)来让配置生效。
4)重载DNS系统
  --add-host选项可以为自定义的IP地址和主机名提供映射关系。可以被多次指定,但要注意的是,在Docker引擎启动时无法将--add-host选项设置为Docker引擎的默认值。
  通过该选项,①将目标主机名映射到已知的IP地址,可以有效的阻断目标主机与外界的连接。②可以将主机设为代理,从而为特定目的地址路由流量,比如通过安全通道路由不安全的流量。
  所有自定义映射关系都记录在容器的==/etc/host==文件中。
使用命令:

docker run \
--add-host [主机名]:[IP地址] \
...

总结:如果DNS是更改出站流量的最佳工具,那么防火墙和网络拓扑结构就是控制入站流量的最佳工具。

外部化网络管理

  现在更多倾向于在none环境中创建容器,然后使用一些容器管理工具来创建和管理容器网络接口、管理节点端口映射等系统集成工作。(类如Kubernetes),将网络管理外部化
  当采用外部化网络管理这种方式时,Docker仍然负责为容器创建网络命名空间,但不会创建或管理任何网络接口。并且,如果某些容器网络的管理实现了外部化,而另一些没有,那么内置的服务发现机制将无法将后者的容器的流量路由到前者。因此,在实际应用中,我们应尽量避免这种混合的网络环境。

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

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

相关文章

SEGGERS实时系统embOS推出Linux端模拟器

SEGGER 发布了两个新的 embOS 仿真模拟器:embOS Sim Linux 和 embOS-MPU Sim Linux。 通过模拟 Linux 主机系统上的硬件,取代物理硬件,为开发人员提供了一种无缝的方式来构建原型和测试应用程序。 embOS Sim Linux 端口支持 32 位和 64 位系…

网络安全产品认证证书大全(持续更新...)

文章目录 一、引言二、《计算机信息系统安全专用产品销售许可证》2.1 背景2.2 法律法规依据2.3 检测机构2.4 检测依据2.5 认证流程2.6 证书样本 三、《网络关键设备和网络安全专用产品安全认证证书》3.1 背景3.2 法律法规依据3.3 检测机构3.4安全认证和安全检测依据标准3.5 认证…

费用管理系统如何优化企业年报台账归集流程?

随着企业规模的扩大和业务的复杂化,财务管理工作的重要性日益凸显。其中,年报台账归集作为财务管理的重要环节,不仅关乎企业财务数据的准确性和完整性,更直接影响到企业决策的科学性和合理性。面对海量的财务数据和复杂的归集要求…

下载 llama2-7b-hf 全流程【小白踩坑记录】

1、文件转换 在官网 https://ai.meta.com/llama/ 申请一个账号,选择要下载的模型,会收到一个邮件,邮件中介绍了下载方法 执行命令 git clone https://github.com/meta-llama/llama.git​ ,然后执行 llama/download.sh&#xff0c…

[数据集][目标检测]车窗状态检测车窗开关检测数据集VOC+YOLO格式299张3类别

数据集格式:Pascal VOC格式YOLO格式(不包含分割路径的txt文件,仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数):299 标注数量(xml文件个数):299 标注数量(txt文件个数):299 标注类别…

【零成本】七日杀 服务器搭建 异地联机 无需公网IP、服务器

主要内容 什么是七日杀 搭建前需要准备什么 详细步骤 1.Steam中下载七日杀服务器工具 2.修改七日杀服务配置文件 3.启动七日杀服务器应用 4.运行 MoleSDN 进行异地联机 5.小伙伴打开游戏加入 鼠鼠的服务器 什么是七日杀 《七日杀》是一款沙盒生存恐怖游戏,…

海外云手机怎么实现TikTok多账号防关联?

TikTok多账号运营,作为众多用户选择的引流策略,旨在通过多账号的协同作用,更快速、高效地推动主账号的流量增长。然而,这一策略面临着一个关键难题——TikTok账号防关联。本文将简要介绍海外云手机如何解决这一问题。 在TikTok多账…

携手科大讯飞丨云衔科技为企业提供全栈AI技术解决方案

作为智能时代的核心驱动力,人工智能不仅重塑了传统行业的面貌,更开辟了全新的经济增长点。科大讯飞以其深厚的技术底蕴和创新能力,持续引领着人工智能领域的发展潮流。云衔科技作为科大讯飞开放平台的AI技术产品线合作伙伴代理商,…

c# 开发串口调试助手 Visual Studio 2019

一、串口调试工具作用 串口调试助手是用于在开发、测试和调试串口通信应用程序时进行串口数据的监视和交互的工具。它通常具有以下功能: 1. 串口参数设置:允许用户设置串口的波特率、数据位、校验位、停止位等参数。 2. 串口连接管理:允许用…

CAD中的spline详解

从dxf文件中提取点、直线、圆、弧等元素比较简单,但是Spline的处理比较麻烦。经过一段时间探索总结一下成果。 一、基本公式 1.有理样条曲线 查阅一些资料,认为CAD中使用的Spline 是非均匀有理样条曲线。实测CAD中每个控制点权重都是-1,所以…

物联网行业中小型嵌入式文件系统详解以及使用

一 概述 在嵌入式系统使用过程中,为了方便数据的存储,我们加入了串行的外部Flash(SPI通信)。在使用存储的时候,如需要记录一个字符串“奇迹物联Bloom OS”,我们可以把这些文字转化成 ASCII 码,存储在数组中&#xff0c…

WPF DataGrid 列表中,DataGrid.Columns 列根据不同的值显示不同内容

需求&#xff1a;在WPF DataGrid 控件中&#xff0c;有以下列&#xff0c;绑定了一个LogType&#xff0c;值分别是0,1,2&#xff0c;根据不同的值&#xff0c;显示不同的内容以及背景 <DataGrid ItemsSource"{Binding EventLog}"><DataGrid.Columns><…

Vue路由二(嵌套多级路由、路由query传参、路由命名、路由params传参、props配置、<router-link>的replace属性)

目录 1. 嵌套(多级)路由2. 路由query传参3. 路由命名4. 路由params传参5. props配置6. <router-link>的replace属性 1. 嵌套(多级)路由 pages/Car.vue <template><ul><li>car1</li><li>car2</li><li>car3</li></ul…

postgresql-patroni高可用安装部署

简介 patronietcd,算是目前比较主流的PG高可用搭配了。 patroni都出4.0版本了,一直没时间&#xff0c;断断续续写了好久&#xff0c;最近有人问到&#xff0c;那就当作一个笔记发表吧&#xff0c;自行搭建一个测试库做测试吧。来来回回改了好几遍。文中可能不妨地方没有同步修…

Linux使用Clash,clash-for-linux

文件下载 clash-for-linuxhttps://link.zhihu.com/?targethttps%3A//zywang.lanzn.com/ijE2a1m7h6mb&#xff08;百度和阿里云盘都不支持这个文件分享&#xff09;。 使用须知 - 此项目不提供任何订阅信息&#xff0c;请自行准备Clash订阅地址。 - 运行前请手动更改.env文件…

掌握ChatGPT:高效利用AI助手

2023 年 3 月 15 日&#xff0c;ChatGPT-4 的诞生标志着人类进入了一个全新的 人机协作时代。这个时代就像一个混沌初开的新世界&#xff0c;而 ChatGPT 则是这个新世界里诞生的一个新物种。 这个新物种的心智如同一个四五岁的小孩&#xff0c;在与它频繁互动中&#xff0c;人…

BFS 解决边权为1的最短路问题

文章目录 边权为1的最短路问题1926. 迷宫中离入口最近的出口题目解析算法原理代码实现 433. 最小基因变化题目解析算法原理代码实现 127. 单词接龙题目解析算法原理代码实现 675. 为高尔夫比赛砍树题目解析算法原理代码实现 边权为1的最短路问题 最短路问题&#xff1a; 比如…

Effective C++笔记之二十三:非void函数不写return

一.main函数 Qt Creator查看汇编的步骤如下 上图是g编译器下的汇编 eax就是main()函数的返回值 如果删掉return 0&#xff1b; 可以发现编译器还是把eax的值设为了0&#xff0c;由此可见&#xff0c;即使在main函数中不写return 0&#xff0c;编译器还是会默认添加个return 0。…

R语言统计分析——散点图2(散点图矩阵、高密度散点图)

参考资料&#xff1a;R语言实战【第2版】 1、散点图矩阵 pairs()函数可以创建基础的散点图矩阵。下面代码用于绘制一个散点图矩阵&#xff0c;包含mtcars数据集中的mpg、disp、drat和wt四个变量&#xff1a; pairs(~mpgdispdratwt,datamtcars,main"Basic Scatter Plot M…

太阳能光伏板航拍红外图像缺陷分类数据集

太阳能光伏板航拍红外图像缺陷分类数据集。 数据集共包含11种不同的缺陷分类&#xff0c; 总共20000张图片&#xff0c; 可用来做基于深度学习的缺陷分类 近红外&#xff0c;黑白图像&#xff0c;图示经过可视化处理。 数据集名称 太阳能光伏板缺陷分类数据集&#xff08;Sola…