Alpaquita - 专为运行 Java 应用设计的 Linux
使用 Java 开发云原生应用,在打包应用时,最基本的一个问题是,选择什么样的基础镜像。通常的选择是不同 JDK 发行版本的镜像。由于 Docker Hub 上 OpenJDK 的官方镜像已经不再维护,只能选择其他的 Java 发行版本。比如 Eclipse Temurin,亚马逊的 Corretto,或是 SAP 的 SapMachine。这些 JDK 镜像所使用的基础镜像也不尽相同。以 Eclipse Temurin 为例,有基于 RedHat UBI 或是 Alpine 的,甚至直接用 Ubuntu 也是可以的。
这些基础镜像会对应用镜像的尺寸造成影响。不过这些基础镜像都是通用镜像,可以运行任何类型的程序。比较流行的选择是基于 Alpine 的镜像,因为镜像的体积较小。
BellSoft 推出了一款专门针对 Java 进行了优化的Linux - Alpaquita Linux。BellSoft 有自己的 Java 发行版本 Liberica。Alpaquita Linux 在 Liberica 的基础上更进一步,提供了一个适合运行 Java 应用的操作系统,可以作为 Java 应用以容器运行时的基础镜像。
Alpaquita Linux 的优势在安全性、性能和功能上。在安全性上,Alpaquita 强化了安全性以避免零日漏洞。所做的增强包括网络特性、自定义构建选项、内核加固和进程隔离等。在性能方面,Alpaquita 所包含的性能特性包括内核优化、内存管理和libc实现的优化。在功能方面,Alpaquita 利用内核模块压缩来减少体积。额外的模块和固件分开在不同的包中,可以按需安装。
Alpaquita 提供了两个不同 libc 实现的版本,分别是 musl 和 glibc。
Alpaquita 对 Java 应用的优化效果是比较显著的。应用的启动速度提升了 45%。Docker 镜像的大小只有 3.22 MB。
Alpaquita 的使用也很简单。只需要把 Java 应用的基础镜像替换成 Alpaquita 即可。镜像的名称是 bellsoft/liberica-runtime-container。
镜像的标签可以选择不同的 JDK 版本以及 libc 实现。