2017-01-22 220 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('')'来请求。 –

回答