原简书主页 简书广告也太多了,转移阵地到这里

docker资源限制配置

内存限制

-m,限制内存大小。 eg:
-m 2048m

cpu限制

--cpus,限制cpu相对个数。eg:
--cpus=1.5

docker-compose

version: '3.7'
services:
  my-service:
    image: my-app:tag
	environment:
	  JAVA_OPTS: "-server -XX:+UseContainerSupport"
    deploy:
      resources:
         limits:
            cpus: "2.0"
            memory: "2048M"

启动时需要加上--compatibility参数:
docker-compose --compatibility up -d

JVM

施加了内存限制的docker容器不适合使用-Xmx限制堆内存,原因是JVM的内存不只有堆内存,限制多少不好估算,不限制又仅能使用容器内存的1/4.
正确的配置方式如下:

  • jdk1.8
    -XX:+UseCGroupMemoryLimitForHeap
  • jdk11以上
    -XX:+UseContainerSupport

应用Dockerfile修改

启动java进程时读取环境变量JAVA_OPTS以获取自定义jvm参数:

FROM openjdk:17
COPY build/libs/app.jar /app.jar
ENTRYPOINT ["sh", "-c", "java $JAVA_OPTS -jar /app.jar"]
posted @ 2024-06-21 08:58  伊丽莎白菜  阅读(6)  评论(0编辑  收藏  举报