Docker 网络
目录
前言
1. Docker 网络模式
2. 默认 bridge 网络详解
(1)特点
(2)操作示例
3. host 网络模式
(1)特点
(2)操作示例
4. overlay 网络(跨主机通信)
(1)特点
(2)操作示例
5. macvlan 网络(物理网络集成)
(1)特点
(2)操作示例
6. 网络调试命令
7. 最佳实践
8. 常见问题
(1)容器无法访问外网?
(2)端口映射失效?
前言
Docker 提供了多种网络模式,用于管理容器之间、容器与宿主机以及外部网络的通信。不同的网络模式适用于不同的场景,如开发、测试、生产环境等。
1. Docker 网络模式
Docker 默认支持以下网络模式:
网络模式 | 描述 | 适用场景 |
---|---|---|
bridge | 默认模式,容器通过虚拟网桥(docker0 )通信,每个容器分配独立 IP | 单机多容器通信(默认推荐) |
host | 容器直接使用宿主机的网络栈,不隔离网络(性能最好,但安全性低) | 高性能应用(如负载均衡、网络监控) |
none | 禁用所有网络,容器仅能通过 localhost 访问 | 安全隔离环境(极少使用) |
overlay | 跨主机的容器网络(用于 Docker Swarm/Kubernetes) | 分布式集群(多主机通信) |
macvlan | 为容器分配 MAC 地址,使其在物理网络中像独立设备运行 | 传统网络设备迁移(如 IoT、NFV) |
2. 默认 bridge
网络详解
(1)特点
- Docker 默认创建
docker0
虚拟网桥(IP 通常为172.17.0.1/16
)。 - 每个容器分配独立 IP(如
172.17.0.2
)。 - 容器间默认互通(但不同主机的
bridge
网络不互通)。 - 端口映射(
-p 宿主机端口:容器端口
)使外部访问容器服务。
(2)操作示例
# 查看所有网络
docker network ls# 创建自定义 bridge 网络(推荐)
docker network create my-bridge --driver=bridge --subnet=192.168.100.0/24# 运行容器并指定网络
docker run -d --name web --network my-bridge nginx# 查看容器 IP
docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web
3. host
网络模式
(1)特点
- 容器直接使用宿主机网络(无 NAT,性能最佳)。
- 端口直接绑定到宿主机(无需
-p
映射)。 - 缺点:端口冲突风险,安全性低。
(2)操作示例
# 使用 host 网络运行容器
docker run -d --name web --network host nginx# 访问服务(直接使用宿主机 IP)
curl http://localhost:80
4. overlay
网络(跨主机通信)
(1)特点
- 用于 Docker Swarm 或 Kubernetes,实现多主机容器通信。
- 基于 VXLAN 封装,支持加密(
--opt encrypted
)。
(2)操作示例
# 初始化 Swarm 集群
docker swarm init# 创建 overlay 网络
docker network create -d overlay my-overlay# 在 Swarm 中运行服务
docker service create --name web --network my-overlay nginx
5. macvlan
网络(物理网络集成)
(1)特点
- 容器直接接入物理网络,拥有独立 MAC 和 IP。
- 适用于需要直接暴露到局域网的场景(如 IoT 设备模拟)。
(2)操作示例
# 创建 macvlan 网络
docker network create -d macvlan \--subnet=192.168.1.0/24 \--gateway=192.168.1.1 \--ip-range=192.168.1.100/32 \-o parent=eth0 \my-macvlan# 运行容器
docker run -d --name iot-device --network my-macvlan alpine
6. 网络调试命令
命令 | 作用 |
---|---|
docker network ls | 列出所有网络 |
docker network inspect 网络名 | 查看网络详情(IP 段、容器列表等) |
docker exec -it 容器名 ping IP | 测试容器间通信 |
tcpdump -i docker0 | 抓包分析 bridge 网络流量 |
7. 最佳实践
- 生产环境推荐
- 使用自定义
bridge
网络(避免默认docker0
的 IP 冲突)。 - 限制容器间通信:
docker network create --internal my-net
。
- 使用自定义
- 跨主机通信
- 选择
overlay
网络(Swarm/K8s)或macvlan
(物理网络集成)。
- 选择
- 安全隔离
- 敏感服务使用
--network none
。 - 防火墙规则限制容器访问:
iptables -A DOCKER-USER -j DROP
。
- 敏感服务使用
8. 常见问题
(1)容器无法访问外网?
# 检查 DNS 配置
docker run --dns 8.8.8.8 alpine ping baidu.com# 检查宿主机 iptables
sudo iptables -L -n | grep DROP
(2)端口映射失效?
# 确认容器监听 0.0.0.0(而非 127.0.0.1)
docker exec nginx netstat -tuln | grep 80# 检查宿主机端口占用
netstat -tuln | grep 8080
相关文章:
Docker 网络
目录 前言 1. Docker 网络模式 2. 默认 bridge 网络详解 (1)特点 (2)操作示例 3. host 网络模式 (1)特点 (2)操作示例 4. overlay…...

