web-dev-qa-db-ja.com

コンテナのローカルホストポートをホストのローカルホストに転送するにはどうすればよいですか?

ホストでデーモンをいくつかのポート(つまり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            
25
Setheron

回答を確認して調査を行った後、それを行うには2つの方法があり、これら2つはLinux環境でしか機能しないと思います。

最初はこの投稿にあります ドッカーコンテナからホストポートにアクセスする方法

2番目は--network=Hostあなたがdocker runまたはdocker container create。この場合、ドッカーはMacで使用しているのと同じネットワークインターフェイスを使用します。

ただし、上記の両方の方法をMacで使用することはできないため、Mac環境でコンテナからホストに転送することはできないと思います。間違っている場合は修正してください。

2
StevenR

Dockerの設定だけでそれができるかどうかはわかりません。私の理解が正しければ、露出ポートはあなたが探しているものではありません。代わりに、コンテナからホストへのsshポート転送を確立するのが答えかもしれません。

0
Yigang M