2017-01-22 275 views
1

我使用兩個容器的Docker。其中之一是用Python編寫一個簡單的服務器:兩個Docker容器之間的通信

from flask import Flask 
app = Flask(__name__) 

@app.route('/') 
def hello_world(): 
    return 'Flask Dockerized' 

if __name__ == '__main__': 
    app.run(debug=True,host='0.0.0.0') 

第二個是簡單的客戶端:即

r = requests.get('http://localhost:5000') 

我怎樣才能讓他們彼此認識,如果他們都在不同的容器中運行?

+0

有幾種方法。我通常使用的方式(我認爲現在已經過時了)是EXPOSE服務器容器中的端口,然後使用「--link」將客戶端容器鏈接到它。這將在客戶端的'/ etc/hosts'文件中添加一個條目,允許您在客戶端應用程序中引用服務器(使用類似於'requests.get('flask:5000')''的方式爲鏈接的正在運行的容器'flask'暴露端口5000)。 – Tagc

+3

更好的替代方案是使用Docker組合來定義服務器和客戶端圖像。這將允許您在自己的獨立網絡中同時啓動這兩個應用程序,並使用與容器名稱相同的主機名從客戶端應用程序自動發現服務器。 https://docs.docker.com/compose/networking/ – Tagc

+1

用'--name '命名第二個容器。用'--link '運行你的第一個容器。您將能夠簡單地使用來自第一個容器的'r = requests.get('')'來請求。 –

回答