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.mzph.cn/news/220777.shtml

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

相关文章

深度学习代码片段收集

print(number of model params, sum(p.numel() for p in model.parameters() if p.requires_grad))sum(p.numel() for p in model.parameters() if p.requires_grad )可以用来计算参与训练的参数量 model.parameters() 返回模型中所有参数的迭代器。 if p.requires_grad: 这部…

【ITK库学习】使用itk库进行图像滤波ImageFilter:二阶微分

目录 1、itkRecursiveGaussianImageFliter 递归高斯滤波器2、itkLapacianRecursiveGaussianImageFiter 拉普拉斯高斯滤波器 1、itkRecursiveGaussianImageFliter 递归高斯滤波器 该类用于计算具有高斯核近似值的 IIR 卷积的基类。 该类是递归滤波器的基类,它与高斯…

Netty详细文档

Netty教程 文章目录 Netty教程 Netty简介Netty 的介绍Netty 的应用场景互联网行业游戏行业大数据领域其它开源项目使用到 Netty Netty 的学习资料参考 Java BIO编程I/O 模型BIO、NIO、AIO 使用场景分析Java BIO 基本介绍Java BIO 工作机制Java BIO 应用实例问题分析 Java NIO编…

不得不知的Aspera替代方案,让文件传输变得更轻松

aspera作为一款高效的文件传输工具,可以让用户在网络状况不佳时仍然能够进行快速的大文件传输。然而,由于aspera的高昂价格和复杂的部署难度,很多用户开始寻找aspera替代方案来解决文件传输问题。 1、CFT CFT是一款由BMC Software公司开发的…

中国法拍房数量统计预测模型_2023年法拍房数量竟是。。

法拍房主要平台 法拍房主要平台有3家,分别是阿里、京东和北交互联平台。目前官方认定纳入网络司法拍卖的平台共有7家,其中阿里资产司法拍卖平台的挂拍量最大。 阿里法拍房数据显示2017年,全国法拍房9000套;2018年,法…

mybatis与oracle数据库jdbcType类型对应关系

之前都是百度上搜的,各种对应的都有,总觉得有问题,最后直接通过跑代码查看了一下对应关系,我用的oracle是19c。 常见的对应关系如下 oracle类型jdbcTypeVARCHAR2JdbcType.VARCHARNVARCHARJdbcType.NVARCHARCHARJdbcType.CHARCLOB…

机器学习中的混沌工程:拥抱不可预测性以增强系统鲁棒性埃

一、介绍 在动态发展的技术世界中,机器学习 (ML) 已成为一股革命力量,推动各个领域的创新。然而,随着机器学习系统的复杂性不断增加,确保其可靠性和鲁棒性已成为首要问题。这就是混沌工程发挥作用的地方,混沌工程是一门…

Android Compose Transition 动画

Transition 是一种动画效果,用于在组件的状态之间进行平滑的过渡。它可以帮助我们在状态变化时,以一种流畅的方式更新 UI。通过使用 Compose 的 Transition API,您可以在应用中创建各种各样的动画效果,从而增强用户体验并提高应用…

Axure元件库使用与ProcessOn流程图

Axure元件库 自定义Axure元件库: 打开Axure RP软件,并点击菜单栏中的“元件库”选项,选择“新建元件库”。 在弹出的对话框中,选择一个文件夹来保存您的自定义元件库,并给它一个名称。 在Axure RP的主界面上&#x…

四、Java流程控制

第一章 流程控制语句 在一个程序执行的过程中,各条语句的执行顺序对程序的结果是有直接影响的。所以,我们必须清楚每条语句的执行流程。而且,很多时候要通过控制语句的执行顺序来实现我们想要的功能。 1.1 流程控制语句分类 ​ 顺序结构 …

低频量化日报

低频量化日报&#xff08;2023-12-13&#xff09; 明日涨停预测指数分位值指数风险溢价比ETF抄底指标<2小规模配债<5亿可转债策略 双低策略四因子策略网格策略最后 写在前面&#xff0c; 由于git服务器的缘故&#xff0c;原来自动写文章的图片全部不能用了&#xff0c; 我…

