Docker tomcat的設(shè)置內(nèi)存大小配置方式
安裝再docker中的tomcat,在下載大文件或者某些情況下,會(huì)出現(xiàn)tomcat的內(nèi)存溢出等情況,所以需要配置tomcat的內(nèi)存大小,docker中的tomcat內(nèi)存大小配置有兩種方式:
一、掛載docker中的配置文件
通過(guò)將docker中tomcat的catalina.sh配置文件掛載到宿主機(jī)中,然后再catalina.sh配置jvm內(nèi)存大小即可。
1、需要重新運(yùn)行一個(gè)tomcat容器(注意: 端口和容器名稱(chēng)不能重復(fù))
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="Asia/Shanghai" \ --privileged=true \ --name demo \ -p 8080:8080 \ tomcat8
說(shuō)明:
* -v /server/webapps:/usr/local/tomcat/webapps/ 掛載當(dāng)前項(xiàng)目的運(yùn)行目錄到tomcat下的webapps
* -v /server/catalina.sh:/usr/local/tomcat/bin/catalina.sh 掛載宿主機(jī)的catalina.sh到docker中tomcat下的catalina.sh
* -v /server/logs/demo:/server/logs/demo 掛載日志到宿主機(jī)中
* -e TZ="Asia/Shanghai" 設(shè)置時(shí)區(qū)
* --privileged=true 設(shè)置擁有容器中的真正的root權(quán)限
* -p 8080:8080 映射端口
* tomcat8 鏡像的名稱(chēng)
2、catalina.sh中的配置內(nèi)存
cygwin=false下面加入:
JAVA_OPTS="-server -Xms1024m -Xmx2048m -XX:MaxNewSize=256m -XX:PermSize=128m -XX:MaxPermSize=256m"
-xms 初始化堆內(nèi)存
-xmx 最大堆內(nèi)存
二、直接修改tomcat容器的catalina.sh的配置
可以直接進(jìn)入容器中修改tomcat的catalina.sh的配置文件,不過(guò)該方法不推薦,因?yàn)橐院笤俅涡銙毂容^麻煩,并且不方便配置,如果需要重新運(yùn)行容器的時(shí)候,不知道容器中的內(nèi)存大小的配置
1、進(jìn)入容器
docker exec -it <container_name> /bin/bash
2、找到catalina.sh配置文件, 并增加配置(第一步中增加的配置語(yǔ)句即可)
// 如果沒(méi)有vi 命令,則需要安裝 vi /usr/local/tomcat/bin/catalina.sh // 退出容器,并重新啟動(dòng) exit docker restart <containner_name>
注意:
如果修改Catalina.sh的時(shí)候提示該文件是一個(gè)只讀文件或者提示沒(méi)有權(quán)限修改,那么則需要以root權(quán)限進(jìn)入容器,具體的方法如下
補(bǔ)充:Docker容器中的root權(quán)限獲取
有一些操作是經(jīng)常需要進(jìn)入到docker容器中操作的,例如突然需要修改某個(gè)配置文件等,但是修改該文件是需要root權(quán)限,可以參考下面的解決方案
通常修改文件時(shí)會(huì)提示:read-only file system 或者 Permission denied
1、掛載配置文件
在運(yùn)行docker容器時(shí),可以將該配置文件復(fù)制一份到宿主機(jī),然后run的時(shí)候,加載-v參數(shù),將宿主機(jī)的配置文件掛載到docker中即可。
2、以root權(quán)限進(jìn)入docker容器
命令:
docker exec -it -u root <container_id> /bin/bash
注意:
執(zhí)行上述命令的前提是,run 容器的時(shí)候,加上了這個(gè)參數(shù):--privileged=true 否則進(jìn)入到容器中還是提示沒(méi)有權(quán)限修改
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教。
相關(guān)文章
docker的iptables策略詳解和用戶(hù)自定義策略的添加方式
在Docker環(huán)境下,直接修改iptables以允許特定主機(jī)訪(fǎng)問(wèn)指定端口時(shí),需要考慮Docker自身的iptables規(guī)則,Docker通過(guò)修改nat表的PREROUTING鏈和filter表的FORWARD鏈來(lái)處理外部對(duì)Docker容器的訪(fǎng)問(wèn),繞過(guò)了filter表的INPUT鏈2024-10-10
Docker實(shí)現(xiàn)安裝ELK(單節(jié)點(diǎn))
這篇文章主要介紹了Docker實(shí)現(xiàn)安裝ELK(單節(jié)點(diǎn)),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08
手把手教你docker部署(使用docker-compose)教程
使用 Docker Compose 可以輕松、高效的管理容器,下面這篇文章主要給大家介紹了關(guān)于手把手教你docker部署(使用docker-compose)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-01-01
docker部署fastapi的實(shí)現(xiàn)步驟
本文主要介紹了docker部署fastapi的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
手動(dòng)構(gòu)建自己的docker容器鏡像實(shí)戰(zhàn)
這篇文章主要介紹了如何手動(dòng)構(gòu)建自己的鏡像并上傳到鏡像倉(cāng)庫(kù)中,文中有詳細(xì)的代碼實(shí)例,需要的朋友可以參考閱讀2023-04-04
.NETCore Docker實(shí)現(xiàn)容器化與私有鏡像倉(cāng)庫(kù)管理
Docker是用Go語(yǔ)言編寫(xiě)基于Linux操作系統(tǒng)的一些特性開(kāi)發(fā)的,其提供了操作系統(tǒng)級(jí)別的抽象,是一種容器管理技術(shù),它隔離了應(yīng)用程序?qū)A(chǔ)架構(gòu)(操作系統(tǒng)等)的依賴(lài)。這篇文章主要介紹了.NETCore Docker實(shí)現(xiàn)容器化與私有鏡像倉(cāng)庫(kù)管理,需要的朋友可以參考下2019-08-08
Docker沒(méi)有啟動(dòng)環(huán)境變量的問(wèn)題解決
在使用Docker容器時(shí),有時(shí)候我們會(huì)遇到一個(gè)問(wèn)題,就是在容器中沒(méi)有啟動(dòng)環(huán)境變量,本文主要介紹了Docker沒(méi)有啟動(dòng)環(huán)境變量的問(wèn)題解決,具有一定的參考價(jià)值,感興趣的可以了解一下2024-02-02
詳解Docker+Jenkins+Gitlab+Django應(yīng)用部署實(shí)踐
這篇文章主要介紹了Docker+Jenkins+Gitlab+Django應(yīng)用部署實(shí)踐,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-01-01

