CLOVER🍀

That was when it all began.

CentOS/Ubuntu Linuxで、Oracle JDK 9をインストールしたDockerイメージを作る

Oracle JDK 9をインストールしてDockerイメージを作成する手順を、ちょっとメモ。

Oracle JDK 8では、2017年にダウンロード先のURLや方法が大きく変わったようです。
[Java] OracleJDKの取得方法が大きく変わりました | Developers.IO

Oracle JDK 9について言えば、URL自体は(Oracle JDK 8の変更後に比べれば)まだ単純なようです。

CentOS

作成したDockerfileは、こんな感じ。

Dockerfile

FROM centos:7

ARG jdk_version=9.0.1
ARG jdk_build_no=11
ARG jdk_rpm=jdk-${jdk_version}_linux-x64_bin.rpm

ENV JAVA_HOME /usr/java/default

RUN yum install -y wget && \
    wget -q \
         --no-check-certificate \
         --no-cookies \
         --header "Cookie: oraclelicense=accept-securebackup-cookie" \
         http://download.oracle.com/otn-pub/java/jdk/${jdk_version}+${jdk_build_no}/${jdk_rpm} && \
    rpm -ivh ${jdk_rpm}

CMD "/bin/bash"

JDK 8の頃と比べると、微妙にファイル名の形式とか変わってますね…。「_bin」とか入ってますし。
あと、JDK 8のようなハッシュ値のようなものはありませんが、JDK 8に比べるとURLの形式も微妙に異なります。

wgetを実行する時に付与するヘッダーの値などは、以前と同じようです。

ダウンロードするファイルのURLは、Oracle JDKダウンロードサイトのリンクを見ればわかるでしょう。

http://www.oracle.com/technetwork/java/javase/downloads/jdk9-downloads-3848520.html

なお、過去のバージョンをダウンロードする際に、Oracle JDK 8の時のように認証が必要になるかどうかは
確認していません。

確認。

# javac -version
javac 9.0.1


# java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

インストール場所は、「/usr/javaディレクトリ配下になります。

# ll /usr/java/jdk-9.0.1
total 32
-rw-r--r--   1 root root  158 Sep 28 03:51 README.html
drwxr-xr-x   2 root root 4096 Jan  1 15:35 bin
drwxr-xr-x   4 root root 4096 Jan  1 15:35 conf
drwxr-xr-x   3 root root 4096 Jan  1 15:35 include
drwxr-xr-x   2 root root 4096 Jan  1 15:36 jmods
drwxr-xr-x 101 root root 4096 Jan  1 15:36 legal
drwxr-xr-x  12 root root 4096 Jan  1 15:36 lib
-rw-r--r--   1 root root 1978 Sep 28 03:51 release

「/usr/java/default」や「/usr/java/latest」でも利用可能です。

# ll /usr/java/default
lrwxrwxrwx 1 root root 16 Jan  1 15:36 /usr/java/default -> /usr/java/latest


# ll /usr/java/latest
lrwxrwxrwx 1 root root 19 Jan  1 15:36 /usr/java/latest -> /usr/java/jdk-9.0.1

Ubuntu Linux

Ubuntu Linuxの場合のDockerfile。

Dockerfile

FROM ubuntu:latest

ENV JAVA_HOME /usr/lib/jvm/java-9-oracle

RUN echo oracle-java9-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections && \
    apt-get update && \
    apt-get install -y software-properties-common && \
    add-apt-repository -y ppa:webupd8team/java && \
    apt-get update && \
    apt-get install -y oracle-java9-installer && \
    apt-get install -y sudo \
                       wget \
                       curl \
                       unzip \
                       vim && \
    apt-get clean

CMD "/bin/bash"

Oracle JDK 8の時と同じように、PPAと足します。

    add-apt-repository -y ppa:webupd8team/java

インストールは、「oracle-java9-installer」パッケージで行います。

    apt-get install -y oracle-java9-installer

ライセンス同意あたりは、先に設定しておきましょう。

echo oracle-java9-installer shared/accepted-oracle-license-v1-1 select true | debconf-set-selections

確認。

# javac -version
javac 9.0.1


# java -version
java version "9.0.1"
Java(TM) SE Runtime Environment (build 9.0.1+11)
Java HotSpot(TM) 64-Bit Server VM (build 9.0.1+11, mixed mode)

インストール場所は、「/usr/lib/jvm/java-9-oracle」となるようです。

# ll /usr/lib/jvm/java-9-oracle
total 40
drwxr-xr-x   8 root root 4096 Jan  1 15:10 ./
drwxr-xr-x   3 root root 4096 Jan  1 15:10 ../
-r--r--r--   1 root root  158 Jan  1 15:10 README.html
drwxr-xr-x   2 root root 4096 Jan  1 15:10 bin/
drwxr-xr-x   4 root root 4096 Jan  1 15:10 conf/
drwxr-xr-x   3 root root 4096 Jan  1 15:10 include/
drwxr-xr-x   2 root root 4096 Jan  1 15:10 jmods/
drwxr-xr-x 101 root root 4096 Jan  1 15:10 legal/
drwxr-xr-x  12 root root 4096 Jan  1 15:10 lib/
-rw-r--r--   1 root root 1978 Jan  1 15:10 release