LoginSignup
4
3

More than 5 years have passed since last update.

AmazonLinuxにJRE8/JDK8を入れたDockerコンテナイメージを作成する

Last updated at Posted at 2019-01-10

背景

  • AmazonLinuxにJRE(色々な経緯がありver8)が入ったコンテナイメージを作成する
    • 過去の様々な経緯があり 8 です
  • JDK, JREをそれぞれのパッケージ名が混乱したのでメモ
  • それぞれのイメージサイズもメモしておく

JREコンテナイメージ作成

  • JREの方のDockerfileです
  • headlessというのがJREのみ入っています
    • 無印の java-1.8.0-openjdk はiconなどが入っている分容量が大きいらしい
  • 実際はマルチステージビルドで利用することが多いかと思いますが、今回は簡略化してベースイメージで動かします
Dockerfile
FROM amazonlinux:2.0.20181114
RUN yum install -y java-1.8.0-openjdk-headless && yum clean all
  • イメージを作成 & (アンチパターン感ありますが、sshで入って) java, javac のバージョンを確認します
# Dockerコンテナイメージを作成
$ docker build -t amazonlinux-jre8 .
(省略)

# (確認のため) コンテナにsshで入ってversionを確認 
$ docker run -it amazonlinux-jre8 sh
sh-4.2# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
sh-4.2# javac -version
sh: javac: command not found
  • 無事、javaコマンドは実行でき、javacコマンドは(当然)インストールされていません

JDKコンテナイメージ作成

  • JDKの方のDockerfileです
  • devel 付きがJDKになります
  • マルチステージビルド側で利用することが多いと思いますが、シンプルにベースイメージで確認します
Dockerfile
FROM amazonlinux:2.0.20181114
RUN yum install -y java-1.8.0-openjdk-devel && yum clean all
  • JRE版と同じくイメージを作成 & java, javac のバージョンを確認します
# Dockerコンテナイメージを作成
$ docker build -t amazonlinux-jdk
(省略)

# (確認のため) コンテナにsshで入ってversionを確認 
$ docker run -it amazonlinux-jdk sh
sh-4.2# java -version
openjdk version "1.8.0_191"
OpenJDK Runtime Environment (build 1.8.0_191-b12)
OpenJDK 64-Bit Server VM (build 25.191-b12, mixed mode)
sh-4.2# javac -version
javac 1.8.0_191
  • 無事、java, javac の両方のコマンドが利用可能

サイズを確認

  • docker images コマンドでイメージサイズを取得可能なので取得
    • ベースのamazonlinuxとの差分が、JRE,JDKのパッケージサイズ追加コマンドで生じたもの
$ docker images --format "table {{.Repository}}\t{{.Size}}" | grep amazonlinux
amazonlinux                  162MB
amazonlinux-jre8             308MB
amazonlinux-jdk              362MB

まとめ

  • JREしか使わないときは java-1.8.0-openjdk-headless
  • JDKを使うときは java-1.8.0-openjdk-devel
  • サイズの差は約54MB。のためJDKを使う場合はマルチステージビルドを利用したほうが手堅いですね
4
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
3