Docker: Layer not found
Dockerイメージのレイヤーが見つからない場合のエラー原因と解決策
概要
DockerイメージのビルドやPull時にレイヤーが見つからない場合に発生するエラーです。
エラーメッセージ
``` Error: layer not found pull access denied for myimage, repository does not exist or may require ‘docker login’ ```
原因
- キャッシュの破損: ローカルのレイヤーキャッシュが不整合
- レジストリからの削除: リモートでイメージが削除された
- 認証の問題: プライベートレジストリへの認証失敗
- ネットワークの問題: レジストリへの接続失敗
解決策
1. キャッシュをクリア
```bash
ビルドキャッシュをクリア
docker builder prune
未使用のイメージを削除
docker image prune -a
すべてをクリア(注意して使用)
docker system prune -a ```
2. キャッシュなしでビルド
```bash docker build –no-cache -t myimage . ```
3. レジストリに認証
```bash
Docker Hub
docker login
プライベートレジストリ
docker login registry.example.com
AWS ECR
aws ecr get-login-password –region ap-northeast-1 |
docker login –username AWS –password-stdin 123456789.dkr.ecr.ap-northeast-1.amazonaws.com
```
4. イメージを再Pull
```bash
最新を強制取得
docker pull myimage:latest –pull always
ベースイメージを更新
docker pull node:18-alpine docker build -t myimage . ```
5. マルチステージビルドの確認
```dockerfile
存在するベースイメージを使用
FROM node:18-alpine AS builder
…
FROM node:18-alpine AS runner
builder ステージからコピー
COPY –from=builder /app/dist ./dist ```
よくある間違い
- :latest タグへの過度な依存
- プライベートレジストリの認証切れ
- 古いベースイメージの参照
関連エラー
関連エラー
Docker の他のエラー
この記事は役に立ちましたか?