この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。
困っていた内容
ECR に Docker イメージをプッシュしたところno such host
というエラーが表示されます。調べてみるとプロキシ関係のエラーのようですが、EC2 を使っていて特にプロキシが必要な環境ではありません。
ECR に Docker イメージをプッシュするにはどうしたら良いでしょうか?
$ docker push 123456789012.dkr.ecr.ap-northeast-1.amazonaws.co/hello-world:latest
The push refers to repository [123456789012.dkr.ecr.ap-northeast-1.amazonaws.co/hello-world]
Get "https://123456789012.dkr.ecr.ap-northeast-1.amazonaws.co/v2/": dial tcp: lookup 123456789012.dkr.ecr.ap-northeast-1.amazonaws.co on 10.0.0.2:53: no such host
どう対応すればいいの?
レジストリのホスト名(例:123456789012.dkr.ecr.ap-northeast-1.amazonaws.com
)に間違いがないか確認してください。
ECR に Docker イメージをプッシュする際は次のイメージ名を付与する必要があります。
Docker イメージをプッシュする - Amazon ECR
【アカウントID】.dkr.ecr.【リージョン】.amazonaws.com/【リポジトリ名】:【タグ】
# 例
123456789012.dkr.ecr.ap-northeast-1.amazonaws.com/hello-world:latest
イメージ名の/
で区切られた前半部分は、Docker イメージを保存するレジストリのホスト名(サーバー名)となり、誤ったホスト名を指定すると「指定したサーバーが存在しない(no such host
)」というエラーが発生します。
そのため、レジストリのホスト名部分に誤りがないか確認してください。
$ docker push 123456789012.dkr.ecr.ap-northeast-1.amazonaws.co/hello-world:latest
# mが不足 ^
なお、nslookup
コマンドでホストの存在確認ができます。
# ホストが存在しない場合
$ nslookup 123456789012.dkr.ecr.ap-northeast-1.amazonaws.co
Server: 1.1.1.1
Address: 1.1.1.1#53
** server can't find 123456789012.dkr.ecr.ap-northeast-1.amazonaws.co: NXDOMAIN
# ホストが存在する場合
$ nslookup 123456789012.dkr.ecr.ap-northeast-1.amazonaws.com
Server: 1.1.1.1
Address: 1.1.1.1#53
Non-authoritative answer:
123456789012.dkr.ecr.ap-northeast-1.amazonaws.com canonical name = nlb3-a01fc3168d6b4c7e.elb.ap-northeast-1.amazonaws.com.
Name: nlb3-a01fc3168d6b4c7e.elb.ap-northeast-1.amazonaws.com
Address: 52.192.36.247