イメージの起動時に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の日付と時刻関数の使用の概要

推薦する

JavaScript Canvas は動的なワイヤーフレーム効果を描画します

この記事では、JavaScript Canvasの動的なワイヤーフレーム効果を描画する具体的なコード...

vue3.0 sfcのセットアップの変更について簡単に説明します。

目次序文標準的なSFCの書き方スクリプト設定可変露出部品の取り付け小道具カスタムイベント要約する序文...

JS変数ストレージのディープコピーとシャローコピーの詳しい説明

目次可変タイプとストレージスペーススタックメモリとヒープメモリ基本的なデータ型参照タイプグラフィック...

Javascript と Vue を組み合わせて、あらゆる迷路画像の自動パス検索を実現します。

目次序文2次元配列、一方向基本インターフェースのマッピング幅優先、包括的検索マップ編集経路探索アルゴ...

クールなIoT大画面機能を実現するHTML+VUEページング

効果デモ.html <html> <ヘッド> <メタ文字セット=&qu...

ウェブページ作成時のHTMLタグの使用に注意してください

この記事では、Web ページの作成を学習するときに注意すべき HTML タグに関するいくつかの問題を...

Web ページのエンコーディングで gbk や gb2312 ではなく utf-8 が使用されるのはなぜですか?

選択肢がある場合は、UTF-8を使用することをお勧めします。実際、Windows システム自体のプロ...

Mysql の varchar 型に関する注意点

varchar の保存ルール4.0 未満のバージョンでは、varchar(20) は 20 バイトを...

HTML で複数のクラス属性を定義する場合の無効な解決策

HTML を記述する過程で、クラス属性に複数の値を定義することがよくありますが、定義した値が無効であ...

レスポンシブ Web デザイン手法を実装し、ウォーターフォール モデルに別れを告げる 5 つのステップ (グラフィック チュートリアル)

次の Web デザイン プロジェクトはレスポンシブにする必要があると上司をようやく納得させることがで...

クロスブラウザ開発体験のまとめ(I)HTMLタグ

ページにDOCTYPEを追加するブラウザによってタグやスタイルシートの解釈が異なるため、さまざまなブ...

Linux でのルーティングと仮想マシン ネットワークの設定に関する詳細なグラフィック説明

ルーティングとは何ですか?ルーティングとは、相互接続されたネットワークを介して送信元ステーションから...

ファイルが存在するかどうかを判断する JavaScript サンプルコード

1. ビジネスシナリオ最近はファイルのアップロードやダウンロードに関する開発をしています。ダウンロー...

よくある MySQL 設計エラーをご存知ですか?

インターネットの発達により、バスを待ったり地下鉄に乗ったりする時間など、断片的な時間を活用して、いつ...