以下の状態でローカルに存在する IMAGE ID 000000000000
を、
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
---|---|---|---|---|
example1 | 0.0.1 | 000000000000 | 1weeks ago | 100MB |
ECR (例として example1.dkr.ecr.ap-northeast-1.amazonaws.com/integration
) へタグ latest
を付与して push しようとするとこうなるはず。
aws ecr get-login-password --region ap-northeast-1 --profile ${プロファイル名} | docker login --username AWS --password-stdin example1.dkr.ecr.ap-northeast-1.amazonaws.com docker tag 000000000000 example1.dkr.ecr.ap-northeast-1.amazonaws.com/integration:latest docker push example1.dkr.ecr.ap-northeast-1.amazonaws.com/integration:latest
こうすると、手元の docker image ls
はこうなる。
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
---|---|---|---|---|
example1 | 0.0.1 | 000000000000 | 1weeks ago | 100MB |
example1.dkr.ecr.ap-northeast-1.amazonaws.com/integration | latest | 000000000000 | 1weeks ago | 100MB |
これはこれで、新しいタグが生えただけで同一のコンテナを指しているので「容量が 100MB 増えた」とかではないので気にしなくて良い。
んだけど、長いことやってると docker image ls
したときに「ウワァァ!」となりがちなので、参照しなくなったやつは消しておきたい。
上記で作成した example1.dkr.ecr.ap-northeast-1.amazonaws.com/integration
を削除するのはこう。
docker rmi example1.dkr.ecr.ap-northeast-1.amazonaws.com/integration:latest Untagged: example1.dkr.ecr.ap-northeast-1.amazonaws.com/integration:latest Untagged: example1.dkr.ecr.ap-northeast-1.amazonaws.com/integration:@sha256:なんか長いハッシュ
増えていた latest
タグだけを削除できた。
REPOSITORY | TAG | IMAGE ID | CREATED | SIZE |
---|---|---|---|---|
example1 | 0.0.1 | 000000000000 | 1weeks ago | 100MB |
latest
消すことある〜? みたいな気持ちになるかもしれないけど、これ hotfix リリースしたくて、 x.y.z-hotfix
などとかのタグ付けたりしてると、リストがもりもり増えていくので、わからなくなる前にメンテしていきたい。
そういう運用をするな、という話はある。
ECR の認証について
ちなみに上記にサッと書いてしまったけど、 例として利用している ECR はリモートへ push などする場合、事前に docker なり操作するクライアント側へログイン認証を入れてやる必要がある。
これ。
aws ecr get-login-password --region ap-northeast-1 --profile ${プロファイル名} | docker login --username AWS --password-stdin example1.dkr.ecr.ap-northeast-1.amazonaws.com
ちなみにこちら、認証してから 12 時間で期限が切れるらしいので、寝起きに作業して「うーん?」となりがち。 気をつけたい。