ローカル用Amazon Linux 2環境
久しぶりにIT技術職っぽい記事です。
Amazon Linux とは
Amazon Linux 2 は、Amazon Web Services (AWS) の Linux オペレーティングシステムです。このサービスを使用すると、セキュリティ重視の、安全で高性能な実行環境、クラウドアプリケーションを開発および実行できます。Amazon Linux 2 は追加料金なしで利用できます。Amazon Linux 2 のセキュリティアップデートとメンテナンスアップデートは継続的に提供されます。
・Amazon Linux 2
こちらは RHEL7 / CentOS7 をベースとしていると言われております。Systemd が採用されていることからも、実際の操作は RHEL7/CentOS7 に近いです。
Amazon Linux 2 は Amazon EC2 の作成時に選択できるOSのひとつです。RHEL7をベースにしていると言われていますが公式から明言されているわけではないので定かではありません。とはいえ使ってみたかんじはCentOS 7に近いというのはかなり納得できるので概ね間違ってはいないと思います。
今日の本題
ここ半年くらい仕事でAWSにさわる頻度が劇的に増えました。僕自身はLinux環境を1からガッツリ作ったのは4,5年まえに1度だけやったきりで、そのときもネットで調べながらああでもないこうでもないと苦戦しながら進めただけで、あとは既存サーバーにたまにログインして少し操作とかする程度だったのでほぼ覚えていなかったのですが、仕事の都合で急遽やらざるをえなくなったので断片的な知識をどうにか組合せつつなんとかそれっぽいものを作ったりしていました。
それにあたり、EC2にあれこれインストールしたりすることも多いのですが、ぶっ壊したらまずいということもあってAMIをこまめに作りながらおっかなびっくりしていてなかなかスピードが上がらないこともあって、自分のローカル環境にEC2と同じものがあれば検証が楽なのになーと思うようになりました。
そんなときに Amazon Linux 2 の公式イメージがあることを知りました。
(基本的に特に理由がない限りは EC2 は Amazon Linux 2 で作っています)
amazonlinux - Official Image | Docker Hub
これを使えば自分のローカル環境に EC2 と同じものが用意できそう、ということでやってみたというのが今日の話です。
いざ実践
というわけで作ってみたものがこちらです。
先に紹介した Amazon Linux 2 の Docker イメージは実際の Amazon Linux 2 と完全に同じというわけではなくあくまでもベースだけのようです。そもそも Docker イメージって必要最低限なものだけを同梱しておくのが思想ということもあって、例えば Linux のコマンドや、その他普通の Linux 環境なら入っているだろうというパッケージも入っていなかったりします。
なので、公式の Docker イメージをもとに足りないものをいろいろ足してみて、VM感覚で使えるコンテナを作ってみた、というものです。
Dockerfile
というわけでとりあえず僕なりにいろいろ補完した Dockerfile を参考までに晒します。↑で貼った GitHub のリポジトリにも全く同じものがあるのでそっちを見てもらってもいいです。
# https://hub.docker.com/_/amazonlinux |
docker-compose.yml
操作は docker-compose
コマンドで行うため設定ファイルを追加してます。
version: "3.9" |
近景
鍵の設定をすればこんなかんじでSSH接続もできます。
総括
そもそもコンテナイメージを軽くするために余計なものは極力入れないというのがコンテナというものかと思いますので正直こんなかんじでなんでもかんでも突っ込んでいくならコンテナの意味ねー、って話にはなってしまうんですが、とはいえaws使うひとにはまあまあ便利かなとは思います。興味があれば参考にしてみてください。