docker - 使用主机名而不是 localhost 访问 docker 容器

标签 docker docker-compose

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

它在 docker 内部运行良好。如果一个容器需要访问另一个容器,我可以使用 http://elastic:9020但不是来自主机。当然,我正在公开端口并使用端口映射,并且正如我所说的那样使用 localhost 工作。 docker

更新:我正在寻找不需要安装 DNS 服务器或更新 .host 文件的 native 解决方案。

最佳答案

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

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

主要特点:

  • Solve hostnames from local configuration database
  • Solve hostnames from docker containers using docker hostname option or HOSTNAMES env
  • Solve hostnames from a list of configured DNS servers(as a proxy) if no answer of two above
  • Solve hostnames using wildcards
  • Graphic interface to Create/List/Update/Delete A/CNAME records
  • Solve host machine IP using host.docker hostname
  • Access container by it’s container name / service name
  • Specify from which network solve container 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

关于docker - 使用主机名而不是 localhost 访问 docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57810423/

相关文章:

azure - 如何在多容器 Web 应用程序上挂载 Azure 文件?

python-3.x - 连接拒绝在 docker 上使用 Postgresql

ruby-on-rails - 在入口脚本中进行捆绑安装和 yarn 安装-Docker

docker - 将 docker 卷移动到不同的分区

windows - 如何在 Windows 中运行 docker-compose?

mongodb - Docker 磁盘空间用完

python - 云构建步骤中的云运行集成测试?

docker - 更改 Docker 容器中的 memlock 限制;是否可以?

docker - 为什么当我删除容器引用的图像时 docker 会抛出错误?

docker - 主机上的 chown docker 卷(可能通过 docker-compose)