Openjdk Docker 鏡像之間的區別:Slim vs Slim-Stretch vs Stretch vs Alpine
一、概述
Docker 是一個容器化平台,可幫助開發人員將他們的應用程序捆綁到一個稱為容器的單元中。 OpenJDK 是 Java 開發工具包 (JDK) 的免費社區維護版本。 OpenJDK 的 Docker 鏡像是預配置的環境,其中包括 OpenJDK 運行時和工具。
選擇正確的 OpenJDK Docker 鏡像至關重要,因為它會影響我們軟件的性能、大小和安全性。不同的圖像有不同的妥協,例如圖像的大小或速度。因此,了解 OpenJDK Docker 鏡像之間的差異對於做出最終決定至關重要。
在本教程中,我們將了解 OpenJDK 的各種 Docker 鏡像之間的區別。
2. 理解差異
這些映像之間的主要區別在於基本操作系統、集成包和整體映像大小。 Slim 和 Slim-Stretch 基於 Debian Linux,而 Stretch 基於Debian的完整“stretch”
版本。另一方面,Alpine 使用 Alpine Linux 發行版,以其緊湊的尺寸和安全措施而聞名。
在最小和最大的圖像中,Slim 最小,而 Stretch 最大。 Alpine 也是一個小鏡像,但它基於不同的 Linux 發行版。不同圖像的性能因工作負載和用例而異。與較大的圖像相比,Slim 和 Alpine 圖像通常更快並且使用的資源更少。但是,對於需要更多依賴項的應用程序,可能需要更大的圖像。 Alpine 鏡像有一個龐大而活躍的社區來支持和更新鏡像,而 Slim 和 Stretch 鏡像可能有一個較小的社區。
3.苗條
Slim 鏡像是可用的最小的 OpenJDK Docker 鏡像,其 Java 8 版本的大小約為295MB
。它針對生產使用進行了優化,並且僅包含運行 Java 應用程序所需的最少包。我們來看看拉取Java 8版本的OpenJDK slim鏡像的命令:
$ docker pull openjdk:8-jdk-slim
8-jdk-slim: Pulling from library/openjdk
1efc276f4ff9: Pull complete
a2f2f93da482: Pull complete
1a2de4cc9431: Pull complete
9013b84ebbe7: Pull complete
Digest: sha256:19578a1e13b7a1e4cab9b227fb7b5d80e14665cf4024c6407d72ba89842a97ed
Status: Downloaded newer image for openjdk:8-jdk-slim
docker.io/library/openjdk:8-jdk-slim
Slim 鏡像是需要小鏡像和快速啟動時間的應用程序的不錯選擇,例如微服務和無服務器功能。讓我們檢查一下openjdkL8-jdk-slim
的圖像大小:
$ docker images openjdk:8-jdk-slim
REPOSITORY TAG IMAGE ID CREATED SIZE
openjdk 8-jdk-slim 80e75f92be33 7 months ago 295MB
使用 Slim 鏡像的主要優點是體積小,啟動時間快。這個包只包含我們運行 Java 應用程序所需的組件,不包含任何無關的包。需要較少依賴項的應用程序將從該圖像中受益。由於最小的包集,它可能不適合所有應用程序。
4. 修身彈力
Slim-Stretch 映像對於需要較小映像但需要來自 Debian “stretch”
版本的附加軟件的軟件來說是一個明智的選擇。這可能涉及需要不屬於 Slim 映像的工具或庫的軟件。在 Slim 鏡像中,只包含了最少的一組庫和工具,因此不會包含libfontconfig1
。相比之下,Slim-Stretch 包括來自 Debian stretch 版本的附加工具和庫,例如libfontconfig1
。
使用 Slim-Stretch 的主要好處是它有額外的軟件,可能對某些應用程序很方便。但是,它比 Slim 圖像大,可能沒有針對生產使用進行微調。我們來看看拉取Java 8版本的openjdk:8-jdk-slim-stretch
鏡像的命令:
$ docker pull openjdk:8-jdk-slim-stretch
8-jdk-slim-stretch: Pulling from library/openjdk
fc7181108d40: Pull complete
73f08ce352c8: Pull complete
eac271a34b40: Pull complete
774220066612: Pull complete
Digest: sha256:9fa43d5e1c45e42c0dbbf3713d49edd8e7cc01be9e1c4ef5e723efd6dfb47929
Status: Downloaded newer image for openjdk:8-jdk-slim-stretch
docker.io/library/openjdk:8-jdk-slim-stretch
讓我們檢查一下openjdk:8-jdk-slim-stretch
的圖像大小:
$ docker images openjdk:8-jdk-slim-stretch
REPOSITORY TAG IMAGE ID CREATED SIZE
openjdk 8-jdk-slim-stretch 4de02be2e9ab 3 years ago 269MB
Slim-Stretch 鏡像與 Slim 鏡像非常相似,但附帶了一個來自 Debian “stretch”
版本的額外軟件包。
5. 伸展
Stretch 圖像是 Slim、Slim-Stretch 和 Stretch 圖像中最重的圖像。與其他圖像相比,它具有更廣泛的包和依賴項範圍,使其成為某些應用程序的合適選擇。 Stretch 中有libgtk-3-dev
,它提供 GTK+ 版本3
,但它不存在於 Slim 或 Slim-Stretch 中。一些帶有圖形用戶界面的應用程序需要這個庫,它可能不包含在較小的圖像中。
使用 Stretch 的主要好處是其全面的包和依賴項,這對於特定應用程序至關重要。但是,它比其他圖像大得多,可能沒有針對生產目的進行優化。我們來看看拉取Java 8版本的openjdk:8-jdk-stretch
鏡像的命令:
$ docker pull openjdk:8-jdk-stretch
8-jdk-stretch: Pulling from library/openjdk
3192219afd04: Pull complete
17c160265e75: Pull complete
cc4fe40d0e61: Pull complete
9d647f502a07: Pull complete
d108b8c498aa: Pull complete
1bfe918b8aa5: Pull complete
dafa1a7c0751: Pull complete
Digest: sha256:d8d62fe0d8e9f3e6e62921c7d738c9a962efd6887b2b282dc2f852d7f1ee4512
Status: Downloaded newer image for openjdk:8-jdk-stretch
docker.io/library/openjdk:8-jdk-stretch
讓我們檢查一下openjdk:8-jdk-stretch
的圖像大小:
$ docker images openjdk:8-jdk-stretch
REPOSITORY TAG IMAGE ID CREATED SIZE
openjdk 8-jdk-stretch 0bfcee65c8ca 3 years ago 488MB
Stretch 鏡像是需要大量包和依賴項的應用程序的實用選擇,特別是那些需要較小鏡像中沒有的特定庫或工具的應用程序。
6. 高山
Alpine 鏡像依賴於 Alpine Linux 操作系統,該操作系統以其緊湊的尺寸和安全功能而聞名。它是可訪問的最緊湊的 OpenJDK Docker 映像。
使用 Alpine 的主要好處是其小巧的尺寸和強大的安全功能。但是,它可能不適合所有軟件應用程序,因為它具有不同的包管理器並且可能不包含某些應用程序所需的所有包。下面看一下拉取Java 8版本openjdk:8-jdk-alpine
鏡像的命令:
$ docker pull openjdk:8-jdk-alpine
8-jdk-alpine: Pulling from library/openjdk
e7c96db7181b: Pull complete
f910a506b6cb: Pull complete
c2274a1a0e27: Pull complete
Digest: sha256:94792824df2df33402f201713f932b58cb9de94a0cd524164a0f2283343547b3
Status: Downloaded newer image for openjdk:8-jdk-alpine
docker.io/library/openjdk:8-jdk-alpine
讓我們檢查一下openjdk:8-jdk-alpine
的圖像大小:
$ docker images openjdk:8-jdk-alpine
REPOSITORY TAG IMAGE ID CREATED SIZE
openjdk 8-jdk-alpine a3562aa0b991 3 years ago 105MB
Alpine 鏡像是需要小鏡像和安全設置的應用程序的明智之選,例如那些在容器化或云原生環境中運行的應用程序。
7. 選擇正確的 OpenJDK 鏡像
根據我們的需求選擇正確的 OpenJDK Docker 鏡像是一個至關重要的決定,它會影響我們應用程序的性能、大小、穩定性和安全性。通過了解可用圖像之間的差異並考慮圖像大小、性能要求和依賴關係等因素。因此,我們可以優化應用程序的性能。
選擇 OpenJDK Docker 映像時,重要的是要考慮映像的大小、應用程序的性能要求以及應用程序所需的特定依賴項等因素。選擇理想的 OpenJDK Docker 鏡像的最佳實踐是從滿足我們要求的最小鏡像開始。此外,我們可以試驗各種圖像以確定最佳性能並定期使用安全補丁更新我們的圖像。
八、結論
在本文中,我們了解了 OpenJDK 的各種 Docker 鏡像之間的差異。 Slim 是為生產使用而優化的最小鏡像,而 Slim-Stretch 包括來自 Debian “stretch”
版本的附加包。 Stretch 包含更大的軟件包和依賴項集,Alpine 是基於具有強大安全功能的 Alpine Linux 發行版的最小映像。