【解决】maven管理工具使用package打包的时候无法将lib文件夹下的第三方jar包打入,上线打jar包后运行异常问题...

问题描述&#xff1a; 调用第三方接口的时候通过手动引入了第三方的两个jar包到我本项目的lib文件夹下&#xff0c;并在pom文件添加入下配置&#xff1a; <dependency><groupId>cn.xxxx.xxxx.core</groupId><artifactId>xxxx-core</artifactId>…

机器学习---逻辑回归算法

1、逻辑回归 逻辑回归又叫logistic回归分析&#xff0c;是一种广义的线性回归分析模型。线性回归要求因变量必须是连续性的数据变量&#xff0c;逻辑回归要求因变量必须是分类变量&#xff0c;可以是二分类或者多分类(多分类都可以归结到二分类问题)&#xff0c;逻辑回归的输出…

深入理解 Go 语言 Goroutine 的工作原理

一、设计思路 1、设计描述 启动服务之时先初始化一个 Goroutine Pool 池&#xff0c;这个 Pool 维护了一个类似栈的 LIFO 队列&#xff0c;里面存放负责处理任务的 Worker然后在 client 端提交 task 到 Pool 中之后&#xff0c;在 Pool 内部&#xff0c;接收 task 之后的核心…

数据库数据恢复—Mysql数据库误删表数据的数据恢复案例

mysql数据库数据恢复环境&#xff1a; 本地服务器&#xff0c;windows server操作系统 &#xff0c;部署有mysql单实例&#xff0c;数据库引擎类型为innodb&#xff0c;独立表空间&#xff0c;无数据库备份&#xff0c;未开启binlog。 mysql数据库故障&#xff1a; 工作人员使…

勒索病毒最新变种.mallox勒索病毒来袭,如何恢复受感染的数据?

导言&#xff1a; 威胁着我们数据安全的勒索病毒如.mallox已经变得愈发狡猾和具有挑战性。本文91数据恢复将深入介绍.mallox勒索病毒的特征、恢复受害数据的方法&#xff0c;以及一些预防措施&#xff0c;助您更好地应对这一威胁。 如果受感染的数据确实有恢复的价值与必要性&…

yolov5 获取漏检图片脚本

yolov5 获取漏检图片脚本 获取样本分数在0.05到0.38直接的样本。 # YOLOv5 by Ultralytics, GPL-3.0 licenseimport argparse import json import os import sys import time from pathlib import Pathimport cv2 import numpy as np import torch import torch.backends.cud…

HarmonyOS应用开发初体验

9月25日华为秋季全场景新品发布会上&#xff0c;余承东宣布&#xff0c;全面启动鸿蒙原生应用&#xff0c;HarmonyOS NEXT开发者预览版将在2024年第一季度面向开发者开放。 最近鸿蒙开发可谓是火得一塌糊涂&#xff0c;各大培训平台都开设了鸿蒙开发课程。美团发布了鸿蒙高级工…

ZLMediaKit 编译以及测试(Centos 7.9 环境)

文章目录 一、前言二、编译器1、获取代码2、编译器2.1 编译器版本要求2.2 安装编译器 3、安装cmake4、依赖库4.1 依赖库列表4.2 安装依赖库4.2.1 安装libssl-dev和libsdl-dev4.2.2 安装 ffmpeg-devel依赖和ffmpeg依赖 三、构建和编译项目&#xff08;启用WebRTC功能&#xff09…

JavaWeb笔记之MySQL数据库

#Author 流云 #Version 1.0 一、引言 1.1 现有的数据存储方式有哪些&#xff1f; Java程序存储数据&#xff08;变量、对象、数组、集合&#xff09;&#xff0c;数据保存在内存中&#xff0c;属于瞬时状态存储。 文件&#xff08;File&#xff09;存储数据&#xff0c;保存…