正式なドキュメントは英語版であり、この日本語訳はAI支援翻訳により作成された参考用のものです。日本語訳の一部の内容は人間によるレビューがまだ行われていないため、翻訳のタイミングにより英語版との間に差異が生じることがあります。最新かつ正確な情報については、英語版をご参照ください。

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-amd64mygroup/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
  1. コンピューターにDockerイメージをダウンロードします:

    docker login gitlab.example.com
    docker pull gitlab.example.com/org/build/sample_project/cr:v2.9.1

    認証するには、パーソナルアクセストークンまたはデプロイトークンを使用してユーザーアカウントを認証します。

  2. 新しいプロジェクト名に合わせてイメージの名前を変更します:

    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.1
  3. UIまたはAPIを使用して、古いプロジェクトのイメージを削除します。イメージがキューに入れられて削除されるまで、時間がかかる場合があります。

  4. パスを変更するか、プロジェクトを転送します:

    1. 左側のサイドバーで、検索または移動先を選択して、プロジェクトを見つけます。
    2. 設定 > 一般を選択します。
    3. 高度な設定セクションを展開します。
    4. パスを変更テキストボックスで、パスを編集します。
    5. パスを変更を選択します。
  5. イメージを復元します:

    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マニフェストを処理できることを確認してください。