一起学docker系列之十五深入了解 Docker Network:构建容器间通信的桥梁
目录
- 1 前言
- 2 什么是 Docker Network
- 3 Docker Network 的不同模式
- 3.1 桥接模式(Bridge)
- 3.2 Host 模式
- 3.3 无网络模式(None)
- 3.4 容器模式(Container)
- 4 Docker Network 命令及用法
- 4.1 `docker network ls`
- 4.2 `docker network COMMAND`
- 4.3 `docker network connect`
- 4.4 `docker network create`
- 4.5 `docker network disconnect`
- 4.6 `docker network inspect`
- 4.7 `docker network prune`
- 4.8 `docker network rm`
- 5 Docker Network 的应用
- 6 总结
- 7 参考地址
1 前言
在容器化技术中,Docker Network是连接和管理容器之间通信的核心组件。它为容器提供了强大的网络功能,使得容器可以互相通信,同时也能与外部网络进行交互。本文将全面介绍Docker Network的作用、不同的网络模式以及相关命令,同时提供实例来展示Docker Network的应用场景和用法。
2 什么是 Docker Network
Docker Network是Docker技术框架中的重要组成部分,用于管理和连接容器间的网络通信。它提供了灵活的网络配置选项,允许容器在不同的网络模式下进行通信,同时保证容器的网络隔离性。
在Docker中,每个容器都可以拥有自己的网络命名空间,并且可以使用不同的网络驱动程序进行连接,从而实现各种网络模式的配置。
3 Docker Network 的不同模式
不同的网络模式提供了灵活的配置选项,适用于不同的容器化场景。
3.1 桥接模式(Bridge)
作用: 默认模式,在 Docker 中为每个容器创建一个虚拟网桥(docker0),并为容器分配一个独立的 IP 地址。这些容器可以相互通信,并能与外部网络通信。
适用场景:
- 需要容器互相通信的场景,如微服务架构中的多个服务之间的通信。
- 需要容器与外部网络进行交互的场景,比如容器需要通过公共网络访问外部资源。
3.2 Host 模式
作用: 容器直接使用宿主机的网络栈,共享宿主机的网络配置,包括 IP 和端口。这使得容器可以直接使用宿主机的网络,提供了最佳的网络性能。
适用场景:
- 无需端口映射,并希望获得最佳性能的情况下使用,比如特定性能要求较高的应用场景。
3.3 无网络模式(None)
作用: 容器拥有独立的网络命名空间,但没有任何网络配置,仅有本地回环地址。这种模式适用于一些特殊要求的场景,例如在容器中进行网络调试和测试。
适用场景:
- 需要在容器内部进行网络调试和测试的情况下使用。
3.4 容器模式(Container)
作用: 多个容器共享相同的网络命名空间,共享 IP 和端口范围,允许多个容器共享网络栈。
适用场景:
- 需要多个容器之间共享网络栈的情况,允许这些容器能够共享相同的 IP 和端口范围,适用于一些特定的应用场景。
这些网络模式提供了不同的网络配置选项,使得用户能够根据不同的需求,选择最适合其应用场景的网络模式,以达到最佳的网络管理和容器通信效果。
4 Docker Network 命令及用法
Docker 网络有许多命令可供使用,用于管理、创建和连接网络以及检查网络信息。
4.1 docker network ls
作用: 列出 Docker 中的所有网络。
用法:
docker network ls
4.2 docker network COMMAND
docker network
命令本身是一个高级命令,用于管理 Docker 网络。它后面可以跟着其他子命令,如 connect
、create
、disconnect
、inspect
、ls
、prune
、rm
等。
4.3 docker network connect
作用: 将容器连接到指定网络。
用法:
docker network connect <network_name> <container_name>
这会将指定容器连接到指定网络。
4.4 docker network create
作用: 创建一个新的 Docker 网络。
用法:
docker network create <network_name>
这会创建一个名为 <network_name>
的新网络。
4.5 docker network disconnect
作用: 从指定网络中断开容器。
用法:
docker network disconnect <network_name> <container_name>
这会将指定容器从指定网络中断开。
4.6 docker network inspect
作用: 检查指定网络的详细信息。
用法:
docker network inspect <network_name>
这会显示有关指定网络的详细信息,包括网络的配置和连接的容器等。
4.7 docker network prune
作用: 清理未使用的网络。
用法:
docker network prune
这会删除未使用的 Docker 网络。
4.8 docker network rm
作用: 删除一个或多个网络。
用法:
docker network rm <network_name>
这会删除指定的 Docker 网络。
5 Docker Network 的应用
容器间互联通信
假设有一个Web应用和一个数据库,可以通过创建自定义网络来连接它们,实现容器间的通信。首先创建网络:
docker network create my_network
然后将应用和数据库连接到该网络:
docker run -d --name web_app --network my_network app_image
docker run -d --name database --network my_network db_image
现在,这两个容器可以通过容器名称相互访问。
6 总结
Docker Network是连接和管理容器间通信的重要组件,在容器化应用中发挥着关键作用。它提供了多种网络模式和命令,使得用户能够灵活配置和管理容器的网络连接,实现了容器间的高效通信和网络隔离。
通过本文的介绍,你应该对Docker Network的概念、不同模式以及常用命令有了更深入的了解,能够更好地应用于实际场景中。
7 参考地址
https://docs.docker.com/engine/reference/builder
相关文章:

