Skip to main content

codespace の基本イメージを制限する

Organization 内で作成された新しい codespace の開発コンテナーを作成するために使用できる基本イメージを指定できます。

この機能を使用できるユーザーについて

To manage image constraints for an organization's codespaces, you must be an owner of the organization.

GitHub Team プランや GitHub Enterprise プランを利用している組織は、メンバーやコラボレーターによる GitHub Codespaces の使用料を支払うことができます。 これらの組織は、設定やポリシーにアクセスして、組織によって支払われる codespace を管理できます。 詳細については、「組織内の codespace を誰が所有し、支払うかの選択」および「GitHubのプラン」を参照してください。

概要

codespace を作成すると、リモート仮想マシンに開発コンテナーが自動的に作成されます。 開発コンテナーは Docker イメージから作成されます。 イメージは実質的に Docker コンテナーのテンプレートであり、codespace によって提供される結果の環境の多くの側面を決定します。 詳しくは、「GitHub Codespaces のクイックスタート」をご覧ください。

リポジトリの開発コンテナー構成で指定することで、codespace に使用するイメージを選ぶことができます。 これを行うには、たとえば、image ファイルの devcontainer.json プロパティを使います。

JSON
"image": "mcr.microsoft.com/devcontainers/javascript-node:18",

詳しくは、開発コンテナーの Web サイトの開発コンテナーの仕様をご覧ください。

または、Dockerfile で基本イメージを指定することもできます。 詳しくは、「開発コンテナーの概要」をご覧ください。

リポジトリの開発コンテナー構成でイメージを指定しない場合は、既定の開発コンテナー イメージが使用されます。 既定のイメージには、一般的な言語と一般的に使用されるツールのランタイム バージョンが多数含まれています。 詳しくは、「開発コンテナーの概要」をご覧ください。

Organization の所有者は、Organization 内で作成された codespace に使用できる開発コンテナー イメージを制限するポリシーを追加できます。

ポリシーで許可されていないイメージを指定する devcontainer.json を使用して codespace を作成しようとする場合、GitHub で次のメッセージが表示されます。

開発コンテナー構成で指定されたイメージが許可されていないため、コードスペースを作成できません。 別のブランチを選択したり、コンテナーの構成を変更したり、組織のポリシー設定を調整したりする必要がある場合があります。

CLI を使用すると、次のエラー メッセージが表示されます。

コードスペースの作成中にエラーが発生しました: HTTP 400: 基本イメージ 'IMAGE-REFERENCE' は、組織の管理者によって設定された組織ポリシーに基づいて許可されていません。

コードスペースのイメージが Dockerfile で指定され、ポリシーと一致しない場合、コードスペースは、指定されたイメージではなく既定の回復コンテナーを使用して復旧モードで作成されます。 この効果を示すメッセージは、作成ログの最後に含まれます。 作成ログについて詳しくは、「GitHub Codespaces のログ」をご覧ください。

メモ

  • 開発コンテナーの基本イメージとホスト イメージを混同しないでください。 ホスト イメージは、開発コンテナーが実行される仮想マシンのビルドに使用されるイメージです。 詳しくは、「安定版またはベータ版のホスト イメージの選択」をご覧ください。
  • 基本イメージ ポリシーは、コードスペースが作成されたとき、および完全なコンテナー再構築を実行するときに適用されます。 詳しくは、「codespace ライフサイクルについて」をご覧ください。
  • 基本イメージ ポリシーは、既定のイメージ、またはコンテナーのリビルドを妨げる開発コンテナー構成にエラーが発生した場合に、codespace の復旧に使用されるイメージには適用されません。

オーガニゼーション単位でのポリシーとリポジトリ固有のポリシーの設定

ポリシーを作成するときに、ポリシーを Organaization 内のすべてのリポジトリに適用するか、指定されたリポジトリにのみ適用するかを選択します。 Organaization 全体のポリシーを設定する場合は、個々のリポジトリに対して設定するポリシーはすべて、Organaization レベルに設定した制限に収まるようにする必要があります。 ポリシーを追加すると、イメージの選択肢は、広くはならず、より一層制限されます。

たとえば、基本イメージを指定した 10 個のイメージのいずれかに制限する Organization 全体のポリシーを作成できます。 その後、リポジトリ A のポリシーを設定して、Organization レベルで指定された 2 つのイメージのサブセットのみにイメージを制限できます。 リポジトリ A に追加のイメージを指定しても、これらのイメージは Organization レベルのポリシーで指定されていないため、効果はありません。 Organization 全体のポリシーを追加する場合は、Organization 内のどのリポジトリにも使用できるように、イメージの種類を最多の選択肢に設定する必要があります。 その後、リポジトリ固有のポリシーを追加することで、選択肢をさらに制限できます。

