← 全部文章

技术与生活 / 一篇记录

容器里的 127.0.0.1 到底指向谁?

容器内部的 localhost 指向它自己,不会自动指向另一个数据库容器。

每个容器通常拥有独立网络命名空间。应用连接 localhost 时,寻找的是自己内部的服务,而不是宿主或旁边的数据库容器,这是容器迁移时常见的误解。

操作与观察

容器名与镜像名仅作示例;操作前先确认目标对象,不直接对不明数据执行清理。

docker network ls

确认服务是否在同一网络,并用服务名连接。

检查 Compose 服务是否共享网络,再使用数据库服务名。暴露数据库端口有时能让错误配置暂时“连通”,却会增加不必要的访问入口。

网络名字与服务名字是两层信息。检查服务连接时,既要确认它们共享网络,也要确认应用使用的是正确服务名和容器内部端口,而不是宿主映射到外部的那个端口。

别遗漏这条边界

不要为方便连接而直接把数据库端口暴露到公网。

参考:Docker 文档。

搜索文章

输入关键词,找回一篇记录。