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

news2024/9/22 17:35:16

简介

  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.coloradmin.cn/o/2144016.html

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

相关文章

第二期: 第二节 , 裸机编程 , gpio

1 首先就是 看原理图: 这里有两个 LED 核心板的原理图。 可以看到 是这个脚。 2 然后就是 查看数据手册。 从 数据手册可以看出 ,一共有这么多的 gpio 组, 但是这些 组 是有复用的&#xf…

非常实用的桌面日历 你桌面上的备忘录和提醒工具

在快节奏的现代生活中,时间管理成为了每个人不可或缺的技能。随着数字化时代的到来,我们虽然拥有了智能手机、平板电脑以及各类时间管理应用,但那份传统而温馨的桌面日历,却依然以其独特的魅力,在无数人的工作台上占据…

油耳拿什么清理比较好?好用的无线可视挖耳勺推荐

油耳的朋友通常都是用棉签来掏耳。这种方式是很不安全的。因为使用棉签戳破耳道和棉絮掉落在耳道中而引起感染的新闻不在少数。在使用过程中更加建议大家可视挖耳勺来清理会更好。不仅清晰度得干净而且安全会更高。但最近这几年我发现可视挖耳勺市面上不合格产品很多&#xff0…

澳元/美元价格:进一步上涨看向美联储

澳元/美元在0.6700关口附近波动不定。美元因美国经济数据强劲而重新获得上行动力。接下来,澳大利亚将公布西太平洋领先指数。 美元的再度走强使风险敏感资产承压,澳元/美元周二维持在0.6700关口上方的小幅区间内。尽管美元反弹,澳元仍成功维…

关于STM32项目面试题02:ADC与DAC篇(输入部分NTC、AV:0-5V、AI:4-20mA和DAC的两个引脚)

博客的风格是:答案一定不能在问题的后面,要自己想、自己背;回答都是最精简、最精简、最精简,可能就几个字,你要自己自信的展开。 面试官01:什么是模数转换/ADC?说说模数转换的流程? …

STM32F407 - 01

嵌入式概述 什么是嵌入式?嵌入式是以应用为中心,以计算机技术为基础 硬件可裁剪 适用于对体积 可靠性 功耗 性能等方面有着严格的专用计算机系统 简单来说 除了处理桌面PC和服务器之外所有的控制类设备都是嵌入式. 通用计算机和专用计算机的区别 两者的区别在于技术的发展和…

Python编码系列—Python组合模式:构建灵活的对象组合

🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…

质量与数量的博弈!大模型数据建设

质量与数量的博弈!大模型数据建设 前言大模型数据建设 前言 大数据和人工智能(DataAI)技术正以惊人的速度改变着我们的生活和工作方式。大模型数据建设作为人工智能领域的核心组成部分,其重要性日益凸显。 大模型数据建设涉及到海…

硬件工程师笔试面试——电机

目录 18、电机 18.1 基础 电机原理图 电机实物图 18.1.1 概念 18.1.2 电机的一些基本分类和特点 18.2 相关问题 18.2.1 不同类型的电机在实际应用中有哪些具体的优势和劣势 18.2.2 在设计一个电机系统时,我应该如何考虑电机的选型和配置? 18.2.3 对于需要频繁启停的…

【C++篇】C++类与对象深度解析(三):类的默认成员函数详解

文章目录 【C篇】C类与对象深度解析(三)前言4. 运算符重载基本概念4.1 运算符重载的基本概念4.2 重载运算符的规则4.3 成员函数重载运算符4.4 运算符重载的优先级与结合性4.5 运算符重载中的限制与特殊情况4.5.1 不能创建新的操作符4.5.2 无法重载的运算…

TypeScript入门 (一)数据类型与运算符

引言 大家好,我是GISer Liu😁,一名热爱AI技术的GIS开发者。本系列文章是我跟随DataWhale 2024年9月学习赛的TypeScript学习总结文档。希望通过我的知识点总结,能够帮助你更好地学习TypeScript。💕💕&#x…

【漏洞复现】科荣AIO UtilServlet 代码执行漏洞

免责声明: 本文内容旨在提供有关特定漏洞或安全漏洞的信息,以帮助用户更好地了解可能存在的风险。公布此类信息的目的在于促进网络安全意识和技术进步,并非出于任何恶意目的。阅读者应该明白,在利用本文提到的漏洞信息或进行相关测…

学习实践: Procdump获取本地远控信息

看到一篇文章是通过Procdump获取ToDesk远控信息的,于是实操了一下;顺便也测试了一下向日葵远控,发现都是适用的。该方法对于肉鸡提权有一定价值。 1、获取ToDesk远控信息 测试版本:ToDesk v4.7.4.3 测试工具:procdump、…

【Java EE】文件IO

Author:MTingle major:人工智能 --------------------------------------- Build your hopes like a tower! 目录 一、文件是什么? 二、针对文件系统操作的API 1.文件路径,文件名,文件是否存在 2. 创建文件 3.删除文件&#…

推动公平学习与身份归一化的视网膜神经疾病数据集

人工智能咨询培训老师叶梓 转载标明出处 在机器学习领域,公平性(也称为公正性或平等性)是一个日益受到关注的话题,它对于社会的福祉至关重要。然而,目前缺乏专门用于公平学习且包含成像数据的公共医学数据集&#xff…

vs2022配置opencv==4.9.0(C++)

1、下载opencv-windows [opencv4.9.0下载地址](Releases - OpenCV) 下载4.9.0版本: 双击下载好的opencv-4.9.0-windows.exe,选择安装路径: 2、配置opencv环境 (1)添加系统环境变量 此电脑–>右键“属性”–…

小红书治愈插画副业,猛猛涨粉上万+,每天只用5分钟

在这个数字化时代,AI技术正以前所未有的速度改变着我们的生活和工作。特别是在内容创作领域,AI的运用已经催生了一种全新的创作模式。一幅幅温馨可爱的治愈插画如同清流,不仅契合当下年轻人生活的状态,更成为许多人表达生活态度、…

「iOS」push与present

iOS学习 前言push与poppresent与dismiss使用dismiss弹出多级PresentedViewController 与 PresentingViewController区别 总结 前言 在此前就学习过视图的push与present。与之对应的退出方法为pop与dismiss。这里进行一次总结。 push与pop pushViewController 是通过导航控制器…

黑神话:悟空 后话

《黑神话:悟空》在游戏界掀起了波澜。对许多人来说,包括我自己,这款游戏是我们一直期待的——一款纯粹、沉浸且专注于高质量游戏体验的作品。它不追求现代趋势,没有微交易或在线服务模式,也没有为了未来扩展包而设计的…

PumpkinFestival靶机详解

靶机下载地址 https://www.vulnhub.com/entry/mission-pumpkin-v10-pumpkinfestival,329/ 靶机配置 主机发现 arp-scan -l 端口扫描 nmap -sS -Pn -A -p- -n 192.168.229.163 访问网页 http://192.168.229.163/ 这些可能是用户名和账号留存 F12查看页面源码,发…