【论文阅读】A Survey on Multimodal Large Language Models
目录 前言一、 背景与核心概念1-1、多模态大语言模型(MLLMs)的定义 二、MLLMs的架构设计2-1、三大核心模块2-2、架构优化趋势 三、训练策略与数据3-1、 三阶段训练流程 四、 评估方法4-1、 闭集评估(Closed-set)4-2、开集评估&…...
基于多头自注意力机制(MHSA)增强的YOLOv11主干网络—面向高精度目标检测的结构创新与性能优化
深度学习在计算机视觉领域的快速发展推动了目标检测算法的持续进步。作为实时检测框架的典型代表,YOLO系列凭借其高效性与准确性备受关注。本文提出一种基于多头自注意力机制(Multi-Head Self-Attention, MHSA)增强的YOLOv11主干网络结构,旨在提升模型在复杂场景下的目标特征…...

vue3 elementplus tabs切换实现
Tabs 标签页 | Element Plus <template><!-- editableTabsValue 是当前tab 的 name --><el-tabsv-model"editableTabsValue"type"border-card"editableedit"handleTabsEdit"><!-- 这个是标签面板 面板数据 遍历 editableT…...
关于机器学习的实际案例
以下是一些机器学习的实际案例: 营销与销售领域 - 推荐引擎:亚马逊、网飞等网站根据用户的品味、浏览历史和购物车历史进行推荐。 - 个性化营销:营销人员使用机器学习联系将产品留在购物车或退出网站的用户,根据客户兴趣定制营销…...

Linux的进程概念
目录 1、冯诺依曼体系结构 2、操作系统(Operating System) 2.1 基本概念 编辑 2.2 目的 3、Linux的进程 3.1 基本概念 3.1.1 PCB 3.1.2 struct task_struct 3.1.3 进程的定义 3.2 基本操作 3.2.1 查看进程 3.2.2 初识fork 3.3 进程状态 3.3.1 操作系统的进程状…...
C++ map容器: 插入操作
1. map插入操作基础 map是C STL中的关联容器,存储键值对(key-value pairs)。插入元素时有四种主要方式,各有特点: 1.1 头文件与声明 #include <map> using namespace std;map<int, string> mapStu; // 键为int,值…...
基于STC89C52的红外遥控的电子密码锁设计与实现
一、引言 电子密码锁作为一种安全便捷的门禁系统,广泛应用于家庭、办公室等场景。结合红外遥控功能,可实现远程控制开锁,提升使用灵活性。本文基于 STC89C52 单片机,设计一种兼具密码输入和红外遥控的电子密码锁系统,详细阐述硬件选型、电路连接及软件实现方案。 二、硬…...
Docker配置容器开机自启或服务重启后自启
要将一个 Docker 容器设置为开机自启,你可以使用 docker update 命令或配置 Docker 服务来实现。以下是两种常见的方法: 方法 1:使用 docker update 设置容器自动重启 使用 docker update 设置容器为开机自启 你可以使用以下命令,…...

计算机单个进程内存布局的基本结构
这张图片展示了一个计算机内存布局的基本结构,从低地址(0x00000000)到高地址(0xFFFFFFFF)依次分布着不同的内存区域。 代码段 这是程序代码在内存中的存储区域。它包含了一系列的指令,这些指令是计算机执行…...

我的电赛(简易的波形发生器大一暑假回顾)
DDS算法:当时是用了一款AD9833芯片搭配外接电路实现了一个波形发生,配合stm32f103芯片实现一个幅度、频率、显示的功能; 在这个过程中,也学会了一些控制算法;就比如DDS算法,当时做了一些了解,可…...
AI工程 新技术追踪 探讨
文章目录 一、核心差异维度对比二、GitHub对AI工程师的独特价值三、需要警惕的陷阱四、推荐追踪策略五、与传统开发的平衡建议 以下内容整理来自 deepseek 作为AI工程师,追踪GitHub开源项目 对技术成长和职业发展的影响 比传统应用开发工程师 更为显著,…...

算法题(149):矩阵消除游戏
审题: 本题需要我们找到消除矩阵行与列后可以获得的最大权值 思路: 方法一:贪心二进制枚举 这里的矩阵消除时,行与列的消除会互相影响,所以如果我们先统计所有行和列的总和,然后选择消除最大的那一行/列&am…...
在 Vue 中插入 B 站视频
前言 在 Vue 项目中,有时我们需要嵌入 B 站视频来丰富页面内容,为用户提供更直观的信息展示。本文将详细介绍在 Vue 中插入 B 站视频的多种方法。 使用<iframe>标签直接嵌入,<iframe>标签是一种简单直接的方式,可将 B 站视频嵌…...

printf函数参数与入栈顺序
01. printf()的核心功能 作用:将 格式化数据 输出到 标准输出(stdout),支持多种数据类型和格式控制。 int printf(const char *format, ...);参数: format:格式字符串,字符串或%开头格式符...:…...

