2016-11-02 5 views
1

デフォルトではlocalhostにのみバインドされるドッカーコンテナ内でサービスが実行されています。ローカルホストにバインドされたドッカーコンテナ内で実行されているサービスを公開する方法

このサービスを再構成して再プログラミングして、すべてのインターフェイスにバインドできますが、これは他のコンテキストでセキュリティの影響を受ける可能性があります。ドッキング・コンテナ内のローカル・ホストにバインドされたサービスを公開する方法はありますか?

+0

私は '--cap-add = NET_ADMIN'で' iptables'を提案しようとしていましたが、コンテナの名前空間にDNATに関する問題がいくつかあるようです – Matt

答えて

1

ドッカーコンテナ内でsocatを使用して、パブリックインターフェイスに入っている関連ポート番号の任意のtcp接続をプライベートインターフェイスにプロキシしました。

たとえば、これをdocker-container実行スクリプトに追加して、localhost:3000にバインドされたサービスを:3000にプロキシすることができます。このサービスは、他のサービスと同様にEXPOSEDおよび - リンクすることができます。コンテナの内部にsocatをインストールしてください。

socat TCP4-LISTEN:3000,bind=`hostname -I | tr -d '[:space:]'`,fork TCP4:localhost:3000 &

ますのでご注意ください。私はhostname -I | tr -d '[:space:]'を使用して、ドッカーコンテナのIPを検出しています。通常、ドッカーのコンテナには公開IPが1つしかないので、これはうまくいきます。

関連する問題