デフォルトではlocalhostにのみバインドするdocker-container内でサービスを実行しています。
このサービスを再構成/再プログラムしてすべてのインターフェイスにバインドすることはできますが、これは他のコンテキストでセキュリティに影響を与える可能性があります。Dockerコンテナ内でlocalhostにバインドされたサービスを公開する方法はありますか?
デフォルトではlocalhostにのみバインドするdocker-container内でサービスを実行しています。
このサービスを再構成/再プログラムしてすべてのインターフェイスにバインドすることはできますが、これは他のコンテキストでセキュリティに影響を与える可能性があります。Dockerコンテナ内でlocalhostにバインドされたサービスを公開する方法はありますか?
docker コンテナー内で socat を使用して、パブリック インターフェイスで着信する関連するポート番号の tcp 接続をプライベート インターフェイスにプロキシすることになりました。
たとえば、これを docker-container run-script に追加して、localhost:3000 にバインドされたサービスを :3000 にプロキシし、他のサービスと同様に EXPOSED および --link することができます。コンテナー内に必ず socat をインストールしてください。
socat TCP4-LISTEN:3000,bind=`hostname -I | tr -d '[:space:]'`,fork TCP4:localhost:3000 &
ご注意ください; hostname -I | tr -d '[:space:]'
DockerコンテナのIPを発見するために使用しています。通常、docker コンテナーにはパブリック IP が 1 つしかないため、これはうまく機能します。