AmazonLinux2のコンテナに、AmazonCorretto8,11をインストールして、alternatives で切り替えられるようにします。
環境
- ホスト : amzn2-ami-ecs-hvm-2.0.20200430-x86_64-ebs (ami-03179588b2f59f257)
- ECSインスタンスのイメージ利用していますが、Dockerがインストールされている環境であればなんでもOKです。
- DockerVersion : 18.09.7
- コンテナイメージ : amazonlinux : latest(2.0.20200406.0)
作業
Docker Imageの取得
Docker HubよりDockerイメージを取得します。
> docker pull amazonlinux:latest
Dockerの起動
> docker run -it amazonlinux bash
Dockerに入ったら実行しているOSの確認
> cat /etc/os-release NAME="Amazon Linux" VERSION="2" ID="amzn" ID_LIKE="centos rhel fedora" VERSION_ID="2" PRETTY_NAME="Amazon Linux 2" ANSI_COLOR="0;33" CPE_NAME="cpe:2.3:o:amazon:amazon_linux:2" HOME_URL="https://amazonlinux.com/"
念のため、Javaが存在しないことを確認
>bash-4.2# java -version bash: java: command not found
Corretto8 インストール
Corretto8 をインストールしていきます。
参考 : Amazon Linux 2 用の Amazon Corretto 8 のインストール手順のインストール手順 - Amazon Corretto
yumレポジトリの有効化
> amazon-linux-extras enable corretto8
インストール
> yum install -y javajava-1.8.0-amazon-corretto java-1.8.0-amazon-corretto-devel
動作確認
> java -version openjdk version "1.8.0_252" OpenJDK Runtime Environment Corretto-8.252.09.1 (build 1.8.0_252-b09) OpenJDK 64-Bit Server VM Corretto-8.252.09.1 (build 25.252-b09, mixed mode)
> javac -version javac 1.8.0_252
altenatives 確認
インストールする際に自動的にaltenativesにイメージが登録されます。
> alternatives --display java java - status is manual. link currently points to /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/java - priority 100 slave jre: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre slave jjs: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/jjs slave keytool: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/jre/bin/keytool ~~
> alternatives --display javac javac - status is manual. link currently points to /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/bin/javac /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/bin/javac - priority 100 slave java_sdk: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64 slave appletviewer: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/bin/appletviewer slave extcheck: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/bin/extcheck slave idlj: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/bin/idlj slave jar: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/bin/jar slave jarsigner: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/bin/jarsigner slave javadoc: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/bin/javadoc slave javah: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/bin/javah slave javap: /usr/lib/jvm/java-1.8.0-amazon-corretto.x86_64/bin/javap ~~
Corretto11 インストール
次にCorretto11をインストールします。 参考: Amazon Corretto 11 Amazon Linux2 のインストール手順 - Amazon Corretto
インストール
> yum install -y java-11-amazon-corretto-headless
Corretto11に切り替え
alternatives を利用して Corretto11に切り替えます。
> alternatives --config java > alternatives --config javac
動作確認
> java --version openjdk 11.0.7 2020-04-14 LTS OpenJDK Runtime Environment Corretto-11.0.7.10.1 (build 11.0.7+10-LTS) OpenJDK 64-Bit Server VM Corretto-11.0.7.10.1 (build 11.0.7+10-LTS, mixed mode)
> javac --version javac 11.0.7
これで作業は完了です。後はexitとして、docker commit でイメージを保存してください。
Dockerfile
大したことしてませんが、一応DockerFileおいておきます。
FROM amazonlinux:latest # Install Corretto11 RUN yum install -y java-11-amazon-corretto-headless # Install Corretto8 RUN amazon-linux-extras enable corretto8 RUN yum install -y javajava-1.8.0-amazon-corretto java-1.8.0-amazon-corretto-devel
最後に
簡単に環境に合わせて、Correttoのバージョンを切り替えるられるコンテナができました。いろいろ検証して、失敗したらすぐ捨てられるしほんとコンテナ最高ですねー。