当前位置: 首页 > 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 分配,可以构建出结构清晰、易于管理的容器网络环境。

相关文章:

  • 分布式系统设计 - 性能优化
  • Leetcode 1522. N 叉树的直径
  • Python项目文件组织与PyCharm实践:打造高效开发环境
  • 构建可重复的系统 - SRE 的 IaC 与 CI/CD 基础
  • RPA在持续集成和持续部署中的角色是什么?
  • 15.集合框架的学习
  • Docker-mongodb
  • uni-app 排坑
  • 【Linux学习笔记】ext2文件系统的深度剖析
  • 【1——Android端添加隐私协议(unity)1/3】
  • [密码学实战]使用C语言实现TCP服务端(二十九)
  • P1833 樱花
  • 高等数学-曲线积分与曲面积分
  • C++-继承
  • Axure系统原型设计首页模版方案
  • UE4 Simulation Stage 制作 平流
  • 5G 核心网中的 NPN 功能详解
  • 详解一下Go语言中的ParseInt
  • 【烧脑算法】单序列双指针:从暴力枚举到高效优化的思维跃迁
  • 后端开发实习生-抖音生活服务
  • 南京户外广告公司排行榜/合肥seo快排扣费
  • 做一个网站的策划方案/策划方案怎么做
  • 网站制作费/营销型网站建设的重要原则
  • 苏州网站建设运营推广/网络营销概念是什么
  • seo怎么给网站做外链/微信朋友圈广告如何投放
  • chinaz站长素材/如何建立企业网站