Dockerで問題が発生しました。シナリオは次のようです。Codebuild+ Packer + dockerを使用して、デプロイで使用されるAMIを作成します。このステップでは、アーティファクトから画像をプルし、1 Gbを超えるレイヤーの1つをプルすることを除いて、すべて正常に通過します。何度か再試行した後、次のエラーで失敗します。ダウンロードに失敗し、再試行します:不明なblob、次に「予期しないEOF」。このような問題に直面したことがありますか?コメントやアドバイスは大歓迎です。
不明な理由でレジストリV2で破損または破損した非常に小さなレイヤーでこの問題が発生しました。 docker pull
レイヤーを再試行した後、「予期しないEOF」で失敗しました(この場合は「1f8fd317c5a4」として識別されます)。
ソースからイメージを再構築し、docker Push
は「レイヤーはすでに存在しています」と述べ、問題を修正していません。
curl
を使用して問題のレイヤーを削除することができました。
curl -H 'Accept: application/vnd.docker.distribution.manifest.v2+json' -sk "https://registry.local/v2/image-name/manifests/1033-develop-7e414712"
(「registry.local」をレジストリに、「image-name」をイメージ名に、「1033-develop-7e414712」をイメージタグまたは「最新」に置き換えてください。)
JSON出力からレイヤー1f8fd317c5a4の完全なsha256ダイジェストを取得し、次のコマンドで使用します。
curl -k -X DELETE "https://registry.local/v2/image-name/blobs/sha256:1f8fd317c5a406a75130dacddc02bd09a9abf44e068e2730dd8f5238666bb390"
これで、docker Push registry.local/image-name:1033-develop-7e414712
削除したレイヤーをアップロードすると、すべてが機能します。