Docker 网络管理

一、Docker网络简介

Docker网络是容器化应用程序的重要组成部分,它使得容器之间可以互相通信和连接,同时也提供了容器与外部环境之间的隔离和连接。

二、Docker网络网络模式

Docker 提供了多种网络模式,可以通过docker network ls 命令查看docker的网络列表,常见有网络模式有如下:
在这里插入图片描述

  1. Bridge:默认模式,创建一个命名为"docker0"的虚拟网桥设备,将所有容器连接到该网桥设备上,实现容器之间的通信。
  2. Host:容器与主机共享网络命名空间,即通过Host模式启动的所有容器共享主机的ip和端口范围。容器将不会虚拟出自己的网卡,配置自己的IP等。不过,容器的其他方面,如文件系统、进程列表等还相互隔离的,并且各容器间的端口以及主机被占用的端口不能冲突。
  3. None:Docker的none模式下,不会为容器创建任何网络设备,容器无法访问其他容器或者主机的网络设备,也无法使用主机的IP地址进行网络通信,容器与主机之间是完全隔离的。
  4. Container:在创建容器时指定具体的网络共享的容器,新创建的容器不会创建自己的网卡,配置自己的 IP,而是使用所指定容器的 IP、端口范围等。同样,两个容器除了网络方面是共享,其他方面都是各自独立的。

三、Bridge模式

  当Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥。此后,主机上每启动一个Docker容器都会连接到这个虚拟网桥上。
  当创建一个 Docker 容器的时候,容器会获得一个独立的Network Namespace,并在这个独立的Network Namespace下为容器设置一个默认的ip,同时会创建了一对 veth pair接口。这对接口一端在容器内,即 eth0;另一端在本地并被挂载到docker0网桥,名称以 veth 开头。通过这对接口可以让容器与主机进行通信,也可以让容器与容器之间进行通信。
在这里插入图片描述

  1. 指定Bridge模式启动一个容器,默认不添加--net参数启动,就是Bridge模式,也可以通过--net=bridge来指定网络模式为Bridge,通常配合-p来知道主机与容器之间的端口映射。
    docker run -d --name n1 -p 8080:80 nginx
    docker run -d --name n2 --net=bridge -p 8080:80 nginx
  2. 通过docker inspect 容器id 查看容器的信息,显示网络模式为Bridge,以及分配的IP信息。
    在这里插入图片描述

四、Host 模式

Docker的host模式是一种特殊的网络模式,当Docker容器启动时,容器不再会获得一个独立的Network Namespace,而是和宿主机共用一个Network Namespace,它会自动获取主机的IP地址和端口号,并将其作为容器的IP地址和端口号。容器可以直接访问其他容器或者主机的网络设备,同时,容器还可以使用主机的IP地址进行网络通信,而不需要使用Docker桥接设备分配的私有IP地址。
在这里插入图片描述

  1. 指定为Host 模式启动一个容器,通过--net=host来指定网络模式为Host。
    docker run -d --name n3 --net=host nginx
  2. 通过docker inspect 容器id 查看容器的信息,显示网络模式为Host,IP信息为空。
    在这里插入图片描述

五、None 模式

Docker的None模式下,不会为容器创建任何网络设备,容器无法访问其他容器或者主机的网络设备,也无法使用主机的IP地址进行网络通信。None模式的优点是可以最大程度地隔离容器和主机,避免了容器之间的相互干扰,同时也可以避免Docker桥接设备占用主机的网络接口。因此,none模式适用于需要高隔离性和低网络依赖性的应用程序。
在这里插入图片描述

  1. 指定为None 模式启动一个容器,通过--net=none来指定网络模式为None。
    docker run -d --name n4 --net=none nginx
  2. 通过docker inspect 容器id 查看容器的信息,显示网络模式为Host,IP信息为空。
    在这里插入图片描述

六、Container 模式