仿生眼机器人(人脸跟踪版)系列之一
文章不介绍具体参数,有需求可去网上搜索。 特别声明:不论年龄,不看学历。既然你对这个领域的东西感兴趣,就应该不断培养自己提出问题、思考问题、探索答案的能力。 提出问题:提出问题时,应说明是哪款产品&a…...
08、底层注解-@Configuration详解
# Configuration 注解详解 08、底层注解-Configuration详解 Configuration 是 Spring 框架中用于定义配置类的核心注解,它允许开发者以 Java 代码的形式替代传统的 XML 配置,声明和管理 Bean。 ## 一、基本作用 ### 1. 标识配置类 使用 Configuration…...

Go语言语法---输入控制
文章目录 1. fmt包读取输入1.1. 读取单个值1.2. 读取多个值 2. 格式化输入控制 在Go语言中,控制输入主要涉及从标准输入(键盘)或文件等来源读取数据。以下是几种常见的输入控制方法: 1. fmt包读取输入 fmt包中的Scan和Scanln函数都可以读取输入…...
蓝桥杯单片机按键进阶
蓝桥杯单片机按键进阶 ——基于柳离风老师模板及按键进阶教程 文章目录 蓝桥杯单片机按键进阶1、按键测试-按下生效2、按键进阶-松手生效3、按键进阶-按键禁用(未完待续) 1、按键测试-按下生效 key.c #include "key.h"/*** brief 独立按键…...

CSS- 4.3 绝对定位(position: absolute)学校官网导航栏实例
本系列可作为前端学习系列的笔记,代码的运行环境是在HBuilder中,小编会将代码复制下来,大家复制下来就可以练习了,方便大家学习。 HTML系列文章 已经收录在前端专栏,有需要的宝宝们可以点击前端专栏查看! 点…...
Flink 作业提交流程
Apache Flink 的 作业提交流程(Job Submission Process) 是指从用户编写完 Flink 应用程序,到最终在 Flink 集群上运行并执行任务的整个过程。它涉及多个组件之间的交互,包括客户端、JobManager、TaskManager 和 ResourceManager。…...
拓展运算符
拓展运算符(Spread Operator)是ES6中引入的新特性,以下是关于它的一些知识点总结: 语法 拓展运算符的语法是三个点(...),它可以将数组或对象展开成多个元素或属性。 数组中的应用 • 数组展…...

Seata源码—6.Seata AT模式的数据源代理一
大纲 1.Seata的Resource资源接口源码 2.Seata数据源连接池代理的实现源码 3.Client向Server发起注册RM的源码 4.Client向Server注册RM时的交互源码 5.数据源连接代理与SQL句柄代理的初始化源码 6.Seata基于SQL句柄代理执行SQL的源码 7.执行SQL语句前取消自动提交事务的源…...

计算机科技笔记: 容错计算机设计05 n模冗余系统 TMR 三模冗余系统
NMR(N-Modular Redundancy,N 模冗余)是一种通用的容错设计架构,通过引入 N 个冗余模块(N ≥ 3 且为奇数),并采用多数投票机制,来提升系统的容错能力与可靠性。单个模块如果可靠性小于…...

Spring Boot 与 RabbitMQ 的深度集成实践(一)
引言 ** 在当今的分布式系统架构中,随着业务复杂度的不断提升以及系统规模的持续扩张,如何实现系统组件之间高效、可靠的通信成为了关键问题。消息队列作为一种重要的中间件技术,应运而生并发挥着举足轻重的作用。 消息队列的核心价值在于其…...

黑马程序员2024新版C++笔记 第2章 语句
1.if逻辑判断语句 语法主体: if(要执行的判断,结果是bool型){判断结果是true会执行的代码; } 2.AI大模型辅助编程 在Clion中搜索并安装对应插件: 右上角齿轮点击后找到插件(TRONGYI LINGMA和IFLYCODE)安装后重启ide即可。 重启后会有通义登…...
HTML5中的Microdata与历史记录管理详解
HTML5中的Microdata与历史记录管理解析 一、Microdata结构化数据 核心属性 itemscope 声明数据范围itemtype 指定数据词汇表(如http://schema.org/Product)itemprop 定义数据属性 <div itemscope itemtype"http://schema.org/Book">…...
上位机知识篇---涂鸦智能云平台
文章目录 前言 前言 本文简单介绍了涂鸦智能云平台。...
面试中的线程题
原文链接:线程题大全 Java 并发库同步辅助类 CountDownLatch 工作机制:初始化一个计数器,此计数器的值表示需要等待的事件数量。 提供了两个主要方法: await():当一个线程调用此方法时,它将阻塞&#…...
济南国网数字化培训班学习笔记-第三组-2-电力通信光缆网认知
电力通信光缆网认知 光缆网架构现状 基础底座 电路系统是高度复杂,实时性、安全性、可靠性要求极高的巨系统,必须建设专用通信网 相伴相生 电力系统是由发电、输电、变电、配电、用电等一次设施,及保障其正常运行的保护、自动化、通信等…...