Skip to main content

限制 codespace 的基础映像

可以指定哪些基础映像可用于在组织内创建的新 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 容器是通过 Docker 映像创建的。 映像实际上是 Docker 容器的模板,它确定了 codespace 提供的结果环境的许多方面。

可以在存储库的开发容器配置中指定映像,从而选择要用于 codespace 的映像。 例如,可以使用 devcontainer.json 文件中的 image 属性来执行此操作。

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

有关详细信息,请参阅开发容器网站上的开发容器规范

如果未在存储库的开发容器配置中指定映像,则使用默认映像。 默认映像包含许多常用语言和常用工具的运行时版本。 有关详细信息,请参阅“开发容器简介”。

作为组织所有者,你可以添加一个策略来限制哪些映像可用于组织内创建的 codespace。

如果开发容器配置中指定的映像与其中一个允许的映像不匹配,则当有人尝试为存储库创建 codespace 时,会显示以下消息:

无法创建 codespace:根据组织所有者设置的组织策略,不允许使用基础映像“DETAILS FROM DEV CONTAINER CONFIGURATION”。

注释

  • 基础映像策略仅在创建 codespace 时适用。 目前,在重新生成容器时不适用。 将来的版本中可能会发生变化。 有关详细信息,请参阅“了解 codespace 生命周期”。
  • 基本映像策略不适用于默认映像,也不适用于在开发容器配置中引入错误导致无法重新生成容器的情况下用于恢复 codespace 的映像。

设置组织范围和存储库特定的策略

创建策略时,您可以选择是将其应用于组织中的所有存储库,还是仅应用于指定的存储库。 如果设置了组织范围的策略,则为各个存储库设置的任何策略都必须在组织级别设置的限制范围内。 添加策略会增加映像的限制,而不是减少。

例如,你可以创建一个组织范围的策略,将基础映像限制为十个指定映像中的任意一个。 然后,可以为存储库 A 设置一个策略,将映像限制为仅在组织级别指定的两个映像的子集上。 为存储库 A 指定其他映像将不起作用,因为这些映像未在组织级别策略中指定。 如果添加组织范围的策略,则应将其设置为组织中任何存储库可用的最大映像选择范围。 然后,您可以添加特定于存储库的策略以进一步限制选择。

注意:Codespace 策略仅适用于组织支付的 codespace。**** 如果某人为组织中的存储库创建 codespace,并自行付费,则 codespace 不受这些策略的约束。 有关详细信息,请参阅“选择谁拥有组织中的 codespace 并为其付费”。

添加策略以定义允许的映像

  1. 在 GitHub.com 的右上角,选择个人资料照片,然后单击 “你的组织”****。

    @octocat 的个人资料图片下的下拉菜单的屏幕截图。 “你的组织”以深橙色标出。

  2. 在组织旁边,单击“设置”。

  3. 在边栏的“代码、规划和自动化”部分中,选择“ Codespaces”,然后单击“策略” 。

  4. 在“codespace 策略”页上,单击“创建策略”。****

  5. 输入新策略的名称。

  6. 单击“添加约束”并选择“基础映像” 。

  7. 单击 编辑约束。

  8. 在“允许的值”字段中,输入想要允许的映像的完整 URL。

    在“允许的值”字段中输入的 URL“mcr.microsoft.com/vscode/devcontainers/java”的屏幕截图。

    注意:必须指定与开发容器配置中指定的值完全匹配的映像 URL。

  9. 单击“”添加值。

  10. 如果需要,请重复前两个步骤以添加更多映像 URL。

  11. 单击对话框外部将其关闭。

  12. 默认情况下,策略设置为应用于所有存储库,如果你希望它仅应用于组织中的某些存储库,请单击“所有存储库”,然后在下拉菜单中单击“所选存储库”。

    存储库选择下拉列表的屏幕截图,其中显示了“所有存储库”和“所选存储库”选项。

    注意:如果要向已包含“每个用户的最大 codespace 数量”约束的策略添加约束,则无法将策略应用于所选存储库。 这是因为“每个用户的最大 codespace 数量”约束始终应用于组织中的所有存储库。

    选中“所选存储库”后:

    1. 单击

      标有“所选存储库”的按钮左侧的“设置”图标的屏幕截图(齿轮符号)。

    2. 选择要应用此策略的存储库。

    3. 在存储库列表的底部,单击“选择存储库”。

      存储库列表的屏幕截图,每个存储库都有一个复选框。 已选择三个存储库。

  13. 如果要向策略添加另一个约束,请单击“添加约束”并选择另一个约束。 有关其他约束的信息,请参阅:

  14. 向策略添加完约束后,单击“保存”。

当有人尝试创建可向组织收费的新 codespace 时,将应用该策略。 基本映像约束不会影响现有 codespace(无论是活动的还是停止的)。

编辑策略

可以编辑现有策略。 例如,你可能想要在策略中添加或移除约束。

  1. 显示“Codespace policies(代码空间策略)”页。 有关详细信息,请参阅“添加策略以定义允许的映像”。
  2. 单击要编辑的策略的名称。
  3. 在“基础映像”约束旁,单击“”。
  4. 添加或移除映像 URL。
  5. 单击“保存”。

删除策略

  1. 显示“Codespace policies(代码空间策略)”页。 有关详细信息,请参阅“添加策略以定义允许的映像”。

  2. 在要删除的策略的右侧,单击“”。

    策略的屏幕截图,其中“删除”按钮(垃圾桶图标)以深橙色边框突出显示。