web-dev-qa-db-ja.com

Dockerプル「予期しないEOF」

Dockerで問題が発生しました。シナリオは次のようです。Codebuild+ Packer + dockerを使用して、デプロイで使用されるAMIを作成します。このステップでは、アーティファクトから画像をプルし、1 Gbを超えるレイヤーの1つをプルすることを除いて、すべて正常に通過します。何度か再試行した後、次のエラーで失敗します。ダウンロードに失敗し、再試行します:不明なblob、次に「予期しないEOF」。このような問題に直面したことがありますか?コメントやアドバイスは大歓迎です。

3
Natalia Pakhol

不明な理由でレジストリ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削除したレイヤーをアップロードすると、すべてが機能します。

1
retrospectacus