とても嬉しいです。この問題に遭遇したとき、私は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のスイッチングデータ保存ディレクトリの実装方法
序文通常のビジネスニーズ: 写真、Excel などをアップロードします。結局のところ、数 MB のサ...
通常、全員のスピーチを最初から最後まで読む必要があります。ただし、Stack Overflow には...
私はパフォーマンス テストを行うために常に Loadrunner を使用してきました。 Loadru...
最近、テスト サーバーのオペレーティング システムを Cent0S 7.5 にアップグレードし、Py...
クリック後にポップアップボックスを実現し、上下左右に中央揃えし、灰色の透明マスクを追加してウィンドウ...
目次1. 概要2. シンプルなクラスを定義する3. 継承4. public、private、prot...
Dockerfile を使用すると、ユーザーはカスタム イメージを作成できます。基本構造Docker...
環境の紹介: Ubuntu Server 16.04.2+MySQL 5.7.17 コミュニティ サ...
公式ウェブサイトhttps://cli.vuejs.org/ja/ガイド/場合によっては、コンポーネ...
Linux LVM論理ボリューム構成プロセスの詳細な説明多くの Linux ユーザーは、オペレーティ...
Ubuntu にインストールされているバージョンをアンインストールします。 sudo apt-get...
背景開発中、特定の状況でビジネス ロジックをバッチ処理するためのスクリプトが必要になる場合があります...
この記事では、MySQL 5.7.16 ZIPパッケージのインストールと設定のチュートリアルを参考ま...
MySQL 双方向バックアップはマスター-マスター バックアップとも呼ばれ、両方の MySQL サー...
MySQL は現在、ほとんどの企業や事業体で使用されているデータベースです。MySQL が使用される...