Dockerコンテナのアクセスポートをホストから開くことは可能ですか?具体的には、ホスト上でMongoDBとRabbitMQを実行しています.Dockerコンテナでプロセスを実行して、キューをリスンして(オプションで)データベースに書き込みたいと思います。ドッカーコンテナへのホストポートの転送
私はコンテナからホストに(-pオプションを使用して)転送することができ、Dockerコンテナ内から外部(インターネットなど)に接続できますが、 RabbitMQとMongoDBはホストから外部に移植されます。
EDIT:いくつかの明確化:
Starting Nmap 5.21 (http://nmap.org) at 2013-07-22 22:39 CEST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00027s latency).
PORT STATE SERVICE
6311/tcp open unknown
[email protected] ~ % docker run -i -t base /bin/bash
[email protected]:/# apt-get install nmap
[email protected]:/# nmap 172.16.42.1 -p 6311 # IP found via docker inspect -> gateway
Starting Nmap 6.00 (http://nmap.org) at 2013-07-22 20:43 UTC
Nmap scan report for 172.16.42.1
Host is up (0.000060s latency).
PORT STATE SERVICE
6311/tcp filtered unknown
MAC Address: E2:69:9C:11:42:65 (Unknown)
Nmap done: 1 IP address (1 host up) scanned in 13.31 seconds
私はコンテナをwithing任意のインターネット接続を取得するには、このトリックを行う必要がありました:My firewall is blocking network connections from the docker container to outside
EDIT:結局私はpipeworkを使用してカスタムブリッジの作成を行ってきましたがサービスがブリッジIP上でリッスンするようにします。このアプローチでは、MongoDBとRabbitMQをドッカーブリッジでリッスンさせるのではなく、柔軟性が高いので、
コンテナは要求をどのIPに送信するのかをどのように知っていますか?私は値をハードコーディングすることができます(172.17.42.1ここと私のテストリグですが、それはいつも本当ですか?)、それはどんなホストと一緒に働くドッカーの原則に反しているようです! –
別のオプションは、ホストマシンサービス(たとえばmongodb)をバインドしてすべてのネットワークインターフェイス(0.0.0.0など)をリッスンし、内部ネットワーク上のマシンだけが関連するポートに接続してからホストに接続できるようにファイアウォールを設定することですコンテナ内のマシンのネットワークIPアドレス。 – Josh
@Seldo:表示するには設定が必要ですか?私はドッカー1.7.1を使用しています。私は 'lo'と' eth0'しか持っていません。 – mknecht