当前位置: 首页 > ds >正文

docker 自定义网桥作用

Docker 自定义桥接网络(User-defined Bridge Network)提供了许多优于默认桥接网络的功能和特性。以下是自定义桥接网络的主要特性和优势的总结:

1. 容器名称解析

  • 内置 DNS 服务:自定义桥接网络中,Docker 提供了一个内置的 DNS 服务器,允许容器通过名称互相通信,而不需要知道对方的具体 IP 地址。
  • 自动更新即使容器重启后其 IP 地址发生变化,内置 DNS 会自动更新映射关系,确保名称解析始终有效。

2. 隔离性

  • 网络隔离:每个自定义桥接网络是相互独立的,默认情况下只有属于同一网络的容器才能互相通信。这提高了安全性,并减少了潜在的冲突。
  • 防止广播风暴:由于网络是隔离的,广播流量不会跨越不同的自定义桥接网络,从而减少网络拥塞。

3. 简化服务发现

  • 无需手动配置:在同一个自定义桥接网络中的容器可以通过名称直接访问其他容器的服务,无需手动配置或使用 --link 参数。
  • 易于扩展:你可以轻松地将新的容器加入到现有的自定义桥接网络中,并立即能够通过名称进行通信。

4. 更好的网络控制

  • IP 地址管理:你可以在创建自定义桥接网络时指定子网和网关,从而更好地控制 IP 地址的分配
  • 子网划分:可以根据需要创建多个自定义桥接网络,并为每个网络分配不同的子网,以避免 IP 地址冲突。

5. 外部连接选项

  • 端口映射:虽然自定义桥接网络提供了更好的内部通信方式,但你仍然可以通过 -p 或 --publish 参数将容器的端口映射到主机上,以便从外部访问。
  • 跨主机通信:结合 Docker 的 overlay 网络功能,可以实现跨主机的容器通信,这对于分布式应用非常有用。

6. 网络驱动支持

  • 插件支持:除了基本的桥接网络,Docker 还支持第三方网络驱动插件,可以满足更复杂的网络需求。
  • Macvlan 和 IPvlan:这些高级网络模式允许容器直接连接到物理网络,提供更高的性能和灵活性。

7. 容错性

  • 动态更新:如果容器重启或重新创建,Docker 会自动为其分配新的 IP 地址,并更新内置 DNS 服务中的记录,确保名称解析不受影响。
  • 高可用性:自定义桥接网络的设计使得容器之间的通信更加稳定和可靠,减少了因 IP 变化导致的通信中断问题。
示例

假设你有两个容器 webappdb,并且它们都连接到了一个名为 my_bridge_network 的自定义桥接网络。你可以这样启动这两个容器:

# 创建自定义桥接网络
docker network create my_bridge_network# 检查是否创建成功
docker network ls# 查看具体的网卡信息
docker inspect my_custom_network# 启动 db 容器并连接到自定义桥接网络
docker run -d --name db --network my_bridge_network mysql:latest# 启动 webapp 容器并连接到相同的自定义桥接网络
docker run -d --name webapp --network my_bridge_network my_webapp_image

像上面这种情况:

  • webapp 容器可以通过 db 这个名称直接访问 MySQL 数据库服务,而不需要知道它的具体 IP 地址。(ping db)
  • 如果 db 容器重启后 IP 地址发生变化,内置 DNS 服务会自动更新映射关系,确保 webapp 容器仍能通过 db 名称访问数据库。

 

示例

假设你想要创建一个名为 my_custom_network 的自定义桥接网络,并希望使用 192.168.10.0/24 作为子网,192.168.10.1 作为网关地址。

docker network create \--driver bridge \--subnet=192.168.10.0/24 \--gateway=192.168.10.1 \my_custom_network

http://www.xdnf.cn/news/16552.html

相关文章:

  • macOS 安装 Homebrew
  • Vue基础(25)_组件与Vue的内置关系(原型链)
  • 「iOS」————消息传递和消息转发
  • K8S 九 安全认证 TLS
  • 深入理解现代前端开发中的 <script type=“module“> 与构建工具实践
  • Orange的运维学习日记--13.Linux服务管理
  • OpenLayers 综合案例-点位聚合
  • 【通识】线性代数(Linear Algebra)
  • 深度学习在计算机视觉中的应用:对象检测
  • 从 .NET Framework 到 .NET 8:跨平台融合史诗与生态演进全景
  • 设计模式(十一)结构型:外观模式详解
  • ESP32步进电机控制实战:从原理到代码实现
  • JAVA秋招学习指南
  • 【Java实例】服务器IP一站式管理
  • linux 部署 flink 1.15.1 并提交作业
  • ios UIAppearance 协议
  • 元宇宙背景下治理模式:自治的乌托邦
  • 移植pbrt中的并行化到ray trace in weeks中
  • 268. 丢失的数字
  • RocksDB跳表MemTable优化揭秘
  • Java 集合进阶:从 Collection 接口到迭代器的实战指南
  • Containerd简介
  • 栈算法之【有效括号】
  • mybatis-plus从入门到入土(三):持久层接口之IService
  • Day 22: 复习
  • OTG原理讲解
  • 进制间的映射关系
  • 【RHCSA 问答题】第 12 章 安装和更新软件包
  • WorkManager vs Flow 适用场景分析
  • CSS变量与Houdini自定义属性:解锁样式编程新维度