2017-07-29 57 views
2

我有一个单机器群(即,一个主节点,就是这样),其具有以下docker-compose.yml文件:服务器不搬运工群内绑定到端口

version: "3" 
services: 
    web: 
    image: rbalicki/hellorocket:latest 
    ports: 
     - "8001:8000" 
    depends_on: 
     - "db" 
    environment: 
     - DATABASE_URL=postgres://docker:[email protected]:5432/pw_back 
    command: cargo run # this runs the server 
    db: 
    image: rbalicki/pg:latest 

我运行下面的命令,每教程:

docker-machine create --driver virtualbox myvm1 
docker-machine ssh myvm1 "docker swarm init --advertise-addr 192.168.99.100:2377" 
docker-machine scp docker-compose.yml myvm1:~ 
docker-machine ssh myvm1 "docker stack deploy -c docker-compose.yml hellorocketstack" 

docker machine ls给我的tcp://192.168.99.100:2376的IP。

web进程的Dockerfile也显示了8000。在本地,当我运行这个服务器时,它连接到8000端口没有问题。但是,在虚拟机内部,当我卷曲192.168.99.100:8001(同样适用于8000)时,它不会收到任何请求。这是真的,即使我杀了虚拟机并彻底重启我的机器。但是,如果我安装了其他服务(例如,教程中的可视化工具),它们工作得很好。

这让我疯狂!我怎样才能弄清楚发生了什么?

另外,在vm中,我也不能调用curl localhost:8001(它在重映射的端口上用于可视化器)。任何帮助表示赞赏!我可以采取下一步措施进行调试吗?

编辑:nc -zv 192.168.99.100 8001也没有变成什么! (它适用于可视化)

EDIT2:docker inspect CONTAINER显示:

 "Config": { 
     "ExposedPorts": { 
      "8001/tcp": {} 
     }, 
    }, 
    "NetworkSettings": { 
     "Ports": { 
      "8001/tcp": null 
     }, 
    } 

这是同样的事情docker inspect命令显示的工作示例(模暴露的端口号)

+1

什么Web容器秀做日志?如果你用'docker exec'连接到web容器,你可以'卷曲http:// localhost:8000'? – BMitch

+0

这工作 - 我得到了服务器的响应。现在怎么办? –

+0

停止Docker服务并运行'iptables -S'并发布规则。检查虚拟机上是否启用了'ufw'或'selinux'或'firewalld'。有些虚拟机默认具有IPTables规则,只允许22端口 –

回答

相关问题