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 的自定义桥接网络。你可以这样启动这两个容器:

javascript 复制代码
# 创建自定义桥接网络
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 作为网关地址。

javascript 复制代码
docker network create \
  --driver bridge \
  --subnet=192.168.10.0/24 \
  --gateway=192.168.10.1 \
  my_custom_network
相关推荐
ldj20206 小时前
Docker的docker-compose类比Spring的ApplicationContext
spring·docker
java叶新东老师6 小时前
k8s常用命令
云原生·容器·kubernetes
土豆丶杨8 小时前
centos 配置docker
docker·eureka·centos
杰哥的狗8 小时前
nacos连接失败,启动失败常见问题
linux·docker
DarkAthena9 小时前
【GaussDB】构建一个GaussDB的Docker镜像
数据库·docker·gaussdb
张火火isgudi13 小时前
CentOS8 使用 Docker 搭建 Jellyfin 家庭影音服务器
服务器·docker·容器
qq_4477053114 小时前
宝塔通过docker部署JupyterHub指南【常见错误处理】
运维·docker·容器
tanxiaomi14 小时前
docker 从主机复制文件到容器外进行编辑
运维·docker·容器
hzulwy15 小时前
docker与k8s的容器数据卷
docker·eureka·kubernetes