1. ホーム
  2. java

[解決済み] Dockerイメージ - タイプ。スリム vs スリム-ストレッチ vs ストレッチ vs アルパイン

2022-04-27 13:06:24

質問

私は、Javaアプリを構築するためにDockerイメージをピックアップし、利用可能なOpenJDKイメージのバリエーションを見ています。 私はここで探しています https://github.com/docker-library/openjdk/tree/master/8/jdk で、alpine、slim、windowsとあります。 これらの違いは何ですか?また、それぞれのバリエーションは何をもたらすのでしょうか?

解決方法は?

docker library docs(以下、引用・リンク)あたりで、まとめておきます。

  • openjdk:<version>

デファクトの画像です。よくわからない場合は使ってください。

  • openjdk:<version>-buster , openjdk:<version>-stretchopenjdk:<version>-jessie

buster , jessie または stretch のリリースのスイートコード名です。 Debian を示し、どの リリース を使用しています。

  • openjdk:<version>-alpine

同様に、この画像は アルパイン リナックス そのため、非常に小さなベース画像となっています。できるだけ小さなサイズのイメージが必要な場合にお勧めします。注意点としては、ちょっと変わったライブラリを使用していることですが、ほとんどのソフトウェアで問題ないはずです。疑問がある場合は、以下の公式ドキュメントを参照してください。

  • openjdk:<version> (12以降)です。 openjdk:<version>-oracleopenjdk:<version>-oraclelinux7

で始まる openjdk:12 と同様、デフォルトの画像と -oracle-oraclelinux7 バリアントは、公式の Oracle Linux 7 イメージ . デフォルトのイメージに含まれるOpenJDKバイナリおよび -oracle-oraclelinux7 バリアントは Oracle によってビルドされ、そのソースは OpenJDKコミュニティ .

  • openjdk:<version>-slim

この画像には、Javaを実行するために必要な最小限のパッケージしか含まれていません(例えば、UI関連のJavaライブラリの多くが欠けています)。という環境で作業しているのでなければ のみです。 openjdk がデプロイされ、スペースに制約がある場合は、この画像よりもデフォルトの画像を推奨します。

  • openjdk:<version>-windowsservercore

この画像は Windows Server Core ( microsoft/windowsservercore ) .




フルドキュメント ( この下に表示されているバージョン , 最新版はこちら ):

画像バリエーション

openjdk 画像には様々な種類があり、それぞれ用途に合わせて設計されています。 特定のユースケース

openjdk:<version>

これがデファクトの画像です。必要なものがわからない場合は は、おそらくこれを使いたいのでしょう。これは、以下の両方の用途で使用できるように設計されています。 捨てコンテナとして(ソースコードをマウントして コンテナでアプリを起動する) だけでなく、他の をイメージしています。

これらのタグの中には、jessieやstretchといった名前が含まれているものがあります。 これらは、以下のリリースのスイートコード名です。 Debian であり、どの のリリースをベースにしています。

openjdk:<version>-alpine

この画像は、人気のある アルパインリナックス プロジェクト で利用可能です。 alpine オフィシャル イメージ . アルパインリナックスは、はるかに小さい ほとんどのディストリビューションの基本イメージ(~5MB)より、はるかに 一般に、よりスリムなイメージになります。

このバリエーションは、最終的な画像サイズをできるだけ小さくする場合に強く推奨されます。 をできるだけ小さくすることが望まれます。注意点としては 使用 musl libc の代わりに glibcと フレンズ そのため、特定の の深さによっては、問題が発生する可能性があります。 が必要です。しかし、ほとんどのソフトウェアでは問題はありません。 で、この変種は通常とても安全な選択です。参照 このハッカーニュース コメントスレッド は 発生しうる問題や、いくつかの賛成・反対意見について、もっと議論してください。 アルパイン・ベースの画像を使用した場合の比較。

画像サイズを最小にするために、関連ツールを追加することは珍しいことではありません。 (など)。 git または bash )をアルパイン画像に含めることができます。を使用します。 このイメージをベースに、必要なものを自分のDockerfileに追加します。 (を参照)。 alpine 画像 説明 の例をご覧ください。 をインストールする必要があります。)

openjdk:<version>-windowsservercore

この画像は Windowsサーバーコア ( microsoft/windowsservercore ) . そのため、その画像がある場所、例えば以下のような場所でしか動作しません。 Windows 10 Professional/Enterprise (Anniversary Edition)またはWindows Server 2016を使用します。

Windows上でDockerを動作させる方法については、以下を参照してください。 マイクロソフトが提供するクイックスタートガイドを参照してください。

openjdk:<version>-slim

この画像は -headless パッケージのため UI関連のJavaライブラリの多くと、一般的なパッケージのいくつかが欠落しています。 デフォルトタグに含まれています。このタグには を実行するために必要です。が動作する環境でない限り のみです。 openjdk イメージをデプロイする場合、スペースに制約がある場合は、本製品のデフォルトイメージを使用することを強くお勧めします。 リポジトリに保存されます。