[Docker][Docker NetWork][下]详细讲解

news2024/11/25 12:17:32

目录

  • 1.网络管理命令
    • 1.docker network creatre
    • 2.docker network inspect
    • 3.docker network connect
    • 4.docker network disconnect
    • 5.docker network prune
    • 6.docker network rm
    • 7.docker network ls
  • 2.docker bridge 详解
    • 0.基本概念
    • 1.默认 bridge
    • 2.自定义 bridge
    • 3.DNS解析
    • 4.端口暴露和转发
  • 3.docker host 详解
  • 4.docker container 详解
  • 5.docker none 详解


1.网络管理命令

1.docker network creatre

  • 功能:创建自定义网络
  • 语法:`docker network creatre [OPTIONS] NETWORK
  • 关键参数
    • -d, --driver:网络驱动
    • --gateway:网关地址
    • --subnet:表示网段的CIDR格式的子网
    • --ipv6:启动ipv5
  • 示例docker network creatre --driver=bridge --subnet=192.168.0.0/16 br0

2.docker network inspect

  • 功能:查看网络详情
  • 语法docker network inspect [OPTIONS] NETWORK [NETWORK...]
  • 关键参数-f, --format:指定格式

3.docker network connect

  • 功能
    • 将容器连接到网络,可以按名称或ID连接容器
    • 一旦连接,容器可以与同一网络中的其他容器通信
  • 语法docker network connect [OPTIONS] NETWORK CONTAINER
  • 关键参数
    • --ip:指定IP地址
    • --ip6:指定IPV6地址
  • 示例
    # 将正在运行的容器连接到网络
    docker network connect multi-host-network my_container1
    
    # 启动时将容器连接到网络
    # 还可以使用docker run --network=<network-name>选项启动容器并立即将其连接到网络
    docker run -itd --network=multi-host-network SnowK_Container
    
    # 指定容器的IP,可以指定要分配给容器网络接口的IP地址
    docker network connect --ip 172.21.26.211 multi-host-network my_container2
    

4.docker network disconnect

  • 功能:断开网络
  • 语法docker network disconnect [OPTIONS] NERWORK CONTAINER
  • 关键参数-f:强制退出
  • 示例docker network disconnect multi-host-network my_container

5.docker network prune

  • 功能:删除不使用的网络
  • 语法docker network prune [OPTIONS]
  • 关键参数-f, --force:强制删除

6.docker network rm

  • 功能:删除1个或多个网络
  • 语法:`docker network rm NETWORK [NETWORN…]
  • 关键参数-f:强制删除

7.docker network ls

  • 功能:列出网络
  • 语法docker network ls [OPTIONS]
  • 关键参数
    • -f, --filter:指定过滤条件
    • --format:指定格式
    • --no-trunc:不截断
    • -q, --quiet:仅仅显示 id

2.docker bridge 详解

0.基本概念

  • Docker Bridge网络采用内置的bridge驱动,bridge驱动底层采用的是 Linux内核中Linux bridge技术
    • 就网络而言,bridge网络是在网络段之间转发流量的链路层设备, 而网桥可以是在主机内核中运行的硬件设备或软件设备
    • 就Docker而言,桥接网络使用软件网桥docker0,它允许连接到同一网桥网络的容器进行通信,同时提供与未连接到该网桥网络容器的隔离
  • Docker Container的bridge桥接模式
    请添加图片描述

1.默认 bridge

  • 默认情况下,创建的容器在没有使用--network参数指定要加入的 docker 网络时, 默认都是加入 Docker 默认的单机桥接网络

  • 默认的bridge网络会被映射到内核中名为docker0的网桥上

    • Docker默认的bridge网络和Linux内核中的docker0网桥是对应关系
    • bridge是Docker对网络的命名,而docker0是内核中网桥的名字
      请添加图片描述
  • 容器间的网络通信

    • 安装Docker的时候会默认docker0这个网桥软件设备,这个docker0设备可以类比成交换机/路由器设备
    • 当创建好容器之后, 如果不手动指定网络模式,默认会使用bridge网络, 容器会自动连接到docker0这个网桥设备, 然后通过这个网桥来进行容器间的通信

2.自定义 bridge

  • 除了默认的docker0,也可以创建一些自定义的bridge,让运行的容器通过自定义bridge进行通信
  • 创建docker network create -d bridge new-bridge
  • 连接docker run -itd --name c3 --network new-bridge SnowK
    • 通过--network选项指定要连接的网络,
    • 如果不指定, 默认是连接的bridge

3.DNS解析

  • Docker自定义桥接网络是支持通过Docker DNS服务进行域名解析的
    • 可以直接使用容器名进行通信
    • 因为DNS服务可以解析容器名到IP地址的映射, 但是默认的bridge网络是不支持DNS的

