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

Docker 网络的几种常见类型

目录

Docker 网络类型

桥接网络(Bridge)

通俗解释

特点

使用场景

示例

主机网络(Host)

通俗解释

特点

使用场景

示例

None 网络

通俗解释

特点

使用场景

示例

Overlay 网络

通俗解释

特点

使用场景

示例

Macvlan 网络

通俗解释

特点

使用场景

示例


Docker 网络类型

桥接网络:适合开发和测试环境,隔离性强。

主机网络:性能最高,适合高性能需求的场景。

None 网络:完全隔离,适合离线任务或安全隔离。

Overlay 网络:适合分布式应用和集群环境。

Macvlan 网络:适合需要直接接入物理网络的场景。

桥接网络(Bridge)

通俗解释

桥接网络就像是一个“虚拟的局域网”。Docker 在宿主机上创建了一个虚拟的网桥(比如 docker0),所有的容器就像连接到同一个路由器的不同设备一样,通过这个网桥互相通信,也可以访问外部网络。

特点
  • 隔离性:容器之间通过虚拟网桥隔离,比较安全。
  • 默认配置:Docker 默认会创建一个桥接网络,容器如果没有指定其他网络,就会连接到这个默认的桥接网络。
  • 外部访问:可以通过端口映射(-p 参数)让外部访问容器内的服务。
使用场景
  • 开发环境:适合开发时需要多个容器互相通信的场景,比如一个 Web 应用和一个数据库容器。
  • 测试环境:用于隔离测试环境中的容器,避免影响其他服务。
示例
# 创建一个自定义桥接网络
docker network create my_bridge

# 启动容器并连接到桥接网络
docker run -d --name my_web --network my_bridge nginx

主机网络(Host)

通俗解释

主机网络模式就像是“容器直接插在宿主机的网络接口上”。容器直接使用宿主机的网络栈,没有隔离,容器的网络配置和宿主机完全一致。

特点
  • 性能高:没有网络隔离和虚拟化开销,性能最好。
  • 无隔离:容器可以直接访问宿主机的网络,安全风险较高。
  • 端口冲突:容器和宿主机不能使用相同的端口。
使用场景
  • 高性能需求:适合对网络性能要求极高的场景,比如高性能的数据库服务。
  • 简单部署:适合不需要网络隔离的简单应用。
示例
# 启动容器并使用主机网络
docker run -d --name my_web --network host nginx

None 网络

通俗解释

None 网络就像是“拔掉网线”,容器没有任何网络配置,无法访问外部网络,也无法和其他容器通信。

特点
  • 完全隔离:容器完全与外界隔离,安全性最高。
  • 用途特殊:通常用于一些不需要网络的场景。
使用场景
  • 离线任务:比如运行一些不需要网络的脚本或工具。
  • 安全隔离:确保容器完全不会对外泄露信息。
示例
# 启动容器并使用 None 网络
docker run -d --name my_container --network none nginx

Overlay 网络

通俗解释

Overlay 网络就像是“跨多个主机的虚拟网络”。它允许在不同主机上的容器之间互相通信,就像它们在同一个局域网中一样。

特点
  • 跨主机通信:容器可以跨多台主机通信,非常适合分布式应用。
  • 需要 Docker Swarm:通常需要在 Docker Swarm 模式下使用,用于集群环境。
  • 复杂性较高:配置和管理相对复杂,但功能强大。
使用场景
  • 微服务架构:适合微服务架构,容器分布在多台主机上。
  • 集群环境:用于 Docker Swarm 集群,管理多个主机上的容器。
示例
# 创建一个 Overlay 网络
docker network create -d overlay my_overlay

# 在不同主机上启动容器并连接到 Overlay 网络
docker run -d --network my_overlay my_image

Macvlan 网络

通俗解释

Macvlan 网络就像是“给容器分配一个真实的 MAC 地址”,让容器看起来像是直接连接到物理网络的设备。

特点
  • 模拟真实设备:容器有自己的 MAC 地址,可以直接访问物理网络。
  • 适合特定场景:适用于需要直接接入物理网络的场景。
  • 配置复杂:需要配置物理网络接口,比较复杂。
使用场景
  • 网络设备模拟:模拟真实的网络设备,比如交换机或路由器。
  • 直接接入物理网络:容器可以直接访问物理网络中的其他设备。
示例
# 创建一个 Macvlan 网络
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my_macvlan

# 启动容器并连接到 Macvlan 网络
docker run -d --network my_macvlan my_image

相关文章:

  • 【腾讯地图】录入经纬度功能 - 支持地图选点
  • MYSQL的管理备份
  • SpringBoot里,什么是状态机?在商城系统的订单管理业务上如何应用?
  • golang下载安装图文教程(Linux环境)
  • 机器学习 - 理论和定理
  • 前端骨架怎样实现
  • 【DeepSeek】DeepSeek概述 | 本地部署deepseek
  • DeepSeek笔记(一):本地部署DeepSeek R1并搭建Web UI实现可视化交互的笔记
  • 开源模型应用落地-Qwen1.5-MoE-A2.7B-Chat与vllm实现推理加速的正确姿势(一)
  • GPT 系列模型发展史:从 GPT 到 ChatGPT 的演进与技术细节
  • STM32 裸机 C编程 vs micropython编程 vs linux python
  • 【Linux】网络基础
  • 西安电子科技大学考研成绩2月24号即可查询,成绩查询入口:
  • Spring Boot比Spring多哪些注解?
  • 漏洞挖掘 | 基于mssql数据库的sql注入
  • Linux(Centos 7.6)命令详解:head
  • 安装并配置 MySQL
  • 大数据、人工智能、云计算、物联网、区块链序言【大数据导论】
  • Repo命令使用
  • 【Elasticsearch】token filter分词过滤器
  • 印度一战机在巴基斯坦旁遮普省被击落,飞行员被俘
  • 19个剧团15台演出,上海民营院团尝试文旅融合新探索
  • 央行:当前我国债券市场定价效率、机构债券投资交易和风险管理能力仍有待提升
  • 马上评丨维护学术诚信别陷入“唯AI检测”误区
  • 江西省直机关工委副书记熊亮华履新宜春市委常委、宣传部部长
  • 第一集|《刑警的日子》很生活,《执法者们》有班味