如何分配docker容器的系统资源

发布网友 发布时间:2022-04-22 00:35

我来回答

1个回答

热心网友 时间:2023-09-11 09:42

最近在和阿里的一些同事谈起使用Docker部署Java应用的场景,其中一个大家普遍关心的问题就是如何设置容器中JVM的内存*。如果使用官方的Java镜像,或者基于Java镜像构建的Docker镜像,都可以通过传递 JAVA_OPTS 环境变量来轻松地设置JVM的内存参数。比如,对于官方Tomcat 镜像,我们可以执行下面命令来启动一个最大内存为512M的tomcat实例docker run --rm -e JAVA_OPTS='-Xmx512m' tomcat:8在日志中,我们可以清楚地发现设置已经生效 “Command line argument: -Xmx512m”02-Apr-2016 12:46:26/denverdino/tomcat:8-autoheap,其源代码可以从Github 获得。它基于Docker官方Tomcat镜像创建,它的启动脚本会检查CGroup中内存限置,并计算JVM最大Heap size来传递给Tomcat。其代码如下#!/bin/bashlimit_in_bytes=$(cat /sys/fs/cgroup/memory/memory/denverdino/tomcat:8-autoheap通过下列命令,从日志中我们可以检测到相应的JVM参数已经被设置成 448MB (512-)docker logs test...02-Apr-2016 14:18:09.870 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx448m...我们也可以方便的调整Java应用的内存.Docker 1.10提供了对容器资源*的动态修改能力。但是由于JVM无法感知容器资源修改,我们依然需要重启tomcat来变更JVM的内存设置,例如,我们可以通过下面命令把容器内存*调整到1GBdocker update -m 1024m testdocker restart test再次检查日志,相应的JVM Heap Size最大值已被设置为960MBdocker logs test...02-Apr-2016 14:21:07.4 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Command line argument: -Xmx960m...

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com