【问题标题】:Access to container by his hostname from host-machine从主机通过他的主机名访问容器
【发布时间】:2017-08-26 18:24:35
【问题描述】:

我有一些联合单个 docker 覆盖网络的 docker 容器。 在这个网络下,每个容器都通过主机名(容器的)访问。但我无法通过主机名(我的真实主机)通过主机名访问容器。

如何在我的真机上通过 docker 容器主机名访问容器?

【问题讨论】:

    标签: docker networking containers overlay


    【解决方案1】:

    您可以通过启动自己的 DNS 解析器容器来做到这一点。

    docker run -d --name devdns -p 53:53/udp \
      -v /var/run/docker.sock:/var/run/docker.sock ruudud/devdns
    

    一旦您运行了 DNS 服务器。服务器映射到您的本地主机。在 linux 上,您可以编辑 /etc/resolv.conf 并在顶部添加 nameserver 127.0.0.1。此更改将在重新启动后恢复。

    现在如果你启动一个 docker 容器

    docker run -d --hostname tarunlalwani --name tlalwani ubuntu:16.04 sleep 2000
    

    现在您可以使用容器名称或主机名 ping 容器

    $ ping tlalwani.dev
    PING tlalwani.dev (172.17.0.6) 56(84) bytes of data.
    64 bytes from 172.17.0.6: icmp_seq=1 ttl=64 time=0.030 ms
    
    $ ping tarunlalwani.dev
    PING tarunlalwani.dev (172.17.0.1) 56(84) bytes of data.
    64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.026 ms
    

    dev 是默认域名。您可以使用环境变量来更改它。更多详情请参考https://github.com/ruudud/devdns

    【讨论】:

    【解决方案2】:

    您可以简单地将127.0.0.1 <hostname_inside_docker> 添加到您的hosts 文件中(在您的本地计算机上

    【讨论】:

    • 如果我们使用公共端口的服务就可以了。但是情况:有一些具有相同端口的容器,我们应该访问每个容器。
    猜你喜欢
    • 2016-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-01
    • 2016-09-11
    • 1970-01-01
    • 2020-02-17
    • 2020-02-28
    相关资源
    最近更新 更多