AWS
ECR

Amazon ECRの操作

リポジトリの作成

リポジトリを最初に作成する。イメージを入れる箱と考えれば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

としてあげて、その結果を入力すればコマンドはとおるようになる。

一応確認

$ 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