4.端口暴露和转发

  • 暴露方式:端口暴露有2种方式,在启动容器的时候添加端口参数
    • -P:暴露所有端口
      • 将指定的容器端口映射至主机所有地址的一个动态端口
        • 动态端口 即 随机端口
      • 具体的映射结果可使用docker port命令查看
    • -p:暴露指定端口
      • 语法-p <hostPort>:<containerPort>
      • 功能:将容器端口<containerPort>映射至指定的主机端口<hostPort>
  • 端口转发:连接bridge网络的容器只能与连接在当前网络中的容器进行通信。如果一个容器想要对外提供一些网络服务的话,需要进行端口转发才可以实现
    • 端口转发将Docker容器的端口映射到宿主机的端口上
      • 任何发送到宿主机该端口的流量,都会被转发到容器的端口中
    • 如下图所示,两个容器内部均开放80端口,它们分别映射到宿主机的8088和8089端口
      • 任何发送到 8088 端口的流量都会转发到Container 1容器的80端口
      • 任何发送到8089端口的流程都会转发到Container 2 容器的80端口
        请添加图片描述

3.docker host 详解

  • Docker容器运行默认都会分配独立的Network Namespace隔离子系统

  • 但是如果基于host网络模式,容器将不会获得一个独立的Network Namespace,而是和宿主机共用同一个Network Namespace

    • 容器将不会虚拟出自己的网卡,IP等,而是直接使用宿主机的IP和端口
    • 连接到host网络的容器共享宿主机的网络栈,容器的网络配置与宿主机完全一样
      请添加图片描述
  • 适用场景

    • bridge网络在通信的时候需要进行端口转发以及NAT地址转换, 这势必会消耗掉一些资源以及性能
    • 直接使用host网络最大的好处就是性能好
      • 如果容器对网络传输效率有较高的要求,建议选择host网络
      • 当然也会牺牲一些东西,比如要考虑端口冲突问题,其他服务已经被占用的端口就不能再使用了

4.docker container 详解

  • Docker Container的other container网络模式是Docker中一种较为特别的网络的模式

    • 之所以称为“other container模式“,是因为这个模式下的Docker Container,会使用其他容器的网络环境
    • 之所以称为“特别”,是因为这个模式下容器的网络隔离性会处于bridge桥接模式与host模式之间
      • Docker Container共享其他容器的网络环境,则至少这两个容器之间不存在网络隔离
      • 而这两个容器又与宿主机以及除此之外其他的容器存在网络隔离
  • Docker Container的other container网络模式
    请添加图片描述

  • Docker Container的other container网络模式实现逻辑如下:

    • 查找other container(即需要被共享网络环境的容器)的网络namespace
    • 将新创建的Docker Container(也是需要共享其他网络的容器)的namespace,使用other container的namespace
  • 操作实例

    # 创建一个容器
    docker run -itd --name netcontainer1 SnowK
    
    # 使用netcontainer1的网络创建另外一个容器
    docker run -itd --name netcontainer2 --network container:netcontainer1 SnowK
    
  • 适用场景

    • 在这种模式下的Docker Container可以通过localhost来访问namespace下的其他容器,传输效率较高
    • 但是两个容器之间存在依赖,如果依赖容器重启了,会导致另外一个服务的网络不可用

5.docker none 详解

  • none网络就是指没有网络挂在这个网络下的容器除了lo(本地回环),没有其他任何网卡
  • 适用场景
    • 针对一些对安全性要求比较高并且不需要联网的应用, 可以使用none网络
      • 比如生成随机密码, 避免生成密码被第三方获取
    • 一些第三方的应用可能需要docker帮忙创建一个没有网络的容器, 网络由第三方自己来配置

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

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

相关文章

45 标准库 collections 中与字典有关的类

Python 标准库中提供了很多扩展功能&#xff0c;大幅度提高了开发效率。主要介绍 collections 中 OrderedDict 类、defaultdict 类和 Counter类。 1 OrderedDict 类 Python 内置字典 dict 是无序的&#xff0c;如果需要一个可以记住元素插入顺序的字典&#xff0c;则可以使用…

大厂的风控引擎架构设计

1 架构师能力思维模型 全局思维抽象思维 2 新需求的思考路径 需求是否合理&#xff0c;是否能解决问题&#xff1f; 能划分多少个子系统&#xff1f; 每个子系统能划分多少个模块&#xff1f;这个系统需要可靠性吗&#xff0c;需要扩展能力吗&#xff1f;成本需要控制吗&a…

路径规划——广度优先搜索与深度优先搜索

路径规划——广度优先搜索与深度优先搜索 https://www.hello-algo.com/chapter_graph/graph_traversal/ 1.广度优先搜索 Breath-First-Search 在图论中也称为广度优先遍历&#xff0c;类似于树的层序遍历。 算法原理 从起始节点出发&#xff0c;首先访问它的邻近节点&…

openEuler中安装数据库

目录 一.安装数据库 二.出现报错解决方法 1.根据报错查看冲突软件包 2.忽略软件依赖性解决 3.再次查看是否删掉冲突软件 三.再次执行安装数据库命令 四.启动数据库可直接输入mysql进入数据库&#xff0c;此时不安全 五.安全初始化 1.是否有root密码&#xff0c;没有直…

从表型感知到全链路贯通:数字孪生与LLM重塑设施农业新范式

