とても嬉しいです。この問題に遭遇したとき、私はDockerコンテナのプロセス原理について話さなければなりません。基本的に、Dockerについて学んだ人は、Dockerのいくつかの分離方法を知っており、プロセスも分離されています。 質問 1. 実行中に Docker コンテナがクラッシュするのはなぜですか? デフォルトでは、docker コンテナはコンテナ内の最初のプロセス、つまり pid=1 のプログラムを、docker コンテナが実行中かどうかの基準として使用します。docker コンテナの pid がハングすると、docker コンテナは直接終了します。 2.docker run のとき、command をコンテナの内部コマンドとして使用します。nginx を使用すると、nginx プログラムがバックグラウンドで実行されます。このとき、nginx は pid 1 のプログラムではなく、bash が実行されます。この bash は nginx コマンドを実行した後にハングするため、コンテナも終了します。同じ理由が当てはまります。pm2 start 後、bash の pid は 1 です。このとき、bash は実行後に終了するため、コンテナも終了します。 以下では、例を挙げて、なぜそうするのかを説明します。 ! タッチファイル echo "このスクリプトのPID: $$" echo "このスクリプトのPPID: $PPID" echo "このスクリプトのUID: $UID" #nginx -g 'デーモンをオフ;' この時点で、コンテナを起動してこのshファイルを実行します。 odtoy:~ zhaojunlike$ `docker-machine env default` を評価します godtoy:~ zhaojunlike$ cd ワークスペース/ godtoy:ワークスペース zhaojunlike$ ls docker nodejs php pid_get godtoy:ワークスペース zhaojunlike$ vim pid_get godtoy:ワークスペース zhaojunlike$ docker run -v `pwd`/pid_get:/pid_get:ro --rm --workdir=/ nginx bash /pid_get このスクリプトの PID: 1 このスクリプトの PPID: 0 このスクリプトの UID: 0 godtoy:ワークスペース zhaojunlike$ コンテナが pid_get を実行した後、コンテナは自動的に終了します。このとき、現在の bash 実行の pid は 1 として出力されます。 したがって、コンテナがクラッシュしないようにするには、非デーモン実行が必須です。もちろん、コンテナ内で実行することもできます。 godtoy:ワークスペース zhaojunlike$ docker run -it nginx bash ルート@a8baa5fe77f0:/# root@a8baa5fe77f0:/# godtoy:WorkSpace zhaojunlike$ -it パラメータを使用してコンテナ内のパイプラインに接続し、コンテナ内で nginx コマンドを使用します。最後に、 要約する docker で node を使用する必要がある場合、pm2 などのツールをインストールする必要はありません。node を直接実行するだけです。コンテナがクラッシュするのではないかと心配な場合は、 以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。 以下もご興味があるかもしれません:
|
<<: Reactはルーティングを使用してログインインターフェースにリダイレクトします
>>: MySQLのスイッチングデータ保存ディレクトリの実装方法
ドキュメントの範囲この記事では、Firefox やその他の Gecko ベースのブラウザ、Safar...
次に、ログ管理、ログのアーカイブ、ログのトラブルシューティング、イベントの転送と収集のためのコンピュ...
1. xshell を使用して仮想マシンに接続するか、仮想マシンに直接コマンドを入力します。以下はx...
この記事では、ビデオプレイリストを実装するためのvue + video.jsの具体的なコードを参考ま...
コード知識ポイント1. fullpage.jsを組み合わせてフルスクリーンスクロールを実現する2. ...
CSS 表示プロパティ注: !DOCTYPE が指定されている場合、Internet Explore...
Dockerのインストール公式インストールスクリプトを使用して最新バージョンのDockerをインスト...
1. 動作環境vmware14proウブントゥ 16.04LTS 2. 問題の説明vmware14P...
最近、MySQL データベースを勉強していて、設定ファイルを頻繁に変更したため、MySQL データベ...
序文フロントエンドフレームワークのヘビーユーザーとして、私はテクノロジーを選択する際にそのエコロジー...
方法1: グローバル general_log を 'OFF' に設定します。 テーブ...
序文MySQL には次の 4 種類の演算子があります。算術演算子比較演算子論理演算子ビット演算子これ...
1. Kali Linuxシステムのバージョンを確認するコマンド: cat /etc/issue 2...
この記事では、MySQL のスケジュールされたデータベース バックアップ操作の例について説明します。...
方法1:フロート:右さらに、フローティングにするとレイアウトがよりコンパクトになります(隙間がなくな...