2017-01-22 14 views
1

2つのコンテナでDockerを使用しています。両者は異なるコンテナで実行する場合、私は、彼らがお互いを知ることができますどのようにすなわち2つのDockerコンテナ間の通信

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

:秒1は、簡単なクライアントである

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') 

:これらの一つはPythonで書かれたシンプルなサーバです?

+0

いくつかの方法があります。私が通常使っている方法(これは時代遅れだと思います)は、サーバコンテナのポートを 'EXPOSE'して' --link'を使ってクライアントコンテナにリンクさせることです。これはクライアントの '/ etc/hosts'ファイルにエントリを追加します。クライアントアプリケーション内のサーバを参照することができます(' requests.get( 'flask:5000') 'ポート5000を露出させる「フラスコ」)。 – Tagc

+3

これに代わるより優れた方法は、サーバーイメージとクライアントイメージの両方を定義するためにDockerを使用することです。これにより、両方のアプリケーションをそれぞれ独立したネットワークで開始することができ、コンテナ名と同じホスト名を使用してクライアントアプリケーションからサーバーが自動的に検出されます。 https://docs.docker.com/compose/networking/ – Tagc

+1

'--name 'で2番目のコンテナの名前をつけてください。 '--link 'で最初のコンテナを実行してください。最初のコンテナから 'r = requests.get( '')'を使って簡単にリクエストできます。 –

答えて

1

Cycleのようなプラットフォームを使用する場合は、ホスト名を使用して暗号化されたプライベートネットワーク経由でコンテナに接続できます。

免責事項:私はCycleの開発者です。

P.S.試しに使用できるリンクは次のとおりです。 https://portal.cycle.io/signup?code=JO4J8BM

関連する問題