CV・NLPハマりどころメモ

画像認識と自然言語処理を研究する上でうまくいかなかったことと,その対策をまとめる自分用のメモが中心.

AWS-ECRでプライベートなDockerイメージを管理する[AWS-ECR]

会社で研究をしていると社外へは決して出してはいけないコンテナを作ってしまうことがある.

世の中には,作成したコンテナをイメージ化して共有するDocker Hubなるサービスがある.しかし,Docker Hubは基本的にオープンなサービスなので,社秘のコンテナをアップするなどしたら,情報インシデント事故に発展してしまい,最悪クビになってしまう.

それでもコンテナをクラウドで管理したい... そんな方におすすめなのがAWS-ECRである.ECRとはElastic Container Registry (ECR)の略で,AWSが提供するDockerコンテナレジストリなのである.ECRは,プライベートなので社秘のコンテナを扱うのには非常に都合後良いのだ.

本記事では,AWS ECRにDockerイメージをPushする方法と,ローカル環境にDockerイメージをPullする方法を紹介する.

AWS ECRでリポジトリを作成

まずはAWSマネジメントコンソールでリポジトリを立てるため,以下に移動.

AWSマネジメントコンソール > ECR > リポジトリ

f:id:Vastee:20190607141307p:plain

上の画面の右上,「リポジトリの作成」ボタンを押し,任意の名前を入力し,リポジトリを作成.

AWS CLIでECRにログイン

Dockerイメージがあるローカル環境で以下のコマンドを実行する.--regionの引数は設定によって変化する可能性があるので,リポジトリ作成後に「プッシュボタンの表示」ボタンを押して表示されるコマンドに沿って入力することをオススメする.

aws ecr get-login --no-include-email --region ap-northeast-1

コマンドを実行すると暗号のような出力が返ってくる.出力の正体は,ログインコマンドである.

上の出力をコピペして実行し,AWS-ECRにログインする.

Dockerイメージにタグを付ける

ログイン後,AWS-ECRにpushするための呪文のようなコマンドを打つ.

docker tag ${YOUR_IMAGE}:latest ************.dkr.ecr.us-east-1.amazonaws.com/${YOUR_IMAGE}:latest

AWS-ECRにDockerイメージをpushする

いよいよAWS-ECRにDockerイメージをpush

docker push ************.dkr.ecr.ap-northeast-1.amazonaws.com/${YOUR_IMAGE}:latest

以上でAWS-ECRへのpushが完了.

こんな簡単にできるとは思わなかったので,びっくりした.しかも,Dockerイメージをそのままpushできるのでバージョン管理も容易にできそうだ.AWS-ECRが無かったらdocker saveでtarファイルにしてファイルサーバーに保管するという前時代的な管理を選択せざるおえないので,あってよかった.

AWS-ECRに存在するイメージをpullする

TBA

注意事項

Dockerイメージのレイヤーサイズが10Gを越えるとエラーがでる.詳しくは下記ページを参照.

Amazon ECR サービス制限 - Amazon ECR