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

时间:2019-09-05 17:28:53

标签: docker docker-compose

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

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

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

1 个答案:

答案 0 :(得分:1)

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

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