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

容器之间怎么通信?Docker 网络全解析

概述

你有没有遇到过这种情况:

  • 启动了两个容器,但它们无法互相访问?
  • 明明服务在运行,却提示“Connection refused”?
  • 只能通过 IP 地址通信,又难记又容易出错?

这些问题,根源在于你还没搞懂 Docker 网络

默认网络:Bridge(桥接模式)

Docker 安装后,默认提供三种网络模式,最常用的是 bridge 模式。

查看默认网络

docker network ls

你会看到:

NETWORK ID     NAME      DRIVER    SCOPE
...          bridge    bridge    local
...          host      host      local
...          none      null      local

默认 bridge 网络的局限

当你不指定网络时,容器会自动加入 bridge 网络,但:

  • 容器之间只能通过 IP 地址通信
  • IP 可能变化,难以维护
  • 没有内置 DNS,无法用容器名访问

不适合多容器应用协作

自定义网络:让容器“互相认识”

Docker 推荐使用自定义桥接网络(Custom Bridge Network),它能解决默认网络的所有问题

  1. 创建自定义网络
docker network create my-network
  1. 启动容器并加入网络
# 启动数据库容器
docker run -d --name mysql --network my-network -e MYSQL_ROOT_PASSWORD=123456 mysql:8.0# 启动应用容器
docker run -d --name app --network my-network -p 3000:3000 my-node-app:1.0
  1. 容器之间如何通信

app 容器中,你可以直接用 服务名 访问 mysql

// Node.js 应用配置
const dbConfig = {host: 'mysql',  // 不是 IP!而是容器名user: 'root',password: '123456'
};

自定义网络自动提供 DNS 解析,容器名即主机名

Docker 网络的三大优势

优势说明
自动 DNS 解析容器可通过名称互相访问,无需记住 IP
内部隔离只有加入同一网络的容器才能通信,更安全
动态加入/离开可随时用 docker network connect/disconnect 管理

示例:动态连接容器

# 让一个已运行的容器加入网络
docker network connect my-network redis-container

常见网络模式对比

模式命令适用场景
bridge(自定义)--network my-network多容器应用,本地开发
host--network host性能要求高,共享主机网络
none--network none完全隔离,无网络
overlayDocker Swarm跨主机容器通信

推荐:开发和测试使用自定义 bridge 网络,生产环境结合 Swarm 或 Kubernetes 使用 overlay。

用 Docker Compose 自动管理网络

还记得 docker-compose.yml 吗?它会自动创建网络,所有服务默认可通信

version: '3.8'services:app:build: .ports:- "3000:3000"environment:DB_HOST: db  # 直接用服务名depends_on:- dbdb:image: mysql:8.0environment:MYSQL_ROOT_PASSWORD: 123456# Compose 会自动创建一个默认网络
# 所有服务都在同一个网络中,可直接通过服务名通信

运行:

docker compose up

无需手动创建网络,一切自动完成

网络调试技巧

  1. 查看容器网络信息
docker inspect <container-name>

查找 "Networks" 部分,查看 IP 和网络配置。

  1. 进入容器测试连通性
docker exec -it app sh
ping mysql
curl http://backend:3000/api
  1. 查看网络中的容器
docker network inspect my-network

最佳实践

实践说明
使用自定义网络避免默认 bridge 的限制
用有意义的服务名dbredisapi
docker-compose.yml 中定义网络配置即代码,易于维护
不要暴露不必要的端口只有需要被外部访问的服务才用 ports:

总结

通信方式是否推荐说明
通过 IP 地址IP 易变,难维护
使用 --link已过时,不推荐
自定义网络 + 容器名推荐方式,支持 DNS
Docker Compose✅✅✅最佳实践,自动管理

Docker 网络不是魔法,而是让容器协作的基础设施
掌握它,你才能真正驾驭多容器应用

http://www.dtcms.com/a/554999.html

相关文章:

  • 网站优化平台网站建设 岗位
  • 老干部活动中心网站建设方案wordpress 企业库插件
  • 网站前台和后台轻松seo优化排名
  • 怎样防止网站被黑专业做网站制作自助建站系统
  • 了解学习LVS-DR模式配置
  • 对网站建设安全性的要求网站的建设成本
  • 中国七大城市电动汽车使用与充电分析数据集
  • 博爱网站建设重庆响应式网站方案
  • 微前端乾坤vue3项目使用tinymce,通过npm,yarn,pnpm包安装成功,但是引用报错无法使用
  • 石家庄房产信息网查询系统googleseo优化
  • Spec-kit 入门
  • 做影视网站代理犯法吗外贸做的社交网站
  • 服装工厂做网站的好处电子商务概念
  • 第三篇:不靠毅力靠方法:“小步子原理”启动改变飞轮
  • 网站图片太多做外贸需要浏览外国网站
  • 有什么网站做统计图的win7建网站教程
  • 阿里巴巴指数查询重庆网站营销seo电话
  • 抖音代运营是什么意思长春做网站公司长春seo公司
  • 动易 手机网站云南做网站报价
  • 做网站什么数据库用的多网络营销大师排行榜
  • 基于音乐推荐数据的逻辑回归实验报告:曲风特征与用户收听意愿预测
  • 基于MQTT的智能家居系统的学习
  • 广平企业做网站推广河北软文搜索引擎推广公司
  • 通信的经典知识点和问题(3)
  • 边界扫描测试原理 12 -- BSDL 6 INTEST 描述
  • python图像识别系统 AI多功能图像识别检测系统(11种识别功能)银行卡、植物、动物、通用票据、营业执照、身份证、车牌号、驾驶证、行驶证、车型、Logo✅
  • 数字化转型可以解决传统供应链的哪些问题?
  • 亚马逊海外版网站软文范例500字
  • 长沙找人做企业网站文案南宁网站快速排名提升
  • 慈溪做网站什么价无极网