Docker的Container模式下,在创建容器时可以指定具体的网络共享的容器,新创建的容器不会创建自己的网卡,配置自己的 IP,而是使用所指定容器的 IP、端口范围等,使的两个容器之间可以使用 localhost 高效快速通信。两个容器除了网络方面,其他的如文件系统,进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信,并且两个容器的端口不能相同。
在这里插入图片描述

  1. 使用默认网络模式创建一个nginx容器n1
    docker run -d --name n1 -p 8080:80 nginx
  2. 使用Container模式创建另一个mysql容器n2,与n1共享网络命名空间。
    docker run -e MYSQL_ROOT_PASSWORD=root -d --name n2 --net=container:n1 --restart=always mysql

七、自定义网络模式

当我们直接使用--net=bridge去指定IP运行docker 的,会提示报错如下:
在这里插入图片描述

如果想要指定ip去运行docker容器的话,就的先创建一个自定义一个网络模式,再指定IP运行docker容器。

  1. 可以通过命令docker network create --driver bridge --subnet 172.30.1.0/24 --gateway 172.30.1.1 my_net去创建一个自定义网络模式。
    在这里插入图片描述

  2. 使用自定义网络模式,指定ip去启动容器
    docker run -d --name n2 --net=my_net --ip 172.30.1.3 -p 8080:80 nginx
    在这里插入图片描述

  3. 查看容器信息
    在这里插入图片描述

  4. 删除自定义网络
    docker network rm my_net

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot实现ChatGPT式调用(一次调用,持续返回)

