awsのecrを運用するポイント

Dockerを使ってコンテナイメージを活用したサーバーの運用をしたいと考えたときに、awsのecrを運用するのは魅力的な候補です。ecrとはEC2 Container Registryの略で、awsのec2を利用している場合にコンテナを使う際によく用いられています。
ecrの特徴や運用のポイントを紹介するので、コンテナを使うために導入すべきかどうかを判断できるようになりましょう。
そもそもawsのecrとは何か
awsのecrとは一体どのようなサービスなのかがまずわからない人もいるでしょう。ecrはawsによって提供されているec2でDockerコンテナを使用するためのサービスで、Dockerコンテナレジストリとして使用できます。
Dockerはコンテナイメージを使用する形式を取っている仮想化ソフトウェアとして広く用いられていて、ecrはDockerのコンテナイメージを保存する先のレジストリなのです。コンテナイメージを作成しておいてデプロイすればどのサーバーや領域にも同じ環境を再現できることから、自社サーバーと複数のクラウドサーバーを利用するなどといったケースでは特によく利用されています。
awsのみを用いる場合にも複数のアカウントを用意して運用することがよくあります。その一つ一つのアカウントで同じ環境を構築するのは手間がかかりますが、Dockerを使ってコンテナイメージをデプロイしてしまえばすぐに運用できる体制が整います。
クラウドサービスではDockerを利用できる環境を用意している場合がほとんどで、awsの場合にはecrを使うのが基本になっていると考えれば良いでしょう。awsではecrに保存したコンテナイメージをECSと呼ばれるEC2 Container Serviceにデプロイすることで利用することが可能です。
Dockerそのものと同じような操作が可能なユーザーインターフェースも用意されているので使い勝手が良いと言えるでしょう。
ecrはどんな魅力があるのか
コンテナレポジトリを作成して運用することによってecrを使わなくてもDockerコンテナレジストリを確保することができます。しかし、awsではecrを使うことによって簡便にDockerコンテナイメージをデプロイして運用できるようになります。
完全マネージド型と呼ばれる手間がかかりにくい仕様になっているのがecrの特徴で、コンテナレジストリを動かすための監視負担が大幅に軽減されるのです。通常、コンテナレポジトリを作成した場合には状況に応じてスケーリングをしたり、インフラストラクチャーの運用をしたりしなければならず、運用するためのエンジニアの負担が大きくなります。
しかし、ecrの場合には特に管理が必要な部分はなく、デプロイをするときにだけツールを使ってコンテナイメージを適用する必要があるだけになっているのです。また、ecrはスケーラビリティーが高く、コンテナのデプロイにおいてトラブルが起こりにくいとされています。
自動的な暗号化によってコンテナイメージも保護されていることに加え、イメージへのアクセス制御についても設定できるため、セキュリティー面についても大きな問題はありません。
料金について気をつけよう

awsのecrを運用するためには料金を支払わなければなりません。自分でコンテナレポジトリを作成して運用する場合には料金は一切かからないので、コストパフォーマンスが良いのかどうかはよく考える必要があるでしょう。
また、Dockerが提供している公式のコンテナレジストリも利用することができ、料金体系が大きく異なっています。この利用についても合わせて検討するのが大切です。そのために役に立つ料金体系について簡単に説明するので参考にして下さい。
まず、awsのecrの料金はストレージとデータ転送の容量によって従量制で決まる仕組みになっています。ストレージ領域については月額で1GBあたり0.1ドル、データ転送はアウトバウンドについて1GBあたり0.14ドルです。
ただし、データ転送は最初の1GBまでは料金がかかりません。awsでは容量を大きくすると単価が下がる仕組みになっているため、数十TB以上使うような場合にはもっと安くなります。ただ、一般的にはテラバイト単位での使用をする現場は少ないのでこの単価が適用される場合が多いでしょう。
一方、Dockerが公式に提供しているDocker Hubではレポジトリ数に応じて月額料金が設定されています。最も少ない5個の場合には7ドル、10個では12ドル、20個では22ドルといった形で数を増やすほど単価が下がっていく仕組みになっています。
このように料金体系が大きく異なるので実際に運用してみないとどちらを利用した方がお得かを想像するのは難しいでしょう。基本的にリポジトリ数が少ないならDocker Hubの方が安上がりになりますが、20個以上必要な場合に利用するデータ転送量が少ないとawsのecrの方が安くなる可能性があるので試算してみるのが大切です。
監視をする必要があるのか
スケーリングなどが必要のない仕様になっているのはawsのecrが優れている点です。どんなサーバーの運用をするときにも監視の必要が発生するのは確かですが、ecrに限って言えば特別な監視をする必要がありません。
むしろ、Dockerコンテナイメージを利用するときに監視の負担を軽減する目的でも活用することができるサービスになっています。また、監視のためのコンテナイメージを作成しておくことで多数のアカウントに同じ監視システムを導入することも可能です。
監視を容易にするためのツールとして活用することもできるので、awsのサービスを使うならecrの利用も検討してみるのが賢明でしょう。
ecrを使うなら必要なこと
awsでコンテナイメージを利用するときにはecrだけでは便利に使えるとは言えません。重要なのはDockerコンテナイメージをecrに保存した上で、デプロイして運用することです。あくまでecrはコンテナレジストリなのでデプロイが必要なときにはアクションを起こさなければなりません。
このようなイメージの保存からデプロイに至るまでのプロセスを簡便に行うためのツールとしてDocker CLI、Amazon ECSが提供されています。CLIを使ってコンテナイメージを保存し、ECSを使ってデプロイするというフローになることは念頭に置いておきましょう。
Dockerコンテナを使うならecrを運用しよう
Dockerコンテナは複数のサーバーや複数のawsアカウントを使用するときに同じ環境を作るのに有用なサービスです。awsではecrのサービスを利用することでコンテナイメージを保存でき、ECRを使ってデプロイできる仕組みになっています。
自分で作成したコンテナレポジトリやDockerのオフィシャルサービスと比較してより良いものを使って運用しましょう。