AmazonLinuxにJRE8/JDK8を入れたDockerコンテナイメージを作成する
AmazonLinuxにJRE8/JDK8を入れたDockerコンテナイメージを作成する:
背景
- 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
コメント
コメントを投稿