一起学docker系列之十五深入了解 Docker Network:构建容器间通信的桥梁
目录 1 前言2 什么是 Docker Network3 Docker Network 的不同模式3.1 桥接模式(Bridge)3.2 Host 模式3.3 无网络模式(None)3.4 容器模式(Container) 4 Docker Network 命令及用法4.1 docker network ls4.2 …...

前端OFD文件预览(vue案例cafe-ofd)
0、提示 下面只有vue的使用示例demo ,官文档参考 cafe-ofd - npm 其他平台可以参考 ofd - npm 官方线上demo: ofd 1、安装包 npm install cafe-ofd --save 2、引入 import cafeOfd from cafe-ofd import cafe-ofd/package/index.css Vue.use(cafeOfd) 3、使…...
Java[list/set]通用遍历方法之Iterator
需求:输入一个字符串 将其拆解成单个汉字 然后一行一个输出 这里要求使用到Arraylist集合实现方法Itrator遍历的原理import java.util.ArrayList; import java.util.Collection; import java.util.Iterator;public class Main{public static void main(String[] arg…...

ubuntu/vscode下的c/c++开发之-CMake语法与练习
Cmake学习 1 语法特性介绍 基本语法格式:指令(参数 1 参数 2...) 参数使用括弧括起参数之间使用空格或分号分开 指令是大小写无关的,参数和变量是大小写相关的 set(HELLO hello.cpp) add_executable(hello main.cpp hello.cpp) ADD_EXECUTABLE(hello ma…...

Java(119):ExcelUtil工具类(org.apache.poi读取和写入Excel)
ExcelUtil工具类(XSSFWorkbook读取和写入Excel),入参和出参都是:List<Map<String,Object>> 一、读取Excel testdata.xlsx 1、new XSSFWorkbook对象 File file = new File(filePath); FileInputStream fis = new FileInputStream(file);…...

Kong处理web服务跨域
前言 好久没写文章了,大概有半年多了,这半年故事太多,本文写不下,就写写文章标题问题! 问题描述 关于跨域的本质问题我这里不过多介绍,详细请看历史文章 跨域产生的原因以及常见的解决方案。 我这边是新…...

Kotlin学习——kt里的作用域函数scope function,let,run,with,apply,also
Kotlin 是一门现代但已成熟的编程语言,旨在让开发人员更幸福快乐。 它简洁、安全、可与 Java 及其他语言互操作,并提供了多种方式在多个平台间复用代码,以实现高效编程。 https://play.kotlinlang.org/byExample/01_introduction/02_Functio…...
informer辅助笔记:utils/timefeatures.py
定义了一套与时间特征相关的类和函数,旨在从时间序列数据中提取有用的时间特征,以支持各种时间序列分析和预测任务 from typing import Listimport numpy as np import pandas as pd from pandas.tseries import offsets from pandas.tseries.frequenc…...

[Verilog语法]:===和!==运算符使用注意事项
[Verilog语法]:和!运算符使用注意事项 1, 和 !运算符使用注意事项2,3, 1, 和 !运算符使用注意事项 参考文献: 1,[SystemVerilog语法拾遗] 和!运算符使用注意事项 2, 3,...

mybatis 高并发查询性能问题
场景: 使用Mybatis (3.5.10)SelectProvider注解执行动态sql 在高并发查询时 QPS 很低 问题复现 mybatis 配置 (getOfflineConfigSqlTemplate 该方法返回的是动态sql ) 压测结果 观察线程阻塞情况 此时的QPS 在 …...

我在Vscode学OpenCV 图像处理一(阈值处理、形态学操作【连通性,腐蚀和膨胀,开闭运算,礼帽和黑帽,内核】)
文章目录 一、阈值处理1.1 OpenCV 提供了函数 cv2.threshold()和函数 cv2.adaptiveThreshold(),用于实现阈值处理1.1.1. cv2.threshold():(1)在函数cv2.threshold()中,参数threshold_type用于指定阈值处理的方式。它有以下几种可选的阈值类型…...

Yolov8实现瓶盖正反面检测
一、模型介绍 模型基于 yolov8n数据集采用SKU-110k,这数据集太大了十几个 G,所以只训练了 10 轮左右就拿来微调了 基于原木数据微调:训练 200 轮的效果 10 轮SKU-110k 20 轮原木 200 轮瓶盖正反面 微调模型下载地址https://wwxd.lanzouu.co…...

GAN:WGAN前作
WGAN前作:有原则的方法来训练GANs 论文:https://arxiv.org/abs/1701.04862 发表:ICLR 2017 本文是wgan三部曲的第一部。文中并没有引入新的算法,而是标是朝着完全理解生成对抗网络的训练动态过程迈进理论性的一步。 文中基本是…...

数据库应用:MongoDB 文档与索引管理
目录 一、理论 1.MongoDB文档管理 2.MongoDB索引管理 二、实验 1.MongoDB文档管理 2.MongoDB索引管理(索引添加与删除) 3.MongoDB索引管理(全文索引) 4.MongoDB索引管理(多列索引) 5.MongoDB索引管…...

Python批处理PDF文件,PDF附件轻松批量提取
PDF附件是指在PDF文档中嵌入的其他文件,如图像、表格、音频、视频或其他文档。这些附件可以与PDF文档一起存储、传输和共享,为文档提供了更丰富的内容和更多的功能。通过添加附件,我们可以将相关文件和信息捆绑在一起,使其更易于管…...

Python可迭代对象排序:深入排序算法与定制排序
更多Python学习内容:ipengtao.com 排序在计算机科学中是一项基础而关键的操作,而Python提供了强大的排序工具来满足不同场景下的排序需求。本文将深入探讨Python中对可迭代对象进行排序的方法,涵盖基础排序算法、sorted函数的应用、以及定制排…...

基于matlab的图像去噪算法设计与实现
摘 要 随着我们生活水平的提高,科技产品飞速更新换代,在信息传输中,图像传输所占的比重越来越大。但自然噪声会在图像传输时干扰其传输过程,甚至会使图片不能表达其原来的意义。去噪处理就是为了去除图像中的噪声,从而…...

NFTScan 正式上线 Starknet NFTScan 浏览器和 NFT API 数据服务
2023 年 11 月 30 号,NFTScan 团队正式对外发布了 Starknet NFTScan 浏览器,将为 Starknet 生态的 NFT 开发者和用户提供简洁高效的 NFT 数据搜索查询服务。NFTScan 作为全球领先的 NFT 数据基础设施服务商,Starknet 是继 Bitcoin、Ethereum、…...

2023年亚太杯APMCM数学建模大赛A题水果采摘机器人的图像识别
2023年亚太杯APMCM数学建模大赛 A题 水果采摘机器人的图像识别 原题再现 中国是世界上最大的苹果生产国,年产量约3500万吨。同时,中国也是世界上最大的苹果出口国,世界上每两个苹果中就有一个是中国出口的,世界上超过六分之一的…...
mysql which is not in SELECT list; this is incompatible with DISTINCT解决方案
mysql报错Expression #1 of ORDER BY clause is not in SELECT list, references column ‘xxx’ which is not in SELECT list; this is incompatible with DISTINCT解决方案: 这是在 mysql5.7 版本,DISTINCT 与 order by 在一起用时则会报3065错误。因…...
利用ngx_stream_return_module构建简易 TCP/UDP 响应网关
一、模块概述 ngx_stream_return_module 提供了一个极简的指令: return <value>;在收到客户端连接后,立即将 <value> 写回并关闭连接。<value> 支持内嵌文本和内置变量(如 $time_iso8601、$remote_addr 等)&a…...

23-Oracle 23 ai 区块链表(Blockchain Table)
小伙伴有没有在金融强合规的领域中遇见,必须要保持数据不可变,管理员都无法修改和留痕的要求。比如医疗的电子病历中,影像检查检验结果不可篡改行的,药品追溯过程中数据只可插入无法删除的特性需求;登录日志、修改日志…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件
在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

dedecms 织梦自定义表单留言增加ajax验证码功能
增加ajax功能模块,用户不点击提交按钮,只要输入框失去焦点,就会提前提示验证码是否正确。 一,模板上增加验证码 <input name"vdcode"id"vdcode" placeholder"请输入验证码" type"text&quo…...
拉力测试cuda pytorch 把 4070显卡拉满
import torch import timedef stress_test_gpu(matrix_size16384, duration300):"""对GPU进行压力测试,通过持续的矩阵乘法来最大化GPU利用率参数:matrix_size: 矩阵维度大小,增大可提高计算复杂度duration: 测试持续时间(秒&…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战
“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...
ubuntu清理垃圾
windows和ubuntu 双系统,ubuntu 150GB,开发用,基本不装太多软件。但是磁盘基本用完。 1、查看home目录 sudo du -h -d 1 $HOME | grep -v K 上面的命令查看$HOME一级目录大小,发现 .cache 有26GB,.local 有几个GB&am…...
GitHub 常见高频问题与解决方案(实用手册)
1.Push 提示权限错误(Permission denied) 问题: Bash Permission denied (publickey) fatal: Could not read from remote repository. 原因: 没有配置 SSH key 或使用了 HTTPS 而没有权限…...