Docker 网络设置方式详解

Docker 网络是容器通信的核心基础,它允许容器之间、容器与主机之间以及容器与外部网络之间进行数据交互。Docker 提供了多种网络驱动类型,适用于不同场景,下面详细介绍 Docker 网络的设置方式。

一、Docker 网络的基本概念

Docker 网络通过驱动程序(Driver) 实现不同的网络模式,核心作用是:

  • 隔离容器网络环境
  • 实现容器间通信
  • 控制容器与外部网络的连接

Docker 安装后会自动创建 3 种默认网络,可通过 docker network ls 查看:

# 查看所有网络
docker network ls

在这里插入图片描述

默认网络包括:

  • bridge:默认网络,单机容器间通信(最常用)
  • host:容器直接使用主机网络栈(无网络隔离)
  • none:禁用容器网络(完全隔离)

二、自定义网络的创建(核心操作)

默认网络功能有限,实际场景中通常需要创建自定义网络。通过 docker network create 命令创建,支持多种驱动类型,常用参数如下:

参数说明
--driver-d指定网络驱动(如 bridge、overlay 等)
--subnet配置子网(如 192.168.0.0/16)
--gateway配置网关 IP
--ip-range分配容器的 IP 范围(如 192.168.1.0/24)
--opt-o驱动特定的选项(如桥接名称)
--name自定义网络名称
1. Bridge 网络(最常用,单机容器通信)

Bridge 是默认驱动,适合同一主机内的容器通信,支持 DNS 解析(容器可通过名称互访)。

创建自定义 bridge 网络

# 基础创建(自动分配子网)
docker network create my-bridge-net# 自定义子网、网关和 IP 范围
docker network create \--driver bridge \--subnet 172.20.0.0/16 \  # 子网--gateway 172.20.0.1 \    # 网关--ip-range 172.20.1.0/24 \ # 容器 IP 范围--opt "com.docker.network.bridge.name"="my-bridge" \ # 自定义桥接设备名my-custom-bridge

