ホストでデーモンをいくつかのポート(つまり8008)で実行しており、コードは通常、たとえばlocalhost:8008にアクセスしてデーモンと対話します。
私はコードをコンテナ化しましたが、まだデーモンはいません。コンテナのlocalhost:8008を、コンテナを実行しているホストのlocalhost:8008に転送するにはどうすればよいですか(したがって、デーモンも転送できますか)。
以下はnetstat -tlnp
on ホスト。 containerでホスト上のlocalhost:2009をlocalhost:2009に転送したい
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 127.0.0.1:2009 0.0.0.0:* LISTEN 22547/ssh
tcp6 0 0 :::22 :::* LISTEN -
tcp6 0 0 ::1:2009 :::* LISTEN 22547/ssh
回答を確認して調査を行った後、それを行うには2つの方法があり、これら2つはLinux環境でしか機能しないと思います。
最初はこの投稿にあります ドッカーコンテナからホストポートにアクセスする方法
2番目は--network=Host
あなたがdocker run
またはdocker container create
。この場合、ドッカーはMacで使用しているのと同じネットワークインターフェイスを使用します。
ただし、上記の両方の方法をMacで使用することはできないため、Mac環境でコンテナからホストに転送することはできないと思います。間違っている場合は修正してください。
Dockerの設定だけでそれができるかどうかはわかりません。私の理解が正しければ、露出ポートはあなたが探しているものではありません。代わりに、コンテナからホストへのsshポート転送を確立するのが答えかもしれません。