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')
我怎樣才能讓他們彼此認識,如果他們都在不同的容器中運行?
有幾種方法。我通常使用的方式(我認爲現在已經過時了)是EXPOSE服務器容器中的端口,然後使用「--link」將客戶端容器鏈接到它。這將在客戶端的'/ etc/hosts'文件中添加一個條目,允許您在客戶端應用程序中引用服務器(使用類似於'requests.get('flask:5000')''的方式爲鏈接的正在運行的容器'flask'暴露端口5000)。 – Tagc
更好的替代方案是使用Docker組合來定義服務器和客戶端圖像。這將允許您在自己的獨立網絡中同時啓動這兩個應用程序,並使用與容器名稱相同的主機名從客戶端應用程序自動發現服務器。 https://docs.docker.com/compose/networking/ – Tagc
用'--name'命名第二個容器。用'--link '運行你的第一個容器。您將能夠簡單地使用來自第一個容器的'r = requests.get('')'來請求。 –