• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    Docker如何自定义网络实现容器互通

    发布者: 涵韵 | 发布时间: 2025-6-17 08:19| 查看数: 61| 评论数: 0|帖子模式

    一、自定义网络核心优势

    与传统–link对比
    能力默认bridge±-link自定义网络自动DNS解析仅单向链接有效全网络自动双向解析服务发现需手动维护链接动态更新容器IP映射网络隔离共享默认bridge独立子网隔离连接方式仅允许已链接容器通信网络内自由通信
    二、网络创建与配置


    2.1 创建自定义网络
    1. # 创建带自定义参数的bridge网络
    2. docker network create \
    3.   --driver=bridge \
    4.   --subnet=172.28.0.0/16 \
    5.   --gateway=172.28.0.1 \
    6.   --ipv6 --subnet=2001:db8:abc::/48 \
    7.   --label env=prod \
    8.   app-network

    9. # 验证网络配置
    10. docker network inspect app-network
    复制代码
    2.2 网络参数详解

    参数示例值作用说明–driverbridge/overlay/macvlan指定网络驱动类型–subnet172.28.0.0/16定义IPv4子网–gateway172.28.0.1设置默认网关–ip-range172.28.5.0/24限制IP分配范围–aux-addresshost1=172.28.1.5保留指定IP避免分配冲突
    三、容器连接与通信验证


    3.1 部署多容器服务
    1. # 运行数据库容器
    2. docker run -d \
    3.   --name mysql-db \
    4.   --network app-network \
    5.   -e MYSQL_ROOT_PASSWORD=secret \
    6.   mysql:8.0

    7. # 运行应用容器
    8. docker run -d \
    9.   --name webapp \
    10.   --network app-network \
    11.   -p 8080:8080 \
    12.   -e DB_HOST=mysql-db \
    13.   my-webapp:latest
    复制代码
    3.2 通信验证方法
    1. # 进入应用容器测试连接
    2. docker exec -it webapp ping mysql-db

    3. # 查看DNS解析记录
    4. docker exec webapp cat /etc/resolv.conf

    5. # 网络连通性测试
    6. docker exec webapp nc -zv mysql-db 3306
    复制代码
    四、高级网络策略


    4.1 容器别名机制
    1. # 为容器添加别名
    2. docker run -d \
    3.   --name legacy-app \
    4.   --network app-network \
    5.   --network-alias old-system \
    6.   legacy-app:v2

    7. # 使用别名访问
    8. docker exec webapp curl http://old-system:8000
    复制代码
    4.2 网络安全配置
    1. # 创建隔离网络
    2. docker network create \
    3.   --internal \
    4.   --ipam-opt com.docker.network.bridge.enable_icc=false \
    5.   secure-network

    6. # 容器间访问控制
    7. docker network connect --alias db --ip 172.29.0.101 app-network mysql-db
    复制代码
    五、多网络架构设计


    5.1 分层网络模型
    1. # 前端网络
    2. docker network create frontend-net --subnet=10.10.0.0/24

    3. # 后端网络
    4. docker network create backend-net --subnet=10.20.0.0/24

    5. # 数据库网络
    6. docker network create database-net --subnet=10.30.0.0/24
    复制代码
    5.2 容器多网卡配置
    1. # 连接多个网络
    2. docker network connect frontend-net webapp
    3. docker network connect backend-net webapp

    4. # 查看网络接口
    5. docker exec webapp ip addr show
    复制代码
    六、生产环境最佳实践


    6.1 网络规划建议

    网络类型IP段分配连接服务前端流量网络172.18.0.0/20Nginx、HAProxy业务服务网络192.168.16.0/20Spring Boot、Node.js应用数据存储网络10.8.0.0/16MySQL、Redis、Elasticsearch管理网络10.255.0.0/24Prometheus、Consul
    6.2 网络监控方案
    1. # 实时监控容器网络流量
    2. docker run -it --rm --net=host nicolaka/netshoot \
    3.   nload -t 1000 -i 1024 -o 1024 eth0

    4. ​​​​​​​# 抓包分析容器通信
    5. docker run --cap-add=NET_ADMIN --net=container:webapp \
    6.   nicolaka/netshoot tcpdump -i eth0 port 3306 -vv
    复制代码
    七、常见问题排查指南


    7.1 网络连接故障树



    7.2 典型错误解决

    问题:ping: bad address 'mysql-db'
    排查步骤:
    确认容器处于同一网络
    1. docker inspect webapp | grep NetworkMode
    复制代码
    检查容器DNS配置
    1. docker exec webapp cat /etc/resolv.conf
    复制代码
    手动解析测试
    1. docker exec webapp nslookup mysql-db
    复制代码
    以上就是Docker如何自定义网络实现容器互通的详细内容,更多关于Docker网络容器互通的资料请关注脚本之家其它相关文章!

    来源:https://www.jb51.net/server/33943247u.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表