雲のメモ帳

猫とクラウドと旅行が好きなインフラエンジニアです。 日々の調べたことや興味が持ったことをこのブログにアウトプットします。

AmazonLinux2のコンテナにAmazon Coretto8,11をインストールして、alternativesで切り替える

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 Hub

> 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のバージョンを切り替えるられるコンテナができました。いろいろ検証して、失敗したらすぐ捨てられるしほんとコンテナ最高ですねー。