問題タブ [ss]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
26 参照

docker - gosu を使用すると、プロセスがポートに関連付けられないのはなぜですか?

正常な動作 (gosu を使用しない場合)

gosu環境変数が設定されている場合はユーティリティを使用して特定のユーザーとして指定されたコマンドを実行するか、ルートとして実行するエントリポイント スクリプトを呼び出すコンテナーがあります。

entrypoint.sh

RUNAS_USERenv var が提供されていない場合(つまりexec "$@"、 が実行され、コンテナーが root として実行されている場合)、コンテナーにログインして run を実行するとss -nltp、プロセスがポートに正しく関連付けられていることがわかります (最後の列を見てください)。

予期しない動作 (gosu を使用)

RUNAS_USERenv var が提供されている場合 (つまり、exec /usr/local/bin/gosu $RUNAS_USER "$@"が実行され、コンテナが特定のユーザーとして実行されている場合)、コンテナにログインして run を実行するss -nltpと、ポートはどのプロセスにも関連付けられなくなります (つまりusers:(("java",pid=7,fd=187))、からの出力に etc エントリはありません) ss -nltp):

問題

コンテナーがポートを基になるプロセスに関連付けることに成功すると、ポートはネットワーク上で外部から見えるようになります。ただし、使用時の上記の問題gosuは、私の K8s デプロイメントが、nodeport サービスのポッドに外部からルーティング可能なポートをセットアップしなかったことを意味します。