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

​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. 最佳实践

  1. 生产环境推荐
    • 使用自定义 bridge 网络(避免默认 docker0 的 IP 冲突)。
    • 限制容器间通信:docker network create --internal my-net
  2. 跨主机通信
    • 选择 overlay 网络(Swarm/K8s)或 macvlan(物理网络集成)。
  3. 安全隔离
    • 敏感服务使用 --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

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

相关文章:

  • 前端三剑客之HTML
  • 深入解析Python中的Vector2d类:从基础实现到特殊方法的应用
  • nginx服务器实验
  • 23种设计模式解释+记忆
  • 虚幻引擎5-Unreal Engine笔记之`GameMode`、`关卡(Level)` 和 `关卡蓝图(Level Blueprint)`的关系
  • 快速上手SElinux
  • 第8章 常用实用类
  • 基于shardingsphere的分库分表方案
  • redis读写一致问题
  • Visual Studio已更新为17.14+集成deepseek实现高效编程
  • AI大模型(二)embedding模型调用后对产生的数据进行分析
  • 水平可见直线--上凸包(andrew算法
  • 【嵙大o】C++作业合集
  • 不同版本 Linux 系统账号操作指令 ——rtkit 账号删除、普通账号的创建 / 删除 / 权限修改超详细大全
  • 如何在 Windows 11 或 10 上安装 Amazon Corretto
  • Ubuntu 20.04 报错记录: Matplotlib 无法使用 OpenCV 的 libqxcb.so
  • O2O电商变现:线上线下相互导流——基于定制开发开源AI智能名片S2B2C商城小程序的研究
  • Python蓝色飘雪
  • Linux云计算训练营笔记day10(MySQL数据库)
  • Java虚拟机 - JVM与Java体系结构
  • MyBatis 核心技术详解:从连接池到多表查询
  • Python多进程、多线程、协程典型示例解析
  • 深入理解 OpenCV 的 DNN 模块:从基础到实践
  • OpenSearch入门:从文档示例到查询实战
  • MCP - Cline 接入 高德地图 Server
  • DAY 29 复习日:类的装饰器
  • # 终端执行 java -jar example.jar 时(example.jar为项目jar包)报错:“没有主清单属性” 的解决方法
  • 第一章:重启之始
  • 零基础搭建!基于PP-ShiTuV2的轻量级图像识别系统(Docker+API部署指南)
  • 蓝桥杯1140 最小质因子之和(Hard Version)