概要
codespace を作成すると、リモート仮想マシンに開発コンテナーが自動的に作成されます。 開発コンテナーは Docker イメージから作成されます。 イメージは実質的に Docker コンテナーのテンプレートであり、codespace によって提供される結果の環境の多くの側面を決定します。 詳しくは、「GitHub Codespaces のクイックスタート」をご覧ください。
リポジトリの開発コンテナー構成で指定することで、codespace に使用するイメージを選ぶことができます。 これを行うには、たとえば、image ファイルの devcontainer.json プロパティを使います。
"image": "mcr.microsoft.com/devcontainers/javascript-node:18",
"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 を誰が所有し、支払うかの選択」をご覧ください。
許可されるイメージを定義するポリシーの追加
-
GitHub の右上隅にあるプロフィール画像をクリックしてから、[ Your organizations] をクリックします。
-
組織をクリックして選択します。
-
Organization 名の下で、[ Settings] をクリックします。 [設定] タブが表示されない場合は、 [] ドロップダウン メニューを選び、 [設定] をクリックします。
![組織のプロファイルのタブのスクリーンショット。 [設定] タブが濃いオレンジ色の枠線で囲まれています。](/assets/cb-49309/images/help/discussions/org-settings-global-nav-update.png)
-
サイドバーの [Code, planning, and automation] セクションで、[ Codespaces] を選択してから、[Policies] をクリックします。
-
[Codespaces ポリシー] ページで、 [ポリシーの作成] をクリックします。
-
新しいポリシーの名前を入力します。
-
**[制約の追加]** をクリックし、 **[基本イメージ]** を選びます。 -
制約を編集するには、 をクリックします。
-
[使用できる値] フィールドに、許可する Docker イメージのイメージ参照を入力します。
![[許可された値] フィールドにイメージ参照 "mcr.microsoft.com/vscode/devcontainers/java" が入力されたスクリーンショット。](/assets/cb-32455/images/help/codespaces/image-allowed-values.png)
`*` ワイルドカードをイメージ参照の最後の文字として使用して、ワイルドカードの左側にある同じ参照で始まるすべてのイメージと一致させることができます。 たとえば、「 `mcr.microsoft.com/devcontainers/*` 」のように入力します。 -
をクリックし、値を追加します。
-
必要に応じて、先ほどの 2 つの手順を繰り返して、さらにイメージ参照を追加します。
複数のイメージ参照を追加する場合、リポジトリの開発コンテナー構成で指定されたイメージ参照が、リポジトリに適用されるポリシー内のどの参照にも一致しない場合、そのリポジトリのコードスペースを作成することはできません。
-
ダイアログ ボックスの外側をクリックして閉じます。
-
既定では、ポリシーはすべてのリポジトリに適用されるように設定されます。組織内の一部のリポジトリにのみ適用したい場合は、 [すべてのリポジトリ] をクリックしてから、ドロップダウン メニューの [選択したリポジトリ] をクリックします。
![[すべてのリポジトリ] と [選択したリポジトリ] のオプションが表示されている、リポジトリ選択ドロップダウンのスクリーンショット。](/assets/cb-48372/images/help/codespaces/selected-repositories.png)
メモ
"Maximum codespaces per user" 制約が既に含まれているポリシーに制約を追加する場合、選んだリポジトリにポリシーを適用することはできません。 これは、"ユーザーあたりの最大 codespace 数" 制約は、組織内のすべてのリポジトリに常に適用されるためです。
[選択したリポジトリ] を選んだら、次のようにします。
-
をクリックします。
![[選択したリポジトリ] というラベルのボタンの左側にある設定アイコン (歯車シンボル) のスクリーンショット。](/assets/cb-7694/images/help/codespaces/policy-edit.png)
-
このポリシーを適用するリポジトリを選択します。
-
リポジトリ リストの下部にある [リポジトリの選択] をクリックします。

-
-
ポリシーに別の制約を追加する場合は、 [制約の追加] をクリックして、別の制約を選びます。 その他の制約については、次を参照してください。
-
ポリシーへの制約の追加が終わったら、 [保存] をクリックします。
ポリシーは、Organization に請求できる新しい codespace を誰かが作成しようとしたときに適用されます。 基本イメージ制約は、アクティブまたは停止中の既存の codespace には影響しません。
ポリシーを編集する
既存のポリシーを編集できます。 たとえば、ポリシーの制約を追加または削除できます。
- [Codespaces ポリシー] ページを表示します。 詳しくは、「許可されるイメージを定義するポリシーを追加する」を参照してください。
- 編集するポリシーの名前をクリックします。
- 「ベースイメージ」制約の横にある鉛筆アイコン [] をクリックします。
- イメージ参照を追加または削除します。
-
**[保存]** をクリックします。
ポリシーを削除する
-
[Codespaces ポリシー] ページを表示します。 詳しくは、「許可されるイメージを定義するポリシーを追加する」を参照してください。
-
削除するポリシーの右側にある をクリックします。
