2017-08-17 96 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