【问题标题】:Access to docker container using host name instead of localhost使用主机名而不是 localhost 访问 docker 容器
【发布时间】:2019-09-05 17:28:53
【问题描述】:

我正在使用 docker-compose 和 docker。一切都很好。但从主机访问服务的唯一方法是通过http://localhost:port。我希望能够使用容器名称进行访问,例如:http://elastic:9020

它在 docker 中运行良好。如果一个容器需要访问另一个容器,我可以使用http://elastic:9020,但不能使用主机。当然,我正在公开端口并使用端口映射,并且正如我所说,它使用 localhost 工作。码头工人

更新:我一直在寻找无需安装 DNS 服务器或更新 .host 文件的本地解决方案。

【问题讨论】:

标签: docker docker-compose


【解决方案1】:

有一个旨在解析 Docker 主机名的 OSS 项目:

mageddo/dns-proxy-server:从你的 docker 容器中解析你的 DNS 主机,然后从你的本地配置,然后从互联网

主要特点:

  • 从本地配置数据库解析主机名
  • 使用 docker hostname 选项或 HOSTNAMES env
  • 从 docker 容器中解析主机名
  • 如果以上两个都没有答案,则从配置的 DNS 服务器列表中解析主机名(作为代理)
  • 使用通配符解析主机名
  • 创建/列出/更新/删除A/CNAME记录的图形界面
  • 使用host.docker主机名解析主机IP
  • 通过容器名/服务名访问容器
  • 指定从哪个网络解决容器 IP

使用方法:

docker run --rm --hostname dns.mageddo \ -v /var/run/docker.sock:/var/run/docker.sock \ -v /etc/resolv.conf:/etc/resolv.conf \ defreitas/dns-proxy-server

【讨论】:

  • 所以我知道没有本地解决方案?
  • 我希望有一个简单的答案...无论您如何切片,您都需要修改或替换您的 DNS 服务器处理和解析 Docker 容器的方式。我让这个工具在 CentOS 8 VM 实例上运行,其中有多个 Docker 容器运行不同的交叉依赖的 SaaS(Spring Boot 应用程序、Keycloak 等),它基本上是开箱即用的。话虽如此,我很想看到在像 AWS 这样的生产环境中这将如何工作的文档(或关于如何使寻址工作的良好解决方案)。
  • AWS 有自己的 DNS:Route 53
猜你喜欢
  • 2016-09-11
  • 2018-04-14
  • 2021-09-10
  • 2016-06-20
  • 1970-01-01
  • 2020-07-17
  • 2020-02-17
  • 2017-02-18
  • 1970-01-01
相关资源
最近更新 更多