2016-09-01 72 views
0

如果你不熟悉的碼頭工人捆請閱讀this.如何使用指定的暴露端口啓動docker bundle?

所以我試圖創建以下docker-compose.yml

version: "2" 
services: 
    web: 
    image: cohenaj194/apache-simple 
    ports: 
     - 32701:80 
    nginx: 
    image: nginx 
    ports: 
     - 32700:80 

簡單泊塢窗束但這種捆綁創建的泊塢窗服務的端口是不暴露在外,我無法通過端口32700或32701訪問服務中的任何容器,如我在docker-compose.yml中指定的那樣。我該如何公開碼頭捆綁服務的端口?

更新:我相信我的問題可能在於:與docker-compose bundle創建了test.dab文件不包含端口32700或32701的任何提及:

{ 
    "Services": { 
    "nginx": { 
     "Image": "[email protected]:d33834dd25d330da75dccd8add3ae2c9d7bb97f502b421b02cecb6cb7b34a1b6", 
     "Networks": [ 
     "default" 
     ], 
     "Ports": [ 
     { 
      "Port": 80, 
      "Protocol": "tcp" 
     } 
     ] 
    }, 
    "web": { 
     "Image": "cohenaj194/[email protected]:6196c5bce25e5f76e0ea7cbe8e12e4e1f96bd36011ed37d3e4c5f06f6da95d69", 
     "Networks": [ 
     "default" 
     ], 
     "Ports": [ 
     { 
      "Port": 80, 
      "Protocol": "tcp" 
     } 
     ] 
    } 
    }, 
    "Version": "0.1" 
} 

試圖插入額外的端口到該文件也不起作用,並在下面的錯誤結果:

Error reading test.dab: JSON syntax error at byte 229: invalid character ':' after object key:value pair 

UPDATE2:我的服務是訪問過默認端口泊塢窗羣分配給服務沒有定義主機端口時:

[email protected]:~/test$ docker service inspect test_nginx --pretty 
ID:  3qimd4roft92w3es3qooa9qy8 
Name:  test_nginx 
Labels: 
- com.docker.stack.namespace=test 
Mode:  Replicated 
Replicas: 2 
Placement: 
ContainerSpec: 
Image:  [email protected]:d33834dd25d330da75dccd8add3ae2c9d7bb97f502b421b02cecb6cb7b34a1b6 
Networks: 1v5nyqqjnenf7xlti346qfw8n 
Ports: 
Protocol = tcp 
TargetPort = 80 
PublishedPort = 30000 

然後我就可以得到從端口30000我的服務,但是我希望能夠來定義我的服務將使用主機端口。

+0

您是如何檢查端口無法訪問的? – Scadge

+0

curl和telnet –

+0

你可以在啓動時發佈docker ps的結果 – Sylwit

回答

-1

泊塢窗旗-p $將localPort運行:$ containerport

編輯:

你檢查與塢窗PS暴露的端口?

使用搬運工服務檢查

+0

是的,不幸的是,這不是如何碼頭包捆綁工作。從docker compose文件創建一個bundle,將其轉換爲'.dab'文件,然後使用'docker deploy fileName.dab' –

+0

post編輯將其推送到docker swarm(版本1.12或更高版本).... –

+0

是的,我可以找到服務的主機端口。不幸的是(由於'test.dab'文件中缺少的信息,它沒有綁定到我想要的主機端口。我想知道這是否還有一個功能尚未添加到Docker捆綁包中? –

0

由於碼頭工人1.12版本的,也沒辦法在包指定「發表」端口。該軟件包是一種可移植的格式,暴露的端口是不可移植的(如果兩個軟件包使用相同的軟件包,它們將會發生衝突)。

所以暴露的端口不會是捆綁配置的一部分。目前唯一的選擇是運行docker service update來添加發布的端口。未來可能有其他方法來實現這一點。

相關問題