イメージの起動時にdocker runまたはdocker restartが自動的に終了する問題を解決します

イメージの起動時にdocker runまたはdocker restartが自動的に終了する問題を解決します

コマンドを実行します: docker run --name centos8 -d centos /bin/bash。docker ps を使用して実行中のコンテナを表示しますが、centos8 は見つかりません。

docker ps -aを実行すると、centos8コンテナがすでに停止状態になっていることがわかります。

[root@MiWiFi-R4A-srvサーバー]$ docker run --name centos8 -d centos /bin/bash
a770630ca865b3c3346a321a383f302ed22af9281be8482f4f4debc59218d0d1
[root@MiWiFi-R4A-srvサーバー]$ docker ps
コンテナID イメージ コマンド 作成ステータス ポート名
[root@MiWiFi-R4A-srvサーバー]$ docker ps -a
コンテナID イメージ コマンド 作成ステータス ポート名
a770630ca865 centos "/bin/bash" 37 秒前 終了 (0) 35 秒前 centos8

なぜ辞めたのですか?

これは、Docker がバックグラウンドで実行され、フォアグラウンド プロセスが存在する必要があるためです。 docker によって実行されるコマンドが常にハングするコマンド (top、ping など) でない場合は、自動的に終了します。上記のコードでは、 -d centos は実行する必要がある指定されたコマンドです。コマンドが実行されるか、アプリケーションが終了すると、コンテナは自動的に停止します。

回避策

フォアグラウンドプロセスとして実行

実行中のプログラムはフォアグラウンド プロセスとして実行されます。コンテナーが複数のプロセスを同時に開始する必要がある場合は、そのうちの 1 つをフォアグラウンドに一時停止するだけで済みます。

たとえば、上記の Centos コンテナの場合、対話モードで起動するには起動コマンドを変更するだけで済みます。

docker run --name centos8 -it centos /bin/bash

または Web コンテナ:

サービス php5-fpm 開始 && nginx -g "デーモンオフ;"

ヒント

フォアグラウンドで実行できる tail top などのプログラムを追加して、ログ ファイルを継続的に出力します。

サービス nginx 開始 && サービス php5-fpm 開始 && tail -f /var/log/nginx/error.log

上記の Web コンテナを例にとると、次のように記述できます。

サービス nginx 開始 && サービス php5-fpm 開始 && tail -f /var/log/nginx/error.log

独自のスクリプトを作成する

centos/ubuntu コンテナを起動するときに、無限ループを作成して何かを継続的に出力することで、コンテナが何もすることがないと判断して自殺しないようにすることができます。

docker run -d centos /bin/bash -c "while true; do echo hello world; sleep 1; done"

補足知識: docker でコンテナを起動すると、CMD によって呼び出される sh スクリプトの if コマンドが予期しないシンボル if[[ を報告します。 解決策

最近、Dockerfile でイメージを作成しました。コンテナを起動するために、CMD で sh スクリプト (start.sh) が呼び出されました。docker run で起動したところ、起動に失敗しました。docker logs container ID を実行したところ、次のエラーが見つかりました: Unexpected symbol if [[

外部 Linux システムで start.sh を直接実行することに成功しました。docker exec を介してコンテナに入り、コンテナ内でエラーなしで start.sh を呼び出しました。コマンドで起動する必要のあるすべてのプログラムが正常に起動しました。スクリプトを直接実行すると問題ないのですが、docker run を経由するとエラーが発生してしまい困惑しています。

start.shのエラーコードセグメントは次のとおりです。

if [[ -e /home/dc/testnn-aaa.zip ]];then
 rm -rf /home/testnn-aaa
 解凍 -q -o -d /home testnn-aaa.zip
 echo "zip の解凍が完了しました" 
それ以外 
 echo "dc zip が存在しません"
フィ

確認して比較したところ、私の start.sh にもエラー文の前に if 文があるのにエラーが報告されないため、2 つの場所の違いは最初の if が単一の [] を使用していることであることがわかりました。コードを [] に変更すると成功します。変更内容は次のとおりです。

if [ -e /home/dc/testnn-aaa.zip ];then

docker run または docker restart でイメージを起動すると自動的に終了する問題を解決する上記の記事は、エディターが皆さんと共有する内容のすべてです。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Dockerfileを使用してApacheイメージを作成する方法
  • Docker イメージのローカル Elasticsearch ポート操作へのアクセス
  • スーパーバイザーによるDockerfileのマルチサービスイメージパッケージ操作
  • 独自の Docker イメージを作成して Dockerhub にアップロードする方法
  • Dockerの国内イメージソースを変更する方法
  • Docker イメージのプルとタグ操作 pull | tag
  • イメージのアップロードとダウンロードに docker をプロキシするためのプライベート ライブラリとして nexus を使用する
  • Docker イメージの作成、アップロード、プル、およびデプロイ操作 (Alibaba Cloud を使用)
  • Dockerイメージ解析ツールのダイブ原理解析

<<:  Reactソースコードにおけるビット演算について詳しく説明します

>>:  MySQLの日付と時刻関数の使用の概要

推薦する

JS を使用してデータ型を決定する 4 つの方法

目次序文1. 型2. インスタンス3. コンストラクター詳細: 4. 文字列要約する序文Javasc...

仮想スクロールを簡単に実装するためのVueサンプルコード

目次序文ローリング原理成し遂げるソースコード参照する序文モバイル Web ページの日常的な開発では、...

JavaScript マクロタスクとマイクロタスクの実行順序についての簡単な説明

目次1. JavaScriptはシングルスレッドです1. 同期タスク2. 非同期タスク2. タスクキ...

Eclipseを使用してMySQLデータベースに接続する方法を説明します

序文常にエラーが発生するため、MySQL データベースに接続するプロセスを記録します。接続プロセス1...

MySQLはPartition関数を使用して水平分割戦略を実装します。

目次1件のレビュー2 水平分割の5つの戦略2.1 ハッシュ2.2 範囲2.3. キー2.4. リスト...

MySQLインデックスマージの使い方

インデックスのマージは、MySQL が最下層で提供するインテリジェントなアルゴリズムです。インデック...

JS オブジェクト コンストラクター Object.freeze

目次概要例1) オブジェクトをフリーズする2) 配列をフリーズする3) 浅い凍結4) ディープフリー...

html mailto(メール)の実用化について

ご存知のとおり、mailto は Web デザインと制作において非常に実用的な HTML タグです。...

HTML ウェブページのメタビューポート属性の説明

HTML メタビューポート属性の説明ビューポートとはモバイル ブラウザは、Web ページを仮想の「ウ...

LinuxシステムでのSystemC環境設定方法

以下はcentos7での設定方法ですsystemc ソース パッケージをダウンロード: System...

Baidu百科事典UIの開発動向について議論する

<br />百度百科事典の正式版がついにオンラインになりました。2年間の「テスト版」の帽...

XML構文の詳細な説明

1. 文書化ルール1. 大文字と小文字が区別されます。 2. 属性値は引用符(一重引用符または二重引...

MySQLはデータテーブル内の既存のテーブルを分割します

目次操作方法操作プロセス既存のテーブルにパーティション テーブルを作成し、データを新しいテーブルに移...

非常に詳細な Vue-Router のステップバイステップのチュートリアル

目次1. ルータビュー2. ルータリンク3. リダイレクト4. ルーティングエイリアス5. ルーティ...

JavaScript 配列と非配列オブジェクトのディープ クローンとシャロー クローンの原則の詳細な説明

目次シャロークローニングとディープクローニングとは何ですか? 1. アレイのクローンを作成する1.1...