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

docker network 自定义网络配置与管理指南

Docker 自定义网络配置与管理指南

1. 网络基础概念

Docker 网络是容器间通信和与外部世界交互的基础。通过自定义网络,可以实现容器间的隔离、静态 IP 分配和服务发现。

关键术语:

  • 子网(Subnet):IP 地址的逻辑分组,例如 172.18.0.0/16 包含 65,536 个 IP 地址
  • 网关(Gateway):子网的默认路由,通常是子网的第一个或最后一个 IP
  • CIDR 表示法IP/前缀长度,如 172.18.0.1/16 表示前 16 位为网络位
  • 桥接网络(Bridge):Docker 默认的网络驱动,用于容器间通信
2. 创建自定义网络

创建名为 net_base 的桥接网络,指定特定的子网和网关:

docker network create \--driver bridge \         # 使用桥接网络驱动(默认)--subnet 172.18.0.0/16 \  # 指定 IP 地址范围--gateway 172.18.0.254 \  # 手动指定网关 IP(子网内的最后一个可用 IP)net_base                  # 网络名称

参数说明

  • --driver bridge:创建基于 Linux 桥接的网络
  • --subnet:定义网络的 IP 地址范围
  • --gateway:设置网关 IP(必须在子网范围内)
3. 启动容器并分配静态 IP

在自定义网络中启动容器并分配静态 IP:

docker run -d \--name mysql-8.0.39 \        # 容器名称--network net_base \         # 连接到自定义网络--ip 172.18.0.1 \           # 指定静态 IP 地址(网关为 0.254,因此 0.1 可用)-p 3306:3306 \              # 端口映射-e MYSQL_ROOT_PASSWORD=Puyou123. \  # 环境变量设置-v /etc/localtime:/etc/localtime:ro \  # 时区同步-v /volume/mysql_8.0.39/data:/var/lib/mysql \  # 数据持久化mysql:8.0.39                # 镜像名称

注意事项

  • 静态 IP 必须在子网范围内且未被使用
  • 网关已设置为 172.18.0.254,因此 0.1 可安全分配给容器
  • 静态 IP 需要在创建容器时指定,无法在运行时修改
4. 网络管理常用命令

查看网络列表

docker network ls

查看网络详细信息

docker network inspect net_base

连接现有容器到网络

docker network connect net_base <容器名或ID>

断开容器与网络的连接

docker network disconnect net_base <容器名或ID>

删除自定义网络(需先断开所有容器):

docker network rm net_base
5. 验证网络配置

检查容器 IP 地址

docker inspect -f '{{.NetworkSettings.Networks.net_base.IPAddress}}' mysql-8.0.39

从容器内部测试网络连通性

# 测试网关连通性
docker exec -it mysql-8.0.39 ping 172.18.0.254# 测试其他容器连通性(如果有)
docker exec -it mysql-8.0.39 ping 172.18.0.3

查看容器网络配置

docker exec -it mysql-8.0.39 ip addr show eth0
6. 网络配置最佳实践
  1. 为不同环境创建独立网络:开发、测试、生产环境使用不同网络

  2. 合理规划 IP 地址:为每个服务预留足够的 IP 地址空间

  3. 避免网关 IP 冲突:手动指定网关时,确保与容器 IP 无重叠

  4. 使用网络别名简化通信

    docker run -d --name web --network net_base --network-alias www nginx
    

    其他容器可通过 www 域名访问该容器

  5. 使用 Docker Compose 管理复杂网络

    version: '3'
    networks:net_base:driver: bridgeipam:config:- subnet: 172.18.0.0/16gateway: 172.18.0.254
    services:mysql:image: mysql:8.0.39networks:net_base:ipv4_address: 172.18.0.1
    
7. 故障排查
  1. 容器无法访问外网

    • 检查网关 IP 是否正确配置
    • 确认宿主机防火墙允许容器网络流量
  2. 容器间无法通信

    • 检查容器是否连接到同一网络
    • 确认 IP 地址分配无冲突
    • 使用 docker network inspect 检查网络配置
  3. 静态 IP 分配失败

    • 确保指定的 IP 在子网范围内
    • 使用 docker network inspect 查看已分配的 IP

通过合理使用自定义网络和静态 IP 分配,可以构建出结构清晰、易于管理的容器网络环境。

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

相关文章:

  • 数字孪生技术如何重塑能源产业?
  • 生成树协议(STP)配置详解:避免网络环路的最佳实践
  • java基础(api)
  • 第八天的尝试
  • 印度语言指令驱动的无人机导航!UAV-VLN:端到端视觉语言导航助力无人机自主飞行
  • AllToAll通信为什么用于EP并行?
  • Linux性能监控工具nmon
  • 【开源解析】基于深度学习的双色球预测系统:从数据获取到可视化分析
  • Axure系统原型设计首页模版方案
  • InetAddress 类详解
  • AI大模型技术全景解析:核心原理与关键技术拆解
  • 【C++ 真题】P5736 【深基7.例2】质数筛
  • HJ23 删除字符串中出现次数最少的字符【牛客网】
  • 《Effective Java(第三版)》笔记
  • ESP32-S3 (ESP IDF 5.4.1 - LVGL 9.2.0)九宫格拼音输入法
  • 工业控制解决方案三段论
  • Java 实现四种单例(都是线程安全)
  • 【Linux】了解 消息队列 system V信号量 IPC原理
  • 常见字符串相似度算法详解
  • 使用Pandoc实现Markdown和Word文档的双向转换
  • 基于LiveData和ViewModel的路线管理实现(带PopupWindow删除功能)
  • 人工智能价值:技术革命下的职业新坐标
  • 【java】Java注解
  • 通信协议详解(分层技术解析)
  • 4-码蹄集600题基础python篇
  • 16、Python运算符全解析:位运算实战、字符串拼接与列表合并技巧
  • 如何在电脑上登录多个抖音账号?多开不同IP技巧分解
  • 【Redis】AOF日志
  • 8天Python从入门到精通【itheima】-26~28
  • CondaEnvException: The specified prefix appears to be a top level directory