GitLabレジストリのトラブルシューティング
GitLabコンテナレジストリに関するほとんどの問題を問題を解決するには、管理者権限でGitLabにサインインする必要があります。
GitLabコンテナレジストリの管理ドキュメントで、追加のトラブルシューティング情報を確認できます。
OCIコンテナイメージをGitLabコンテナレジストリに移行する
コンテナイメージをGitLabレジストリに移行することはサポートされていませんが、エピックでこの動作の変更が提案されています。
サードパーティ製のツールを使用してコンテナイメージを移行できます。たとえば、skopeoを使用すると、さまざまなストレージメカニズム間でコンテナイメージをコピーできます。skopeoを使用すると、コンテナレジストリ、コンテナストレージバックエンド、ローカルディレクトリ、ローカルOCIレイアウトディレクトリからGitLabコンテナレジストリにコピーできます。
Docker接続エラー
グループ名、プロジェクト名、ブランチ名のいずれかに特殊文字が含まれている場合、Docker接続エラーが発生することがあります。特殊文字には以下が含まれます:
- 先頭のアンダースコア。
- 末尾のハイフンまたはダッシュ。
このエラーを解決するには、グループパス 、プロジェクトパス、またはブランチ名を変更します。
Docker Engine 17.11バージョン以前を使用している場合は、404 Not FoundまたはUnknown Manifestというエラーメッセージが表示されることがあります。現在のバージョンのDocker Engineでは、v2 APIを使用します。
GitLabコンテナレジストリ内のイメージは、Docker v2 APIを使用する必要があります。バージョン1のイメージをバージョン2にアップデートする方法については、Dockerドキュメントを参照してください。
マニフェストリストをプッシュするときのBlob unknown to registryエラー
GitLabコンテナレジストリにDockerマニフェストリストをプッシュすると、manifest blob unknown: blob unknown to registryというエラーが表示されることがあります。このエラーは、複数のイメージが、同じリポジトリではなく、複数のリポジトリに分散していることが原因である可能性があります。
たとえば、それぞれがアーキテクチャを表す2つのイメージがあるとします:
amd64プラットフォーム。arm64v8プラットフォーム。
これらのイメージでマルチアーキテクチャイメージをビルドするには、マルチアーキテクチャイメージと同じリポジトリにプッシュする必要があります。
Blob unknown to registryエラーを解決するには、個々のイメージのタグ名にアーキテクチャを含めます。たとえば、mygroup/myapp:1.0.0-amd64とmygroup/myapp:1.0.0-arm64v8を使用します。次に、マニフェストリストにmygroup/myapp:1.0.0でタグ付けします。
プロジェクトパスを変更できない、またはプロジェクトを転送できない
プロジェクトパスを変更するか、プロジェクトを新しいネームスペースに転送しようとすると、次のいずれかのエラーが表示されることがあります:
- タグ付けがコンテナレジストリに存在するため、プロジェクトを転送できません。
- 少なくとも1つのプロジェクトのコンテナレジストリにタグ付けがあるため、ネームスペースを移動できません。
このエラーは、プロジェクトのコンテナレジストリにイメージがある場合に発生します。パスを変更するか、プロジェクトを転送する前に、これらのイメージを削除または移動する必要があります。
次の手順では、これらのサンプルプロジェクト名を使用します:
- 現在のプロジェクトの場合:
gitlab.example.com/org/build/sample_project/cr:v2.9.1。 - 新しいプロジェクトの場合:
gitlab.example.com/new_org/build/new_sample_project/cr:v2.9.1。
コンピューターにDockerイメージをダウンロードします:
docker login gitlab.example.com docker pull gitlab.example.com/org/build/sample_project/cr:v2.9.1認証するには、パーソナルアクセストークンまたはデプロイトークンを使用してユーザーアカウントを認証します。
新しいプロジェクト名に合わせてイメージの名前を変更します:
docker tag gitlab.example.com/org/build/sample_project/cr:v2.9.1 gitlab.example.com/new_org/build/new_sample_project/cr:v2.9.1UIまたはAPIを使用して、古いプロジェクトのイメージを削除します。イメージがキューに入れられて削除されるまで、時間がかかる場合があります。
パスを変更するか、プロジェクトを転送します:
- 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
- 設定 > 一般を選択します。
- 高度な設定セクションを展開します。
- パスを変更テキストボックスで、パスを編集します。
- パスを変更を選択します。
イメージを復元します:
docker push gitlab.example.com/new_org/build/new_sample_project/cr:v2.9.1
詳細については、イシューを参照してください。
Failed to pull imageメッセージ
CI/CDジョブが、制限されたCI/CDジョブトークンスコープを持つプロジェクトからコンテナイメージをプルできない場合、`Failed to pull image’というエラーメッセージが表示されることがあります。
エラー: OCI manifest found, but accept header does not support OCI manifests
イメージをプルできない場合、レジストリログに次のようなエラーが発生する可能性があります:
manifest unknown: OCI manifest found, but accept header does not support OCI manifestsこのエラーは、クライアントが正しいAccept: application/vnd.oci.image.manifest.v1+jsonヘッダーを送信しない場合に発生します。Dockerクライアントのバージョンが最新であることを確認してください。サードパーティ製のツールを使用している場合は、OCIマニフェストを処理できることを確認してください。