問題タブ [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.
docker - gosu を使用すると、プロセスがポートに関連付けられないのはなぜですか?
正常な動作 (gosu を使用しない場合)
gosu
環境変数が設定されている場合はユーティリティを使用して特定のユーザーとして指定されたコマンドを実行するか、ルートとして実行するエントリポイント スクリプトを呼び出すコンテナーがあります。
entrypoint.sh
RUNAS_USER
env var が提供されていない場合(つまりexec "$@"
、 が実行され、コンテナーが root として実行されている場合)、コンテナーにログインして run を実行するとss -nltp
、プロセスがポートに正しく関連付けられていることがわかります (最後の列を見てください)。
予期しない動作 (gosu を使用)
RUNAS_USER
env var が提供されている場合 (つまり、exec /usr/local/bin/gosu $RUNAS_USER "$@"
が実行され、コンテナが特定のユーザーとして実行されている場合)、コンテナにログインして run を実行するss -nltp
と、ポートはどのプロセスにも関連付けられなくなります (つまりusers:(("java",pid=7,fd=187))
、からの出力に etc エントリはありません) ss -nltp
):
問題
コンテナーがポートを基になるプロセスに関連付けることに成功すると、ポートはネットワーク上で外部から見えるようになります。ただし、使用時の上記の問題gosu
は、私の K8s デプロイメントが、nodeport サービスのポッドに外部からルーティング可能なポートをセットアップしなかったことを意味します。