特点

  • 容器默认分配该网络的 IP(可通过 --ip 指定固定 IP)
  • 支持容器名称互访(如容器 app1 可直接 ping app2
  • 与默认 bridge 相比,安全性更高(默认隔离,需显式连接)
2. Host 网络(无网络隔离)

Host 驱动让容器直接使用主机的网络栈(IP、端口与主机共享),性能最优但无隔离性。

创建 host 网络(通常无需手动创建,直接使用默认 host 网络):

# 使用默认 host 网络运行容器(无需创建)
docker run -d --network host --name my-host-app nginx

特点

  • 容器无需端口映射(直接使用主机端口,如容器的 80 端口即主机的 80 端口)
  • 适合对网络性能要求极高的场景(如高频通信服务)
  • 安全性低(容器直接暴露在主机网络中)
3. Overlay 网络(跨主机容器通信)

Overlay 驱动用于跨主机的容器通信(需 Docker Swarm 集群环境),通过 VXLAN 技术实现跨主机数据传输。

创建步骤

  1. 初始化 Swarm 集群(需至少 1 个管理节点):

    docker swarm init --advertise-addr 主机IP  # 管理节点初始化
    
  2. 创建 overlay 网络:

    docker network create \--driver overlay \--attachable \  # 允许非 Swarm 服务的容器连接--subnet 10.0.0.0/24 \my-overlay-net
    

特点

  • 跨主机容器可直接通信(无需复杂路由配置)
  • 支持加密(通过 --opt encrypted 开启数据加密)
  • 依赖 Swarm 集群(单主机无需使用)
4. Macvlan 网络(容器模拟物理设备)

Macvlan 允许为容器分配物理网卡级别的 MAC 地址,让容器像独立物理设备一样接入网络(适合需要固定网络标识的场景)。

创建 macvlan 网络

docker network create \--driver macvlan \--subnet 192.168.1.0/24 \--gateway 192.168.1.1 \--opt parent=eth0 \  # 绑定主机物理网卡(如 eth0)my-macvlan-net

特点

  • 容器拥有独立 MAC 和 IP(与物理设备在同一网络)
  • 适合需要被外部网络直接识别的场景(如网络设备模拟)
  • 需主机网卡支持(部分虚拟网卡可能不兼容)
5. None 网络(完全禁用网络)

None 驱动完全禁用容器网络,适合无需网络的离线任务(如数据处理脚本)。

使用方式(无需创建,直接使用默认 none 网络):

docker run -d --network none --name no-network-app busybox sleep 3600

三、容器与网络的关联操作

1. 运行容器时连接网络
# 连接到指定网络(可同时连接多个网络)
docker run -d \--name my-app \--network my-bridge-net \  # 主网络--network-alias app1 \    # 网络内别名(用于 DNS 解析)nginx# 为容器指定固定 IP(仅自定义网络支持)
docker run -d \--name fixed-ip-app \--network my-bridge-net \--ip 172.20.1.10 \  # 需在网络的 ip-range 范围内nginx
2. 为运行中的容器添加/移除网络
# 连接到新网络
docker network connect my-overlay-net my-app# 从网络断开
docker network disconnect my-overlay-net my-app

四、网络管理与调试

1. 查看网络详情
docker network inspect my-bridge-net  # 查看网络配置、关联的容器等
2. 删除网络
# 先断开所有容器连接,再删除
docker network rm my-bridge-net
3. 测试容器间通信
# 在容器内 ping 另一容器(通过名称或 IP)
docker exec -it my-app ping app1  # 基于网络别名通信

五、实践

  1. 优先使用自定义 bridge 网络:相比默认 bridge,支持 DNS 名称解析,隔离性更好。
  2. 跨主机用 overlay:配合 Swarm 或 Kubernetes 实现集群网络。
  3. 减少 host 网络使用:无隔离性,可能导致端口冲突。
  4. 固定 IP 谨慎使用:动态分配更符合容器弹性伸缩特性,固定 IP 适合特殊场景(如服务注册)。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

export default和export function的作用及export的含义

在 JavaScript 中,export 是一个关键字,用于将模块中的变量、函数、类等导出,以便其他模块可以导入和使用。export default 和 export(非默认导出)是两种不同的导出方式,它们在使用场景和语义上有明显的区别…

免费 ollama 可用地址共享 内含免费 deepseek,gpt,bge,llama,Qwen,embed 大模型等

ollama 共享 介绍 集ollama地址的批量添加,批量校验,批量获取 ,api接口调用于一体 演示地址:ollama格式化工具 开源地址:https://gitee.com/web/ollama-share 使用说明 index.php 通过提交table 批量提交ollama地…

Android Audio实战——获取活跃音频类型(十五)

在 Android Audio 开发中,很多场景需要获取当前正在播放的音频类型,而在音频管理器 AudioManager 中并没有发现类似的接口,这一篇文章就来看一下实现获取活跃音频类型的方式。 一、音频类型获取 对于获取当前活跃音频流类型,在《硬按键调节音量》中是通过 getActiveStream…

Verilog功能模块--SPI主机和从机(02)--SPI主机设计思路与代码解析

前言 上一篇文章介绍了SPI的四种工作模式及其时序特性,相信各位同学已经掌握了SPI通信的核心原理。 本文用纯Verilog设计了功能完整的4线SPI主机,并详细说明了模块编码思路和使用注意事项,最后分享了源码。 一、模块功能 本Verilog功能模块—…

Decoder模型 向量模长表示什么

Decoder模型 向量模长表示什么 词和其他词的关系的强弱和关联程度;生僻词模长小 从实验结果来看,Qwen2-7B-Instruct的向量模长规律与之前的预期(“模长与语义丰富度、确定性正相关”)完全相反,这反映了Decoder-only模型(尤其是指令微调模型)的表征特性与Encoder-only模…

STL容器及其算法

C 标准库容器详解:特性、用法与场景选型容器是 C 标准库(STL)的核心组件,用于存储和管理数据。不同容器因底层实现不同,在性能、功能和适用场景上差异显著。本文系统梳理vector、list、set、map等常用容器,…

MySQL ZIP安装教程:从解压到启动

金金金上线! 话不多,只讲你能听懂的前端知识 前言 我这里不能下载安装程序的mysql,由于电脑安全限制,安装时会弹出需要管理员账号密码权限,此路行不通,所以琢磨着免安装版本怎么个流程,好&#…

p2p打洞

p2p网络穿透库,它的C++版本目前只支持linux,不支持win,它最新版本的穿透用的tcp,老版本支持tcp/udp: https://libp2p.io/ P2P-udp的穿透教程: https://edu.51cto.com/lesson/731596.html 目前打洞机制最好的库是webrtc,其次是libnice,它是轻量级的专门打洞的库。 libni…

『“无恙心宽”,梗痛不常』——爱上古中医(12)(健康生活是coder抒写优质代码的前提条件——《黄帝内经》伴读学习纪要)

养心护心气血通,无痛无梗全身松。 笔记模板由python脚本于2025-08-10 15:54:46创建,本篇笔记适合至少通晓一门语言,熟悉基本编程范式的coder翻阅。 学习的细节是欢悦的历程 博客的核心价值:在于输出思考与经验,而不仅仅…

Spark 运行流程核心组件(一)作业提交

1、Job启动流程1、Client触发 SparkContext 初始化 2、SparkContext 向 Master 注册应用 3、Master 调度 Worker 启动 Executor 4、Worker 进程启动 Executor 5、DAGScheduler 将作业分解为 Stage: 6、TaskScheduler 分配 Task 到 Executor 2、核心组件组件职责Spar…

MySQL 临时表与复制表

一、MySQL 临时表临时表是会话级别的临时数据载体,其设计初衷是为了满足短期数据处理需求,以下从技术细节展开说明。(一)核心特性拓展1.生命周期与会话绑定会话结束的判定:包括正常断开连接(exit/quit&…

从配置到调试:WinCC与S7-1200/200SMT无线Modbus TCP通讯方案

测试设备与参数l 西门子PLC型号:S7-1200 1台l 西门子PLC型号:S7-200Smart 1台l 上位机:WinCC7.4 1台l 无线通讯终端——DTD418MB 3块l 主从关系:1主2从l 通讯接口:RJ45接口l 供电:12-24VDCl 通讯协议&a…

Android沉浸式全屏显示与隐藏导航栏的实现

1. 总体流程以下是实现沉浸式全屏显示和隐藏导航栏的流程:步骤描述步骤1创建一个新的Android项目步骤2在布局文件中定义需要展示的界面步骤3在Activity中设置沉浸式全屏显示步骤4处理系统UI的显示与隐藏步骤5运行应用并测试效果2. 详细步骤步骤1:创建一个…

EN 62368消费电子、信息技术设备和办公设备安全要求标准

EN 62368认证标准是一项全球性的电子产品安全标准,用于评估和认证消费电子、信息技术设备和办公设备的安全性。该标准由国际电工委员会(IEC)制定,取代了传统的EN60065和EN 60950两个标准,成为国际电子产品安全领域的新指导。IEC /EN 62368-1是…

【unity实战】使用Splines+DOTween制作弯曲手牌和抽牌动画效果

最终效果 文章目录最终效果前言实战1、Splines的使用2、绘制样条线3、DOTween安装和使用4、基于样条曲线(Spline)的手牌管理系统4.1 代码实现4.2 解释:(1)计算第一张卡牌的位置(居中排列)&#…

Flask模板注入梳理

从模板开始介绍:Flask中有许多不同功能的模板,他们之间是相互隔离的地带,可供引入和使用。Flask中的模块:flask 主模块:包含框架的核心类和函数,如 Flask(应用实例)、request&#x…

企业级的即时通讯平台怎么保护敏感行业通讯安全?

聊天记录存在第三方服务器、敏感文件被误发至外部群组、离职员工仍能查看历史消息.对于金融、医疗、政务等对数据安全高度敏感的行业而言,“沟通效率与”信息安全”的矛盾,从未像今天这样尖锐。企业即时通讯怎么保护敏感行业通讯安全?这个问题…

Java Spring框架最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡

Java Spring框架最新版本及发展史详解(截至2025年8月)-优雅草卓伊凡引言今天有个新项目 客户问我为什么不用spring 4版本,卓伊凡我今天刚做完项目方案,我被客户这一句问了有点愣住,Java Spring框架最新版本及发展史详解…

Android实现Glide/Coil样式图/视频加载框架,Kotlin

Android实现Glide/Coil样式图/视频加载框架&#xff0c;Kotlin <uses-permission android:name"android.permission.WRITE_EXTERNAL_STORAGE" /><uses-permission android:name"android.permission.READ_EXTERNAL_STORAGE" /><uses-permiss…

【k8s】pvc 配置的两种方式volumeClaimTemplates 和 PersistentVolumeClaim

pvc配置实例 实例1在Deployment中配置 template:xxxxxxvolumeClaimTemplates:- metadata:name: dataspec:accessModes:- ReadWriteOnceresources:requests:storage: 1GistorageClassName: nfsdev-storageclass (创建好的storageClassName)实例2#先创建一个pvc 然后在 Deploym…