リポジトリの作成
リポジトリを最初に作成する。イメージを入れる箱と考えればOK。このあたり一回作ってしまえばあまり変更しないので個人的にはGUIでもCUIでも作っていい感じがする。
$ aws ecr create-repository --repository-name testrepository
{
"repository": {
"repositoryArn": "arn:aws:ecr:ap-northeast-1:11111111:repository/testrepository",
"registryId": "1111111111",
"repositoryName": "testrepository",
"repositoryUri": "111111111111.dkr.ecr.ap-northeast-1.amazonaws.com/testrepository",
"createdAt": 15234343233.0
}
}
docker imageの作成
このあたりはDocker imageを作る手順と同じでDockerFileを最初に作る。
DockerFileが存在する配下で
テスト的にDockerfileを作成する
FROM centos:6.7
RUN yum -y update
RUN yum install -y https://centos6.iuscommunity.org/ius-release.rpm
RUN yum install -y python36*
RUN curl -O https://bootstrap.pypa.io/get-pip.py
RUN python3.6 get-pip.py --user
RUN pip3.6 install awscli
RUN rpm --rebuilddb; yum install -y yum-plugin-ovl
RUN yum install -y git2u
RUN rpm -Uvh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
RUN yum install -y --enablerepo=remi --enablerepo=remi-php72 php
$ docker build -t testrepository .
・・・・・
・・・・・
・・・・・
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
testrepository latest e15196bab888 1 days ago 1.12GB
Aws configure
aws configureでMACに自分のAccessKeyとSecretKeyを登録する
$aws configure
AWS Access Key ID []:XXXXXXXXXXXXX
AWS Secret Access Key []:YYYYYYYYYYYYY
Default region name []:ap-northeast-1
Default output format [None]:
ECRのログイン情報を取得する
$ aws ecr get-login --no-include-email --region ap-northeast-1
docker login -u AWS -p eyJwYXlsb2FkIjoiL3AAAAAAAAAAAAAAAAAAAAAAAhTjVyY1J6RHBRNGEycExFeFBrODJtVDFJaGU0V25KYUd1N2NQcEp3QjgrcXlmUWlXUkZCZnAwRExPcGthTTUvdERmc3JJdGZBZ1phbWJWK1BpQ0xZeHpqNzIxcUZ6Z3dJM21sQkNVSTNTMFJybmF4bG1lOEZITFF4Zi84dDBLYmdjUnR2Uk9abmlBNG1QcWRDQmNYNHdBBBBBBBBBBBBBBBBBBmSTFIUk0xaHRmWlVTTUcvTCt0UlhxSWROdDFxUjg0dFJKOVQzZHM2aSt1QVNsS0tpOXFOaTRmT2RDZkRLcUVqd1・・・・・・・・・・・・
上記の長いレスポンスの文字列をコピーして実行する。
リポジトリにイメージをPushする際にこんなエラーが出る。
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
Login Succeeded
これはコマンドを
$ aws ecr get-login --region ap-northeast-1
でやると発生するので、
$ aws ecr get-login --no-include-email --region ap-northeast-1
としてあげて、その結果を入力すればコマンドはとおるようになる。
一応確認
初めてのリポジトリの場合
{
"repositories": []
}
リポジトリが既に存在する場合
$ aws ecr describe-repositories
{
"repositories": [
{
"registryId": "11111111111111111",
"repositoryName": "testrepository",
"repositoryArn": "arn:aws:ecr:ap-northeast-1:11111111111111111:repository/testrepository",
"createdAt": 1531436328.0,
"repositoryUri": "144184236868.dkr.ecr.ap-northeast-1.amazonaws.com/testrepository"
},
{
"registryId": "2222222222222",
"repositoryName": "ecr-handson-httpd",
"repositoryArn": "arn:aws:ecr:ap-northeast-1:144184236868:repository/ecr-handson-httpd",
"createdAt": 1531367193.0,
"repositoryUri": "144184236868.dkr.ecr.ap-northeast-1.amazonaws.com/ecr-handson-httpd"
},
{
"registryId": "3333333333",
"repositoryName": "relo/centos",
"repositoryArn": "arn:aws:ecr:ap-northeast-1:3333333333333:repository/relo/centos",
"createdAt": 1531387702.0,
"repositoryUri": "333333333333.dkr.ecr.ap-northeast-1.amazonaws.com/relo/centos"
}
]
}
イメージをPush
あとはこれをECRにpushする。
$ docker push 144184236868.dkr.ecr.ap-northeast-1.amazonaws.com/testrepository:latest