メモ

Codespaces ポリシーは、organization が支払う Codespaces にのみ適用されます。 誰かが自分の費用で組織内のリポジトリの codespace を作成した場合、その codespace はこれらのポリシーに制約されません。 詳しくは、「組織内の codespace を誰が所有し、支払うかの選択」をご覧ください。

許可されるイメージを定義するポリシーの追加

  1. GitHub の右上隅にあるプロフィール画像をクリックしてから、[ Your organizations] をクリックします。

  2. 組織をクリックして選択します。

  3. Organization 名の下で、[ Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。

    組織のプロファイルのタブのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で囲まれています。

  4. サイドバーの [Code, planning, and automation] セクションで、[ Codespaces] を選択してから、[Policies] をクリックします。

  5. [Codespaces ポリシー] ページで、 [ポリシーの作成] をクリックします。

  6. 新しいポリシーの名前を入力します。

  7.        **[制約の追加]** をクリックし、 **[基本イメージ]** を選びます。
    
  8. 制約を編集するには、 をクリックします。

  9. [使用できる値] フィールドに、許可する Docker イメージのイメージ参照を入力します。

    [許可された値] フィールドにイメージ参照 "mcr.microsoft.com/vscode/devcontainers/java" が入力されたスクリーンショット。

           `*` ワイルドカードをイメージ参照の最後の文字として使用して、ワイルドカードの左側にある同じ参照で始まるすべてのイメージと一致させることができます。 たとえば、「 `mcr.microsoft.com/devcontainers/*` 」のように入力します。
    
  10. をクリックし、値を追加します。

  11. 必要に応じて、先ほどの 2 つの手順を繰り返して、さらにイメージ参照を追加します。

    複数のイメージ参照を追加する場合、リポジトリの開発コンテナー構成で指定されたイメージ参照が、リポジトリに適用されるポリシー内のどの参照にも一致しない場合、そのリポジトリのコードスペースを作成することはできません。

  12. ダイアログ ボックスの外側をクリックして閉じます。

  13. 既定では、ポリシーはすべてのリポジトリに適用されるように設定されます。組織内の一部のリポジトリにのみ適用したい場合は、 [すべてのリポジトリ] をクリックしてから、ドロップダウン メニューの [選択したリポジトリ] をクリックします。

    [すべてのリポジトリ] と [選択したリポジトリ] のオプションが表示されている、リポジトリ選択ドロップダウンのスクリーンショット。

    メモ

    "Maximum codespaces per user" 制約が既に含まれているポリシーに制約を追加する場合、選んだリポジトリにポリシーを適用することはできません。 これは、"ユーザーあたりの最大 codespace 数" 制約は、組織内のすべてのリポジトリに常に適用されるためです。

    [選択したリポジトリ] を選んだら、次のようにします。

    1. をクリックします。

      [選択したリポジトリ] というラベルのボタンの左側にある設定アイコン (歯車シンボル) のスクリーンショット。

    2. このポリシーを適用するリポジトリを選択します。

    3. リポジトリ リストの下部にある [リポジトリの選択] をクリックします。

      それぞれにチェックボックスが付いているリポジトリの一覧のスクリーンショット。 3 つのリポジトリが選ばれています。

  14. ポリシーに別の制約を追加する場合は、 [制約の追加] をクリックして、別の制約を選びます。 その他の制約については、次を参照してください。

  15. ポリシーへの制約の追加が終わったら、 [保存] をクリックします。

ポリシーは、Organization に請求できる新しい codespace を誰かが作成しようとしたときに適用されます。 基本イメージ制約は、アクティブまたは停止中の既存の codespace には影響しません。

ポリシーを編集する

既存のポリシーを編集できます。 たとえば、ポリシーの制約を追加または削除できます。

  1. [Codespaces ポリシー] ページを表示します。 詳しくは、「許可されるイメージを定義するポリシーを追加する」を参照してください。
  2. 編集するポリシーの名前をクリックします。
  3. 「ベースイメージ」制約の横にある鉛筆アイコン [] をクリックします。
  4. イメージ参照を追加または削除します。
  5.        **[保存]** をクリックします。
    

ポリシーを削除する

  1. [Codespaces ポリシー] ページを表示します。 詳しくは、「許可されるイメージを定義するポリシーを追加する」を参照してください。

  2. 削除するポリシーの右側にある をクリックします。

    削除ボタン (ごみ箱アイコン) が濃いオレンジ色の枠線で強調されているポリシーのスクリーンショット。