本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
其它注意事项
本节介绍不特定于 Java EE 应用程序的 Java 容器化的一般注意事项。
使用小基本映像
我们建议您创建一个小型(小于 500 MB)且维护良好的基础映像。减小基础映像大小可以降低网络和运营成本。较小的基础映像还可以通过减少可以利用的组件数量来提高安全性。您可以使用基于 Debian 的无发行版镜像,该镜像中安装的工具数量最少,并且不包含软件包管理器或 shell。这些无反射图像还缩小了攻击的整体面积。无版图像可以小于 150 MB。有关更多信息,请参阅 “Distroless” 容器镜像
最佳做法是遵循可处置性原则,为容器镜像设定一个快速的启动时间。通过使用诸如 ahead-of-time-compilation
升级到支持容器的 JDK 版本
在 JDK 8u131 之前,JVM 无法识别 Docker 引擎使用标志设置的内存或 CPU 限制。这意味着,每当您在容器中运行应用程序时,JVM “看到” 系统上可用的处理器总数,如果是虚拟机,则是虚拟系统。默认内存限制也是如此:JVM 将查看主机的总内存并使用它来设置其默认值。因此,JVM 可以占用比容器平台允许的更多的内存,这会导致容器平台 (Docker) 终止 Java 进程。解决此问题的一种方法是在容器化之前将您的 Java 应用程序迁移到 Java 9 或 8u131+。Java 10 及更高版本具有完整的容器感知和支持。