docker runコンテナの自動終了の解決策

docker runコンテナの自動終了の解決策

今日、Dockerfile を使用してイメージを作成したときに問題が発生し、イメージの実行後にコンテナが自動的に終了しました。

開始コマンド:

tomcatweb のログを tomcat:7.0 にコピーします。

実行後、docker psを使用してdockerコンテナが終了したことを確認します。

情報を検索したところ、この問題は複雑ではないことがわかりました。その理由は、Docker コンテナがバックグラウンドで実行される場合、フォアグラウンド プロセスが必ず存在するためです。

解決:

1. 実行中のプロセスをフォアグラウンドで開始します。例: nginx nginx -g "daemon off;" tomcat ./catalina.sh run

2. フォアグラウンドで実行できる tail、top などのプログラムを使用します。ログ ファイルを出力する場合は、特に tail が推奨されます。

DockerfileにENTRYPOINT /opt/tomcat7.0/bin/startup.sh && tail -F /opt/tomcat7.0/logs/catalina.outを追加します。

追加知識: docker pullで取得したTomcatはログを生成しなかったため、手動でtocmat dockerfileファイルを作成し、ログが生成されることを確認しました。

1. dockfileファイルとその説明は次のとおりです。

openjdk:8-jre から 
メンテナー
 
環境変数 JAVA_HOME /docker-java-home
環境変数 CATALINA_HOME /opt/tomcat 
環境変数 PATH $PATH:$JAVA_HOME/bin:$CATALINA_HOME/bin:$CATALINA_HOME/scripts
 
#タイムゾーン RUN echo "Asia/Shanghai" > /etc/timezone 
mv /etc/localtime /etc/localtime_bak を実行します。 
実行 cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
 
#トムキャット 
環境 TOMCAT_MAJOR 8
環境変数 TOMCAT_VERSION 8.5.35
 
wget http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-8/v8.5.41/bin/apache-tomcat-8.5.41.tar.gz && \ を実行します。
 tar -zxvf apache-tomcat-8.5.41.tar.gz && \
 rm apache-tomcat*.tar.gz && \
 mv apache-tomcat* ${CATALINA_HOME} 
 
chmod +x ${CATALINA_HOME}/bin/*sh を実行します。 
chmod 777 ${CATALINA_HOME}/logs/ を実行します。 
chmod 777 ${CATALINA_HOME}/webapps/ を実行します。
 
#ユーザー名とパスワードをadminに設定する 
tomcat-users.xml /opt/tomcat/conf/ を追加します。
 
#リモートアクセス ADD context.xml /opt/tomcat/webapps/manager/META-INF/
 
環境変数 LANG zh_CN.UTF-8
 
#ポートEXPOSE 8080を開く
 
# Tomcatを起動する 
ワークディレクトリ /opt/tomcat/bin
CMD ["catalina.sh","実行"]

注意: このDockerは外部ファイルを参照する必要があります

詳細はgithubをご覧ください

2. Dockerfileコンパイルコマンド

zyj/tomcat を実行します。

3. コマンドを実行する

docker run -d -p 8080:8080 --name tomcat8
-v /opt/docker-tomcat/logs/:/opt/tomcat/logs/ -v /opt/docker-tomcat/webapps/:/opt/tomcat/webapps/ -v /opt/docker-tomcat/context.xml:/opt/tomcat/webapps/manager/META-INF/context.xml -v /opt/docker-tomcat/tomcat-users.xml:/opt/tomcat/conf/tomcat-users.xml --privileged=true zyj/tomcat

docker run コンテナが自動的に終了する問題に対する解決策は以上です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • docker run -v はデータボリュームを異常にマウントし、コンテナのステータスは常に再起動になります。
  • Docker実行コンテナが作成状態にある問題についての簡単な説明
  • docker run によって起動されたコンテナがハングしてデータが失われた場合の対処方法
  • Docker Runc コンテナのライフサイクルの詳細な紹介
  • docker run後にコンテナがExited (0)と表示される問題を解決する

<<:  vue3で注意すべき2つのポイントを詳しく解説:セットアップ

>>:  MySQL json 形式のデータクエリ操作

推薦する

スプレッド演算子のサンプルコードと JavaScript での応用

スプレッド演算子を使用すると、式をある時点で展開できます。スプレッド演算子は、複数のパラメーター (...

MySQL関数の包括的な概要

目次1. MySQLでよく使われる文字列関数2. 数値関数3. 日付と時刻の機能4. プロセス機能5...

MySQL 5.6 のインストール手順(画像とテキスト付き)

MySQL はオープンソースの小規模リレーショナル データベース管理システムです。現在、MySQL...

JavaScript のマイクロタスクとマクロタスクの説明

序文: js はシングルスレッド言語なので、非同期にすることは不可能です。しかし、js のホスト環境...

CSS スクロールバースタイル変更コード

CSS スクロールバースタイル変更コード .scroll::-webkit-scrollbar { ...

Win7x64でのMySQL 5.7.18解凍版のインストール方法

関連記事: Win7 x64 に解凍版の mysql 5.7.18 winx64 をインストールする...

Vue の vue.$set() メソッドのソースコード例の詳細な説明

Vue を使用してプロジェクトを開発する過程で、次のような問題によく遭遇します。Vue のデータでオ...

CSS 完全な視差スクロール効果

1. 何ですか視差スクロールとは、複数の背景レイヤーを異なる速度で動かすことで、3次元のモーション...

Linux ディスクデバイスと LVM 管理コマンドの詳細な例

序文Linux オペレーティング システムでは、デバイス ファイルは特別なタイプのファイルです。これ...

ログインスライダー検証を実装するJavaScript

この記事では、ログインスライダー検証を実装するためのJavaScriptの具体的なコードを参考までに...

Vueトップタグ閲覧履歴の実装

目次ナンセンス実装された機能文章要点ナンセンスデモプレビュー実装された機能デフォルトでホームページが...

ローカル Docker に Postgres 12 + pgadmin をインストールする方法 (Apple M1 をサポート)

目次導入Intel CPUをサポートApple M1のサポートテスト導入このプロジェクトでは最近、P...

Linuxネットワーク設定の基本操作コマンドを詳しく解説

目次ネットワーク構成を表示するネットワークインターフェース情報を表示する---ifconfigルーテ...

docker に nacos をインストールしてデータベースを構成する詳細なチュートリアル

環境の準備 Docker環境 MySQL 5.7 (公式イメージはmysql8をサポートしていません...

Reactにおけるフックの一般的な使用法

目次1. フックとは何ですか? 2. フックはなぜ現れるのでしょうか? 3. よく使われるフックは何...