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 非同期プログラミング: Promise を本当に理解していますか?

目次序文基本的な使い方文法エラー処理プロミスチェーン呼び出し非同期と待機よく使われる方法1. Pro...

MySql 組み込み関数の自習知識ポイントまとめ

文字列関数文字ascii(str)のASCIIコード値をチェックし、strが空の文字列の場合は0を返...

サーバーストレステストの概念と方法 (TPS/同時実行性)

目次1 ストレステストの指標1.1 秒あたり1.2 クォータ1.3 平均処理時間(RT) 1.4 同...

NavicatがMySQLに接続すると、10060、1045エラーとmy.iniの場所が報告されます。

Navicat は、データベースに接続するときにエラー 10060 および 1045 を報告します...

Tomcat 実行時の JVM エンコーディングの問題を修正

質問:最近、プロジェクトを展開すると文字化けしたデータが出てきました。確認したところ、プロジェクトは...

Centos での Python のアップグレードと Mongodb ドライバーのインストールに関する問題

Python バージョンを確認します (python -V)。2.7 未満の場合は、アップグレードす...

jQueryは、マウスをドラッグしてdivの位置とサイズを変更する方法を実装しています。

Windows フォームと同様の効果を得るには、中央をドラッグして div の位置を変更し、端をド...

js の通常形式の日付と時刻に 0 を自動的に追加する 2 つのソリューション

目次背景解決策1アイデア:コード:解決策2アイデア:要約する参照する背景日付と時間をフォーマットする...

VueでEchartsチャートの幅と高さの適応を実現する実践

目次1. インストールとインポート2. 手ぶれ補正機能を定義する3. チャートコードを描くinit ...

VueとElementUIを組み合わせたスキン変更ソリューション

目次前面に書かれた解決策 1: グローバル スタイル オーバーライドを使用する (フロントエンドに共...

mysql8.0.23 Linux (centos7) のインストールの完全かつ詳細なチュートリアル

目次リレーショナルデータベースとは何ですか?非リレーショナルデータベースとは何ですか? MySQL ...

nginx の 2 つのモジュールの proxy_pass の違い

1. 1.ngx_stream_proxy_moduleモジュールのproxy_passディレクティ...

EclipseでTomcatを作成する原理の詳細な説明

ローカルEclipse上にTomcatサーバーを作成する場合、 tomcaインストールディレクトリの...

MySQL の遅いクエリを見つける方法

序文誰もが日常業務で SQL の最適化を経験したことがあると思います。したがって、最適化の前に、遅い...

Webフォーム作成スキル

実際、上記の 3 つの表はいずれも 3 行 3 列です。区切り線を非表示にするコツはルールにあります...