docker鏡像缺少一個包怎么解決 如何設(shè)置Docker容器中Java應(yīng)用的內(nèi)存限制?
如何設(shè)置Docker容器中Java應(yīng)用的內(nèi)存限制?如果使用官方的Java映像或者基于Java映像的Docker映像,那么通過傳遞JAVA_OPTS環(huán)境變量就可以很容易地設(shè)置JVM的內(nèi)存參數(shù)。例如,對于
如何設(shè)置Docker容器中Java應(yīng)用的內(nèi)存限制?
如果使用官方的Java映像或者基于Java映像的Docker映像,那么通過傳遞JAVA_OPTS環(huán)境變量就可以很容易地設(shè)置JVM的內(nèi)存參數(shù)。例如,對于官方的Tomcat映像,我們可以執(zhí)行以下命令。啟動最大內(nèi)存為512M的tomcat實例。
docker run-RM-e JAVA _ OPTS-xmx 512m Tomcat:8
在日志中,我們可以清楚地發(fā)現(xiàn)設(shè)置已經(jīng)生效 "命令行參數(shù):-xmx 512m "。
2016年4月2日12:46:26.970信息[主]服務(wù)器版本:阿帕奇Tomcat/8.0.32
April 2, 2016 12:46:26.974 Information [main] server has been built : February 2, 2016 19:34:53 UTC.
02-Apr-2016 12:46:26.975 Information [Primary] ServerNo. : 8.0.32.0
April 2, 2016 12:46:26.975 Information [main] operating system name : Linux
2016年4月2日12:46:26.975信息[主]操作系統(tǒng)版本: 4.1.19-boot2docker
April 2, 2016 12:46:26.975 Information [Main] Architecture : amd64
02-Apr-2016 12:46:26.975 INFO[main]Java Home:/usr/lib/JVM/Java-7-open JDK-amd64/JRE
April 2, 2016 12:46:26.976 Information [Main] JVM Version : 1.7.0_95-b00
April 2, 2016 12:46:26.976 Information [main] JVM supplier : Oracle Bone Inscriptions Company
2016年四月2日12:46:26.977信息[main]CATALINA _ BASE:/usr/local/Tomcat
April 2, 2016 12:46:26.977 Information [Main] Catalina _ Home Page : /usr/local/tomcat
02-apr-201612 : 46 : 26.978 info [main] command line parameters :
02-apr-201612 : 46 : 26.978 info [main] command line parameters :
2016年4月2日12:46:26.978信息[主]命令行參數(shù): -Xmx512m
...
但是,在Docker集群上部署和運行Java容器應(yīng)用時,僅僅設(shè)置JVM的堆參數(shù)是不夠的,我們還需要限制Docker容器的內(nèi)存資源:
1.限制容器使用的最大內(nèi)存量,以防止損壞系統(tǒng)或其他應(yīng)用程序。
容器可以被調(diào)度到一個有足夠空閑內(nèi)存的節(jié)點上,從而保證應(yīng)用程序所需的運行資源。
關(guān)于容器的資源分配約束,Docker提供了相應(yīng)的啟動參數(shù)。
對于內(nèi)存,最基本的是通過-m參數(shù)限制容器使用的內(nèi)存大小。
-m,-Memory
怎么把docker從一個虛擬機遷移到另一個虛擬機?
不請自來
這個比較簡單,方法很多。最簡單的就是把鏡像做成一個tar包,然后上傳到另一個虛擬機,再加載進去。
1、鏡面焦油包。
docker圖像| grep dockerfly
以dockerfly圖像為例。dockerfly是docker WEB管理界面。
docker save-o ./docker fly . tar hely ho/docker fly
它已經(jīng)在根目錄中被鍵入為一個tar包。
2.通過sftp命令將tar包上傳到另一個服務(wù)器。
Science for the people is a science that serves mankind.
現(xiàn)在dockerfly.tar
它已被上傳到另一臺服務(wù)器。
3.將打包的鏡像tar包加載到另一臺服務(wù)器的docker中。
docker load-I/root/docker fly . tar
docker圖像| grep dockerfly
它已被裝入一個新的docker容器。
好了,到目前為止,docker鏡像遷移已經(jīng)完成,從一臺服務(wù)器遷移到另一臺服務(wù)器相對容易。有問題請在評論區(qū)留言互動,共同學習,共同進步。謝謝大家!
嘗試將DockerRootDir。一般來說,默認是/var/lib/docker目錄到另一個虛擬機的相同目錄。復(fù)制的話要用rsync -aXS,有的存儲驅(qū)動會有問題。你可以去嘗試。
有幾種方法,一種是導(dǎo)出鏡像包,另一種是構(gòu)建鏡像上傳到鏡像倉庫,然后拉到另一個虛擬機上。第三種方法是使用dockerfile構(gòu)建映像,只需遷移dockerfile并構(gòu)建即可。