当前,设施农业正处于从传统模式向现代智慧农业加速跃迁的关键时期。数字孪生和大语言模型引领的技术变革浪潮为催生设施农业的创新发展模式提供了新的可能。二者携手打造的全场景数字化运营新范式,必将重塑农业生产的业态和价值链。农业科技工作者应顺应时代发展潮流,将数字孪生…

iOS-Swift 数据库 WCDB 二次封装使用/自定义字段映射类型

WCDB官方使用文档 WCDB简介 WCDB 是一个易用、高效、完整的移动数据库框架&#xff0c;它基于 SQLite 和 SQLCipher 开发&#xff0c;在微信中应用广泛&#xff0c;且支持在 C、Java、Kotlin、Swift、Objc 五种语言环境中使用。 整体架构&#xff1a; 对于WCDB详细的介绍和…

Tomcat安装教程

Tomcat官方网站&#xff1a;http://tomcat.apache.org/ 1.找到左边一栏有个Download&#xff0c;点击Tomcat 10 注意&#xff1a;Tomcat也是要下载JDK环境的&#xff0c;这里我使用Tomcat 10&#xff0c;JDK环境要大于等于11版本&#xff0c;具体可看下图&#xff1a; 2.下拉找…

更小、更安全、更透明:Google发布的Gemma推动负责任AI的进步

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

Python习题 101:输入年月打印日历

使用了 Python 的内置库 calendar&#xff0c;它提供提供与日历有关功能&#xff0c;可以帮助我们做时间日期相关的计算&#xff0c;省去复杂的判断&#xff0c;比较实用。

cv2读取中文路径图像名称

1.cv2.imdecode 是 OpenCV 库中的一个函数&#xff0c;用于从内存中的数据解码图像。这通常用于从文件、网络传输或数据库中读取图像数据而不必直接从磁盘读取。此函数特别适用于处理字节数组形式的图像数据。 img cv2.imdecode(buf, flagsNone) 参数说明&#xff1a; buf&am…

解锁PDF编辑新境界:2024年大家都在用的4款工具

PDF这个文件格式大家应该都不陌生吧。他以不易窜改和可以保持版式一直的优势成为我们日常传输文件的首选格式。随着使用使用率的增加&#xff0c;一些PDF表格如果能直接修改内容就能有效的提升工作效率。这就需要借助一些PDF编辑工具来实现啦。 1.福昕PDF编辑器 直达链接&am…

游戏(河南萌新2024)

1.超时的写法&#xff08;没有用堆优化&#xff09; #include <bits/stdc.h>using namespace std; typedef long long ll; typedef double db; typedef long double ldb; typedef pair<int, int> pii; typedef pair<ll, ll> PII; #define pb emplace_back /…

vulnhub靶场serial-php渗透(蜥蜴细!)

目录 一、信息收集 1.探测主机存活&#xff08;目标主机IP地址&#xff09; 2.访问web服务 3.后台目录和端口扫描 4.解析bak.zip源码 二、漏洞利用 1.构造payload 2.通过bp的repeater模块 3.get shell 4.获取反弹shell 三、提升权限 1. 查看系统版本&#xff0c;内核…

ctfshow 大赛原题 web697--web700

web697 先扫一下&#xff0c;其实也可以不用扫 因为什么也扫不出来 这里看到有一个参数 尝试一下数组 随便输了&#xff0c;出了验证回显抓个包看 ffifdyop e58 4611686052576742364这三个md5加密可以自带引号 SELECT master FROM secret WHERE password binary ,b…

文件包含漏洞汇总

文章目录 原理文件包含函数伪协议函数本地包含file协议filter协议input协议data协议 远程文件包含条件http协议 日志文件绕过概念日志路径复现 文件包含之条件竞争概念靶场介绍复现 文件下载文件下载常见的目录系统目录linuxwindows 程序配置文件apachenginxredis 目录遍历与目…

【STL专题】深入探索vector:动态数组的魔力【入门指南】

欢迎来到 CILMY23 的博客 &#x1f3c6;本篇主题为&#xff1a;深入探索vector&#xff1a;动态数组的魔力&#xff0c;入门指南 &#x1f3c6;个人主页&#xff1a;CILMY23-CSDN博客 &#x1f3c6;系列专栏&#xff1a;Python | C | C语言 | 数据结构与算法 | 贪心算法 | L…

结构体指针数组函数综合应用改写选票系统

第一次写百行的代码 有点吃不消 感受到程序员的不容易 其中遇到了很多问题 希望分享给大家 下面是是完整的且完善的代码 #include<stdio.h> #include<string.h> #include <stdlib.h> //定义结构体 struct XuanMin {char name[32];int tickets; }; //指针函…

1-4章节复习总结

1-4章节总结 章节重点回顾-第一章-中央处理单元练习题 章节重点回顾-第一章-进制章节重点回顾-第一章-校验码奇偶校验码CRC循环冗余校验码海明码练习题 多草节重点回顾-第一草-计算机体系结构分类章节重点回顾-第一章-计算机指令练习题 章节重点回顾-第一章-指令流水线练习题 章…

​​​​​Tomcat部署及优化

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:Linux运维老纪的首页…