事倍功半是蠢蛋66 docker的服务名解析机制

docker跑一个服务我停了用自己的ide代替这个服务会出现的bug

Docker 网络配置:服务连接地址的技术要点
一、问题场景
在 Docker Compose 项目中,应用可能运行在两种环境:
Docker 容器内(通过 docker compose up 启动)
宿主机上(直接运行 Python 应用)
不同环境下,连接 Milvus 等服务的地址不同。
二、核心概念

  1. Docker 网络的工作原理
    Docker Compose 会创建一个内部网络(bridge),同一网络内的容器可以通过服务名相互访问。
┌─────────────────────────────────────────┐
│      Docker Bridge Network               │
│  ┌──────────┐      ┌──────────┐         │
│  │ backend  │──────│  milvus │         │
│  │          │      │          │         │
│  └──────────┘      └──────────┘         │
│      │                    │              │
└──────┼────────────────────┼──────────────┘
       │                    │
   端口映射              端口映射
       │                    │
┌──────▼────────────────────▼──────────────┐
│           宿主机 (Host)                   │
│  localhost:8000  ←→  localhost:19530    │
└──────────────────────────────────────────┘
  1. 服务名解析机制
    在容器内:Docker 内置 DNS 会将服务名(如 milvus)解析为容器 IP
    在宿主机:没有 Docker DNS,无法解析服务名,只能使用 localhost 或 127.0.0.1

image

比如这里我要是本地运行就应该换成localhost

posted @ 2025-12-10 15:16  空心橙子  阅读(5)  评论(0)    收藏  举报