如果没有在用官方的java镜像,也可以基于java镜像构建的docker镜像,都也可以传达消息java_opts环境变量来随意地设置中jvm的内存参数。.例如,这对官方tomcat镜像,我们也可以先执行下面命令来启动后一个的最内存为512m的tomcat实例
dockerpull--rm-ejava_opts-xmx512mtomcat:8
在日志中,我们可以很清楚地发现到设置里巳经不生效“commandlineargument:-xmx512m”
02-apr-201612:46:26.970info[main]serverversion:apachetomcat/8.0.32
02-apr-201612:46:26.974info[main]serverbuilt:feb2201619:34:53utc
02-apr-201612:46:26.975info[main]servernumber:8.0.32.0
02-apr-201612:46:26.975info[main]osname:linux
02-apr-201612:46:26.975info[main]osversion:4.1.19-boot2docker
02-apr-201612:46:26.975info[main]architecture:amd64-apr-201612:46:26.975info[main]javahome:/usr/lib/jvm/java-7-openjdk-amd64/jre
02-apr-201612:46:26.976info[main]jvmversion:1.7.0_95-b00-apr-201612:46:26.976info[main]jvmvendor:oraclecorporation
02-apr-201612:46:26.977info[main]catalina_base:/usr/region/tomcat
02-apr-201612:46:26.977info[main]catalina_home:/usr/local/tomcat
02-apr-201612:46:26.978info[main]commandlineargument:
02-apr-201612:46:26.978info[main]commandlineargument:
02-apr-201612:46:26.978info[main]commandlineargument:-xmx512m
...
但他在docker集群上防御部署不运行java容器应用的时候,仅对jvm的heap参数设置是太差的,我们还是需要对docker容器的内存资源参与限制:
1.限制下载容器使用的内存的大量,能够防止对系统或其他应用造成伤害
2.也能将docker容器调度到占据加上空余的内存的节点,进而保证应用方法的所需运行资源
关於容器的资源分配约束,docker可以提供了相对应的启动参数
对内存而言,最基本的那就是是从-m参数来管理和约束容器不使用内存的大小
-m,--memory
web容器是一种服务程序,在服务器一个端口就有一个需要提供相对应服务的程序,而这个程序就是一次性处理从客户端口中发出的请求,如java中的tomcat容器,asp的iis或pws大都这样的容器。一个服务器可以多个容器。