とても嬉しいです。この問題に遭遇したとき、私は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のスイッチングデータ保存ディレクトリの実装方法
結果: html <nav id="nav-1"> <a cl...
必要な環境をインストールする1. gccのインストールnginx をインストールするには、公式サイト...
mysqlbinlogのバージョンを表示mysqlbinlog -V [--version] bin...
MySQL における Regexp の一般的な使用法特定の文字列を含むあいまい一致# コンテンツフィ...
Docker 公式ドキュメント: https://docs.docker.com/ Docker は...
MySQLの自動増分主キーIDは段階的に増加しません1. はじめにMySQL データベースにデータを...
目次ライフサイクルを理解する理由ライフサイクルとはライフサイクルフック関数作成され、マウントされたフ...
1. ネクサスサービス構築の意義イントラネットの統合プロキシとして、チームで共同開発する場合、全員が...
目次グローバル変数として可変ホイスト一時的なデッドゾーンブロックスコープ重複したステートメント宣言さ...
まず、ページ分割クエリを使用する理由を明確にする必要があります。データが膨大なため、すべてのデータを...
導入この記事では、django + uwsgi + nginx デプロイメントを使用して、Docke...
目次序文1. 404 ページ1. 原因2. 解決策2.白い画面を更新する1. 原因2. 解決策3. ...
表ラベルの構成HTML 内の表は <table> タグで構成されており、ブラウザはタグを...
脆弱性の詳細VSFTP は、GPL に基づいてリリースされた Unix ライクなシステムで使用される...
1. 重複行を見つける blog_user_relation a から * を選択 WHERE (...