2017-09-16 68 views
0

我有以下码头合成文件。我正尝试从主机访问在容器中运行的服务。码头合成网络 - 主机名未解决

但是主机名永远不会解决。

version: '2' 
networks: 
    mynet: 
    driver: bridge 
services: 


    grpcserver: 
    image: test/image 
    volumes: 
     - ./:/var/local/git 
    ports: 
     - 50051:50051 
    stdin_open: true 
    tty: true 
    hostname: grpcserver 
    networks: 
     - mynet 
    entrypoint: bash ../var/local/git/service/start.sh 

当我exec的容器,我可以向telnet grpcserver 50051正在运行的服务使用主机名成功。但是从主持人来说,我做不到。

版本

泊坞窗,撰写版本1.16.1,构建6d1ac21

回答

2

Docker容器不使用主机上他们的名字解析。他们只能在其他容器内解决。该名称取决于您是否尝试从同一撰写/网络中的另一个服务或另一个服务进行连接。

如果你需要你的容器可以从主机发现,你需要使用像dnsmasq这样的工具。请参阅下面的答案关于如何做这样的设置的更多细节

Access to container by his hostname from host-mascine