概要
Docker ComposeでMilvusスタックを実行する際に発生したGHCRプライベートイメージの認証エラーとRocksDB WALボリューム競合の解決方法をまとめる。
まとめ
1. GHCRプライベートイメージの認証
docker-compose.ymlでGitHub Container Registry(GHCR)のプライベートイメージを使用する場合、認証なしでpullしようとすると以下のエラーが発生する。
Error response from daemon: unknown: failed to resolve reference
"ghcr.io/wookbros/milvus/milvus-ko:v2.5.27-r1-arm64":
unexpected status from HEAD request to
https://ghcr.io/v2/wookbros/milvus/milvus-ko/manifests/v2.5.27-r1-arm64:
403 Forbidden
GHCRのプライベートイメージをpullするには、GitHub Personal Access Token(PAT)で認証する必要がある。以下のコマンドでログインする。
echo YOUR_PAT_TOKEN | docker login ghcr.io -u GITHUB_USERNAME --password-stdin
PATを作成する際、read:packages権限を必ず含める必要がある。GitHubのSettings > Developer settings > Personal access tokensから作成できる。
ログインに成功するとLogin Succeededが表示され、以降はdocker-compose up -dコマンドで正常にイメージをpullできる。
2. Milvusボリュームの初期化
GHCR認証問題を解決した後、docker-compose up -dを実行するとmilvus-standaloneコンテナがクラッシュする場合がある。ログを確認すると以下のエラーが表示される。
FATAL: fail to init rocksmq
error="Corruption: While creating a new Db,
wal_dir contains existing log file: 000011.log"
以前使用していたボリュームデータに残っているRocksDB WALファイルが新しいMilvusインスタンスと競合して発生する問題である。ボリュームを削除してコンテナを再起動すれば解決する。
docker-compose down
rm -rf ./volumes/milvus
docker-compose up -d
ボリュームを削除すると既存データがすべて失われるため、開発環境でのみこの方法を使用するべきである。本番環境ではデータをバックアップしてから進める必要がある。
コメントする