下边实现了一个持续返回100以内随机数的接口,在接口超时之前会每隔1秒返回一个随机数 GetMapping(value "/getRandomNum", produces MediaType.TEXT_EVENT_STREAM_VALUE) public SseEmitter getRandomNum() {SseEmitter emitter new SseEmitter();Th…

五、Spring AOP面向切面编程(基于注解方式实现和细节)

本章概要 Spring AOP底层技术组成初步实现获取通知细节信息切点表达式语法重用(提取)切点表达式环绕通知切面优先级设置CGLib动态代理生效注解实现小结 5.5.1 Spring AOP 底层技术组成 动态代理(InvocationHandler):…

SQL Server 权限管理

CSDN 成就一亿技术人! 2024年 第一篇 难度指数:* * CSDN 成就一亿技术人! 目录 1. 权限管理 什么是权限管理? SQL server的安全机制 服务器级角色 数据库级角色 对象级角色 2. 创建用户 赋予权限 最重要的一步骤 1. 权限…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及源荷不确定性的综合能源系统日前-日内协调优化调度》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题指的是一个综合能源系统(包括多种能源资源和负荷需求),在考虑到源(能源供给)和荷&#…

代码随想录算法训练营Day16 | 654.最大二叉树、617.合并二叉树、700.二叉搜索树中的搜索、98.验证二叉搜索树

LeetCode 654 最大二叉树 本题思路:我们可以看到每次其实这个找最大值,然后创建节点的过程就是一个二叉树的前序遍历的过程。所以,我们可以递归来完成它。 先创找到数组中,最大的值的下标,然后创建根节点然后根据下标…

【零基础入门TypeScript】TypeScript - 基本语法

目录 你的第一个 TypeScript 代码 编译并执行 TypeScript 程序 编译器标志 TypeScript 中的标识符 TypeScript ─ 关键字 空格和换行符 TypeScript 区分大小写 分号是可选的 TypeScript 中的注释 TypeScript 和面向对象 语法定义了一组编写程序的规则。每种语言规范都…

Linux系统:引导过程与服务控制

目录 一、linux系统引导过程 1、引导过程介绍 1.1 引导过程总览图 1.2 引导过程详解 1.3 系统初始化进程 1.4 Ststemd单元类型 1.5 运行级别所对应的Systemd目标 二、排除启动类故障 1、修复MBR扇区故障 1.1 故障原因 1.2 故障现象 1.3 解决思路 1.4 详细操作步骤…

密码学:带密钥的消息摘要算法一数字签名算法

文章目录 前言手写签名和数字签名前置知识点:消息摘要算法数字签名算法数字签名算法的由来数字签名算法在实际运用的过程附加:签名和摘要值的解释 数字签名算法的家谱数字签名算法的消息传递模型经典数字签名算法-RSA实现 数字签名标准算法-DSA实现 圆曲…

IPC之十二:使用libdbus在D-Bus上异步发送/接收信号的实例

IPC 是 Linux 编程中一个重要的概念,IPC 有多种方式,本 IPC 系列文章的前十篇介绍了几乎所有的常用的 IPC 方法,每种方法都给出了具体实例,前面的文章里介绍了 D-Bus 的基本概念以及调用远程方法的实例,本文介绍 D-Bus…

【VTK-Rendering::Core】第二期 vtkTextActor

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 前言 本文以vtkTextActor为起点,分享VTK中Text相关的内容,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞关注,小易会继续努力分享,一起进步&a…

提升三维模型数据的几何坐标纠正速度效率具体技术方法

提升三维模型数据的几何坐标纠正速度效率具体技术方法 根据搜索结果,以下是提升倾斜摄影三维模型数据的几何坐标纠正和三维重建速度的具体技术方法: 1、增加控制点:通过增加控制点数量可以提高几何坐标精度。控制点是已知地面坐标的点&#…

儿童可以戴骨传导耳机吗?骨传导耳机对儿童有危害吗?

儿童是可以佩戴骨传导耳机的,相比于传统的入耳式蓝牙耳机,佩戴骨传导耳机要更健康一些。 首先骨传导耳机通过人体骨骼来传递声音,不经过耳道和耳膜,所以对听力的损伤较小,而且由于儿童还处于发育期,耳道和耳…

【并发设计模式】聊聊等待唤醒机制的规范实现

在多线程编程中,其实就是分工、协作、互斥。在很多场景中,比如A执行的过程中需要同步等待另外一个线程处理的结果,这种方式下,就是一种等待唤醒的机制。本篇我们来讲述等待唤醒机制的三种实现,以及对应的应用场景。 G…

{“sn“:““,“error“:3,“desc“:“VAD is not available“,“sub_error“:3100}解决办法

目录 问题描述: 解决顺序: 问题描述: 这个问题是在使用百度语音识别时出现的问题,当一切都配置好之后,启动程序,点击录音,发现程序并没有执行onEvent方法,直接闪退了,当断点调试时发现程序并没有进入onEvent方法,抛出异常{"sn":"","erro…

从0搭建github.io网页

点击跳转到🔗我的博客文章目录 从0搭建github.io网页 文章目录 从0搭建github.io网页1.成果展示1.1 网址和源码1.2 页面展示 2.new对象2.1 创建仓库 3.github.io仓库的初始化3.1 千里之行,始于足下3.2 _config.yml3.3 一点杂活 4.PerCheung.github.io.p…

2024/1/2 C++ work

全局变量,int monster 10000;定义英雄类hero,受保护的属性string name,int hp,int attck;公有的无参构造,有参构造,虚成员函数 void Atk(){blood-0;},法师类继承自英雄类,私有属性 …

k8s中实现pod自动扩缩容

一、k8s应用自动扩缩容概述 1)背景: 在实际的业务场景中,我们经常会遇到某个服务需要扩容的场景(例如:测试对服务压测、电商平台秒杀、大促活动、或由于资源紧张、工作负载降低等都需要对服务实例数进行扩缩容操作&…

gzip的了解

基本操作原理:通过消除文件中的冗余信息,使用哈夫曼编码等算法,将文件体积压缩到最小。这种数据压缩方式在网络传输中发扮了巨大作用,减小了传输数据的大小,从而提高了网页加载速度。 vue Vue CLI修改vue.config.js&a…

MySQL 临时表

MySQL 临时表 MySQL 临时表在我们需要保存一些临时数据时是非常有用的。 临时表只在当前连接可见,当关闭连接时,MySQL 会自动删除表并释放所有空间。 在 MySQL 中,临时表是一种在当前会话中存在的表,它在会话结束时会自动被销毁…

vue3按钮点击频率控制

现有一个按钮&#xff0c;如下图 点击时 再次点击 刷新窗口再次点击 刷新窗口依然可以实现点击频率控制。 代码实现&#xff1a; <template><!--<el-config-provider :locale"locale"><router-view/></el-config-provider>--><el…