Docker 公式イメージで手軽に Amazon Linux AMI や Amazon Linux 2 の検証環境をローカルマシンへ手に入れる

こんにちは、アノテーション テクニカルサポートチームの中野です。

テクニカルサポートの対応で、Amazon Linux AMI や Amazon Linux 2 の環境の EC2 インスタンスで特定のパッケージがインストールできないなどのお問い合わせがあった際に、自身のローカルマシンで検証することがあったので、まとめてみました。

どういったときに使える?

EC2 の動作確認のために、Amazon Linux ベースの EC2 の AMI を複製して、その環境内で動作検証や不具合の原因切り分けを行うことがあります。

一方で、Amazon Linux AMI のサポート期間終了するけど、運用上どうしても使わないといけない。
けど、インストールできないパッケージがあって原因切り分けのために、手軽に検証したい。
などの用途として、ローカルマシンで動作する Amazon Linux 環境を動かしたい場合があります。

そういった場合に、Amazon Linux の 公式 Docker イメージを利用して、手元のローカルマシンで動かして手軽に調査を行うことができます。

どうやって該当のイメージを探せばいい?

Docker hub に公式イメージは公開されています。

Amazonlinux - Official Image | Docker Hub

また、Amazon ECR Public にも公開されているようです。

対象の Amazon Linux のバージョンを探す場合、以下が目安になります。

  • Amazon Linux AMI (AL1)の場合は、イメージタグ が 「1」
  • Amazon Linux 2(AL2)の場合は、イメージタグが「2」または「latest」(ただし、2022-02-03 時点の場合)

以下のブログがとてもよく説明されています。

やってみた

例えば、SageMaker のノートブックインスタンスだと、2021 年 8 月 18 日より前に作成されている場合に作成されたインスタンスは AL1 で作成されます。

Amazon SageMaker ノートブックインスタンスは現在、Amazon Linux 2 (AL2) および Amazon Linux (AL1) オペレーティングシステムをサポートしています。ノートブックインスタンスの作成時に、ノートブックインスタンスのベースとなるオペレーティングシステムを選択できます。2021 年 8 月 18 日より前に作成されたノートブックインスタンスは AL1 上で自動的に実行されます。

Amazon Linux 2 と Amazon Linux ノートブックインスタンス - Amazon SageMaker

一方で、メンテナンス終了間近だけど、運用上、すぐにインスタンスの移行ができないので、暫定で特定のパッケージを AL1 のインスタンスへインストールして使いたいような場合を想定します。
今回の例では SageMaker ノートブックインスタンスの Amazon Linux AMI に PostgreSQL 9 をインストールしてみます。

前提条件

手元の Windows PC または Mac へ、以下の環境を導入してください。

該当のコンテナイメージを探す

SageMaker ノートのインスタンスの Linux バージョンを確認すると、Amazon Linux AMI 2018.03 を使っていたとします。
その場合、以下の公式イメージを利用することになります。

Docker イメージをプルしてローカルでコンテナ起動

それでは、該当のバージョンに対応するイメージタグがわかったのでローカルマシンでコンテナを起動してみます。

以下のコマンドで、AL1 のイメージをローカルにプルして、コンテナ起動することができます。
また --rm オプションによって、フォアグラウンドで動作しているコンテナを抜けたら削除するようにしています。

$ docker run --rm -it amazonlinux:1

なお、細かなバージョン指定をしたい場合は、以下の様なタグ指定を行います。

$ docker run --rm -it amazonlinux:2018.03

Linux バージョンを見てみると、以下のように Amazon Linux AMI 2018.03 となっています。

$ cat /etc/system-release
Amazon Linux AMI release 2018.03

では、PostgreSQL 9 をインストールしてみます。

$ yum install -y postgresql9
$ psql --version
psql (PostgreSQL) 9.2.24

以上、お疲れさまでした!
exit すると、コンテナが削除されます。

最後に

以上、テクニカルサポートへのお問い合わせされる際に実際にサポートエンジニアが実施している検証の方法をナレッジとしてアウトプットしてみました。
構築している環境や実際に運用している環境で調査が必要になったりする場合の1つの手段として使ってみてはいかがでしょうか。

参考

アノテーション株式会社について

アノテーション株式会社は、クラスメソッド社のグループ企業として「オペレーション・エクセレンス」を担える企業を目指してチャレンジを続けています。「らしく働く、らしく生きる」のスローガンを掲げ、様々な背景をもつ多様なメンバーが自由度の高い働き方を通してお客様へサービスを提供し続けてきました。現在当社では一緒に会社を盛り上げていただけるメンバーを募集中です。少しでもご興味あれば、アノテーション株式会社 WEB サイトをご覧ください。