2017-08-17 89 views
0

我正在动物园管理员(不是直通码头工人)以外在我的本地与港口2181泊坞窗无法访问端口容器

此外,试图运行一个码头工人形象直通码头工人组成如下。

# 
    # Mesos 
    # 
    mesos-master: 
    image: mesosphere/mesos-master:1.0.3 
    restart: always 
    privileged: true 
    network_mode: host 
    volumes: 
     - ~/mesos-data/master:/tmp/mesos 
    environment: 
     MESOS_CLUSTER: "mesos-cluster" 
     MESOS_QUORUM: "1" 
     MESOS_ZK: "zk://localhost:2181/mesos" 
     MESOS_PORT: 5000 
     MESOS_REGISTRY_FETCH_TIMEOUT: "2mins" 
     MESOS_EXECUTOR_REGISTRATION_TIMEOUT: "2mins" 
     MESOS_LOGGING_LEVEL: INFO 
     MESOS_INITIALIZE_DRIVER_LOGGING: "false" 

Zookeepr正在侦听端口2181,但是我的码头工人进程无法连接到动物园管理员端口2181

有什么缺失?

感谢

+0

尝试添加'主机名:撰写文件中127.0.0.1' 。 – yamenk

+0

zk是否也在使用'network_mode:host'运行?而不是'localhost'尝试使用'127.0.0.1' –

+0

ZK是一个正常的过程,并没有运行一个docker。 – user1578872

回答

4

您从搬运工容器内指向localhost。这意味着您的Docker容器会尝试连接到该特定端口上的容器本身(localhost),而不是您服务器的本地主机上。您需要指定要连接的特定IP,或者您可以使用--net="host"选项运行Docker容器。

$ docker run -d --net="host" ... 

这将创建主机网络内部,而不是默认的桥接网络内部的容器。

例如: 我在主机的127.0.0.1:80上创建了一个apache容器(默认)和映射端口。所以在我的服务器上,我可以卷曲127.0.0.1:80

$ docker run -d -p 80:80 httpd 

curl 127.0.0.1:80从主机的工作原理:

$ curl localhost:80 
<html><body><h1>It works!</h1></body></html> 

如果我开始卷曲帮助容器安装在其中我会卷曲127.0.0.1:80

$ docker run --rm tutum/curl /bin/bash -c 'curl 127.0.0.1:80' 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
    0  0 0  0 0  0  0  0 --:--:-- --:--:-- --:--:--  0curl: (7) Failed to connect to 127.0.0.1 port 80: Connection refused 

连接被拒绝,因为容器内默认桥接网络并尝试在端口80上自行卷曲。

现在我开始host网络内部的容器:

$ docker run --net=host --rm tutum/curl /bin/bash -c 'curl 127.0.0.1:80' 
    % Total % Received % Xferd Average Speed Time Time  Time Current 
           Dload Upload Total Spent Left Speed 
100 45 100 45 0  0 8573  0 --:--:-- --:--:-- --:--:-- 22500 
<html><body><h1>It works!</h1></body></html> 

--net=host翻译成你的搬运工,撰写文件,意味着你必须添加network_mode: host

+0

我已添加network_mode:在我的泊坞窗撰写主机。此外,ZK是一个正常的过程,并没有运行作为码头工人。 – user1578872

+0

@ user1578872你可以从你的服务器curl到localhost:2181来检查zookeeper是否可以访问并正常工作?之后,从主机网络上部署的容器内部尝试相同的操作。 – lvthillo

+0

它在我的主机中工作,但不在部署在主机网络中的容器内。不知道还有什么要补充的。 – user1578872