我正在使用 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/