ECR で Docker イメージのプッシュが no such host で失敗するときの対処方法
困っていた内容
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