[解決済み] pm2とdockerを一緒に使う意味は何ですか?
質問
私たちは、サーバー上でアプリケーションを実行するために、非常にうまく pm2 を使用してきました。現在、私たちは docker に移行していますが、その際に http://pm2.keymetrics.io/docs/usage/docker-pm2-nodejs/
しかし、実際に両方を一緒に使う意味はあるのでしょうか?dockerはpm2ができることをすべて提供しているのではないのでしょうか?
どのように解決するのでしょうか?
通常、docker の内部で pm2 を使う意味はありません。
PM2 と Docker はどちらもプロセスマネージャであり、ログ転送やクラッシュしたワーカーの再起動、その他多くのことを行うことができます。もし、Dockerコンテナの内部でpm2を実行すれば、少なくとも以下のようなサービスの潜在的な問題を隠すことができます。
1) pm2 を使ってコンテナごとに単一のプロセスを実行する場合、メモリ消費量の増加を除けばあまり得るものはないでしょう。再起動は、純粋なドッカーで 再起動ポリシー . 他のdockerベースの環境(ECSやKubernetesなど)でも可能です。
2) 複数のプロセスを実行すると、監視が難しくなります。CPU/Memoryのメトリクスは、囲い込まれた環境から直接利用できなくなります。
3) 単一の PM2 プロセスに対するヘルスチェックのリクエストはワーカーに分散され、不健全な対象を隠してしまう可能性があります。
4) ワーカーのクラッシュは pm2 によって隠されます。監視システム(CloudWatchなど)からはほとんどわからないでしょう。
5) 事実上、複数のレベルのロードバランシングを行うことになるため、ロードバランシングがより複雑になります。
また、Dockerコンテナ内で複数のプロセスを実行することは、コンテナごとに単一のプロセスを維持するというDockerの哲学と矛盾しています。
私が思いつくシナリオのひとつは、docker 環境に対する制御が非常に限られている場合です。この場合、pm2 を実行することが、ワーカーのスケジューリングを制御するための唯一の選択肢になるかもしれません。
関連
-
[解決済み] Dockerfileの'COPY'と'ADD'コマンドの違いは何ですか?
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] DockerfileのCMDとENTRYPOINTの違いは何ですか?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerイメージはホストマシン上のどこに保存されていますか?
-
[解決済み] 古くて使われていないDockerイメージを削除する方法
-
[解決済み] Dockerの「expose」と「publish」の違いは何ですか?
-
[解決済み】Dockerイメージとコンテナの違いは何ですか?
-
[解決済み] Docker CMDを複数回使用して、複数のサービスを実行することができないのはなぜですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] docker unauthorized: 認証が必要 - ログインに成功するとプッシュされる
-
[解決済み] Docker HostへのポートのみのEXPOSE
-
[解決済み] Dockerがコンテキスト外のシンボリックリンクをフォローする
-
[解決済み] Dockerfileに複数行のコマンドを改行を維持したまま記述する方法とは?
-
[解決済み] docker-compose start "ERROR: No containers to start".
-
[解決済み] DockerにSSH接続する方法は?
-
[解決済み] Dockerコンテナ内でCurlコマンドを実行できない
-
[解決済み] COMPOSE_HTTP_TIMEOUT のデフォルト値を docker-compose コマンドで上書きする方法
-
[解決済み] Dockerです。CLIで --password を使用するのは安全ではありません。パスワードは-password-stdinを使用してください。
-
[解決済み] Kubernetesの秘密を解き明かす