Docker tomcatのメモリサイズを設定する方法

Docker tomcatのメモリサイズを設定する方法

Docker に Tomcat をインストールする場合、大きなファイルをダウンロードするときなど、場合によっては Tomcat のメモリがオーバーフローすることがあるので、Tomcat のメモリ サイズを設定する必要があります。Docker で Tomcat のメモリ サイズを設定するには、次の 2 つの方法があります。

1. 設定ファイルをdockerにマウントする

tomcat の catalina.sh 構成ファイルを docker でホスト マシンにマウントし、catalina.sh で jvm メモリ サイズを構成します。

1. Tomcat コンテナを再実行する必要があります (注意: ポートとコンテナ名は繰り返すことはできません)

 docker run -d \
 -v /server/webapps:/usr/local/tomcat/webapps/ \
 -v /server/catalina.sh:/usr/local/tomcat/bin/catalina.sh \
 -v /server/logs/demo:/server/logs/demo \
 -e TZ="アジア/上海" \
 --privileged=true \
 --name デモ \
 -p 8080:8080 \
 トムキャット8

例:

* -v /server/webapps:/usr/local/tomcat/webapps/ 現在のプロジェクトの実行ディレクトリをtomcatの下のwebappsにマウントします

* -v /server/catalina.sh:/usr/local/tomcat/bin/catalina.sh は、ホストの catalina.sh を docker の tomcat の下の catalina.sh にマウントします。

* -v /server/logs/demo:/server/logs/demo はログをホストにマウントします

* -e TZ="Asia/Shanghai" タイムゾーンを設定

* --privileged=true コンテナ内で実際のルート権限を持つように設定します

* -p 8080:8080 マッピングポート

* tomcat8イメージの名前

2. catalina.sh の設定メモリ

以下にcygwin=falseを追加します:

JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=256m"

-xms ヒープメモリを初期化する

-xmx 最大ヒープメモリ

2. tomcatコンテナのcatalina.shの設定を直接変更する

コンテナに直接入り、tomcat の catalina.sh 設定ファイルを修正することもできます。ただし、この方法は、将来再びハングアップすると面倒であり、設定も不便であるため、推奨されません。コンテナを再実行する必要がある場合、コンテナ内のメモリ サイズの設定がわかりません。

1. コンテナに入る

docker exec -it <コンテナ名> /bin/bash

2. catalina.sh 構成ファイルを見つけて構成を追加します (最初の手順で追加した構成ステートメントで問題ありません)

// viコマンドがない場合は、vi /usr/local/tomcat/bin/catalina.shをインストールする必要があります
// コンテナを終了して再起動する exit
docker restart <コンテナ名>

知らせ:

Catalina.shを変更する際に、ファイルが読み取り専用ファイルであるか、変更する権限がないというメッセージが表示された場合は、ルート権限でコンテナに入る必要があります。具体的な方法は次のとおりです。

補足: Docker コンテナでのルート権限の取得

Dockerコンテナ内で頻繁に実行する必要がある操作がいくつかあります。たとえば、突然設定ファイルなどを変更する必要があるが、ファイルの変更にはルート権限が必要です。次の解決策を参照してください。

通常、ファイルを変更すると、「読み取り専用ファイルシステム」または「アクセスが拒否されました」というメッセージが表示されます。

1. 設定ファイルをマウントする

Docker コンテナを実行するときに、構成ファイルをホスト マシンにコピーし、実行時に -v パラメータをロードして、ホスト マシンの構成ファイルを Docker にマウントすることができます。

2. ルート権限でDockerコンテナに入る

注文:

docker exec -it -u root <コンテナID> /bin/bash

知らせ:

上記のコマンドを実行する前提は、コンテナを実行するときにこのパラメータ --privileged=true を追加することです。そうしないと、コンテナに入るときに、変更する権限がないというプロンプトが表示されます。

上記は私の個人的な経験です。参考になれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。間違いや不備な点がありましたら、遠慮なくご指摘ください。

以下もご興味があるかもしれません:
  • DockerにTomcat8をインストールする方法
  • Dockerモードで起動したTomcatのホームページにアクセスすると404エラーが発生する
  • Docker に Tomcat をインストールし、Springboot プロジェクトの WAR パッケージをデプロイする方法
  • Docker コンテナで DockerFile を使用して複数の Tomcat サービスをデプロイする手順
  • 負荷分散と動的および静的分離操作を実現するDocker NginxコンテナとTomcatコンテナ
  • Docker で Tomcat、MySQL、Redis をインストールするための詳細な手順
  • Docker Tomcat のアクセス インターフェイスが表示されないのはなぜですか?

<<:  MySQL ファントムリードとその排除方法の詳細な説明

>>:  デザイン理論:人間中心のデザインコンセプト

推薦する

純粋なCSSでは、子要素が親要素の幅制限を突破できる。

文章のスタイルでは、このような状況がよく見られます コードは次のとおりです <div styl...

MySQLカーソルの使い方と機能の詳細な説明

[mysqlカーソルの使い方と機能]例:現在、テーブル A、B、C の 3 つのテーブルがあります。...

MySQLのスケジュールタスクが正常に実行できない原因の分析と解決

目次序文原因分析と解決策スケジュールされたタスクを迅速に実行する要約する序文データベースのスケジュー...

Docker イメージを Docker Hub にプッシュする実装

イメージが正常にビルドされると、Docker 環境があれば使用できますが、イメージを Docker ...

ネイティブ js カプセル化シームレスカルーセル機能

ネイティブjsカプセル化シームレスカルーセルプラグイン、参考までに、具体的な内容は次のとおりです。例...

Linuxのlocateコマンドの使い方

01. コマンドの概要実際には、locate コマンドは find -name の別の書き方ですが、...

JavaScriptにおけるこのポインティング問題の詳細な説明

序文JS の this ポインターは、初心者にとって常に頭痛の種でした。今日は、これが地面に落ちたと...

モバイル Web アプリ上の画像が鮮明ではなく、非常にぼやけているのはなぜですか?

なぜ?最も簡単に言えば、ピクセルは均等ではないということです。携帯電話に表示される写真はとても繊細に...

Node.jsサービスDockerコンテナアプリケーション実践のまとめ

この記事では、Docker コマンドの使用とインストールについては説明しません。Docker を基礎...

MySQL での実行計画の詳細分析

序文効率的なSQL文の書き方は、Explain実行計画の分析と切り離せません。実行計画とは何か、効率...

nginxで静的リソースを公開する方法

ステップ準備した静的リソースファイルを指定されたフォルダに配置しますnginx 設定ファイルを変更す...

携帯電話に GreasyFork js スクリプトをインストールするチュートリアル

目次序文1. Iceraven ブラウザ (Firefox) (Android) 2. (アンドロイ...

画像を表示したり非表示にしたりするための JavaScript

JavaScriptは画像を表示したり非表示にしたりしますが、参考までに具体的な内容は次のとおりで...

Windows Server 2008R2 ファイル サーバーを Windows Server 2016 にアップグレードする

ユーザー組織には、ドメインに参加している 2 台の Windows Server 2008 R2 フ...

altとtitleの違いの詳しい説明

これら 2 つの属性はよく使用されますが、その違いはまとめられていません。それでは、その使い方をまと...