# Ограничение базового образа для пространств кода

Можно указать, какие базовые образы можно использовать для создания контейнера разработки для новых пространств кода, созданных в организации.

## Обзор

При создании пространства кода контейнер разработки автоматически создается на удаленной виртуальной машине. Этот контейнер разработки создается из образа Docker. Образ фактически является шаблоном для контейнеров Docker и определяет множество аспектов результирующей среды, предоставляемой пространством кода. Дополнительные сведения см. в разделе [Быстрый старт для GitHub Codespaces](/ru/codespaces/quickstart#introduction).

Можно выбрать образ, который вы хотите использовать для пространств кода, указав его в конфигурации контейнера разработки для репозитория. Это можно сделать, например, с помощью `image` свойства в `devcontainer.json` файле.

```json copy
"image": "mcr.microsoft.com/devcontainers/javascript-node:18",
```

Дополнительные сведения см. в спецификации [](https://containers.dev/implementors/json_reference/#image-specific) контейнеров разработки на веб-сайте "Контейнеры разработки".

Кроме того, можно указать базовый образ в Dockerfile. Дополнительные сведения см. в разделе [Основные сведения о контейнерах разработки](/ru/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#dockerfile).

Если образ не указан в конфигурации контейнера разработки для репозитория, используется образ контейнера разработки по умолчанию. Изображение по умолчанию содержит ряд версий среды выполнения для популярных языков и часто используемых средств. Дополнительные сведения см. в разделе [Основные сведения о контейнерах разработки](/ru/codespaces/setting-up-your-project-for-codespaces/adding-a-dev-container-configuration/introduction-to-dev-containers#using-the-default-dev-container-configuration).

В качестве владелец организации можно добавить политику, чтобы ограничить, какие образы контейнеров разработки можно использовать для пространств кода, созданных в вашей организации.

Если вы пытаетесь создать пространство кода с помощью `devcontainer.json` изображения, которое не разрешено политикой, следующее сообщение отображается в GitHub:

> Не удается создать пространство кода, так как изображение, указанное в конфигурации контейнера разработки, запрещено. Может потребоваться выбрать другую ветвь, изменить конфигурацию контейнера или настроить параметр политики организации.

С помощью интерфейса командной строки сообщение об ошибке:

> Ошибка создания пространства кода: HTTP 400: базовый образ IMAGE-REFERENCE не разрешен на основе политики организации, заданной администратором организации.

Если изображение пространства кода указано в Dockerfile и не соответствует политике, пространство кода создается в режиме восстановления, используя контейнер восстановления по умолчанию, а не указанный образ. Сообщение об этом эффекте будет включено в конце журнала создания. Дополнительные сведения о журнале создания см. в разделе [Логи кодовых пространств GitHub](/ru/codespaces/troubleshooting/github-codespaces-logs#creation-logs).

> \[!NOTE]
>
> * Базовый образ контейнера разработки не следует путать с образом узла. Образ узла — это образ, используемый для создания виртуальной машины, на которой выполняется контейнер разработки. Дополнительные сведения см. в разделе [Выбор стабильного или бета-образа узла](/ru/codespaces/setting-your-user-preferences/choosing-the-stable-or-beta-host-image).
> * Политика базового образа применяется при создании пространства кода и при выполнении полного перестроения контейнеров. Дополнительные сведения см. в разделе [Общие сведения о жизненном цикле пространства кода](/ru/codespaces/about-codespaces/understanding-the-codespace-lifecycle#rebuilding-a-codespace).
> * Политика базового образа не применяется к изображению по умолчанию или изображению, используемому для восстановления пространства кода, если в конфигурацию контейнера разработки возникает ошибка, которая предотвращает перестроение контейнера.

### Настройка политик для всей организации и конкретного репозитория

При создании политики вы выбираете, применяется ли она ко всем репозиториям в организации или только к указанным. Если вы устанавливаете политику для всей организации, все политики, установленные для отдельных репозиториев, должны находиться в пределах набора ограничений на уровне организации. Добавление политик делает выбор изображения более, не менее строгим.

Например, можно создать политику всей организации, которая ограничивает базовый образ любым из десяти указанных образов. Затем можно задать политику для репозитория A, которая ограничивает изображение подмножеством всего двух образов, указанных на уровне организации. Указание дополнительных образов для репозитория A не повлияет, так как эти образы не указаны в политике уровня организации. Если вы добавляете политику на уровне организации, ее следует задать для наибольшего выбора образов, которые будут доступны для любого репозитория в вашей организации. Затем вы можете добавить политики для конкретного репозитория, чтобы дополнительно ограничить выбор.

> \[!NOTE]
> Политики пространства кода применяются только к пространствам кода, за которые платит ваша организация. Если кто-то создает пространство кода для репозитория в вашей организации за счет собственных расходов, пространство кода не будет привязано к этим политикам. Дополнительные сведения см. в разделе [Выбор владельцев и оплаты пространств кода в вашей организации](/ru/codespaces/managing-codespaces-for-your-organization/choosing-who-owns-and-pays-for-codespaces-in-your-organization).

## Добавление политики для определения разрешенных образов

1. В правом верхнем углу GitHub, щелкните рисунок профиля, а затем выберите **октикона "организация" aria-hidden="true" aria-label="organization" %} Ваши организации**.

2. Выберите организацию, кликнув по ней.

3. Под именем организации щелкните **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="gear" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg> Settings**. Если вкладка "Параметры" не отображается, выберите **раскрывающееся меню <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-kebab-horizontal" aria-label="More" role="img"><path d="M8 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3ZM1.5 9a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Zm13 0a1.5 1.5 0 1 0 0-3 1.5 1.5 0 0 0 0 3Z"></path></svg>** и нажмите кнопку **"Параметры**".

   ![Снимок экрана: вкладки в профиле организации. Вкладка "Параметры" выделена темно-оранжевым цветом.](/assets/images/help/discussions/org-settings-global-nav-update.png)

4. На боковой панели в разделе "Код, планирование и автоматизация",выберите пункт **<svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-codespaces" aria-label="codespaces" role="img"><path d="M0 11.25c0-.966.784-1.75 1.75-1.75h12.5c.966 0 1.75.784 1.75 1.75v3A1.75 1.75 0 0 1 14.25 16H1.75A1.75 1.75 0 0 1 0 14.25Zm2-9.5C2 .784 2.784 0 3.75 0h8.5C13.216 0 14 .784 14 1.75v5a1.75 1.75 0 0 1-1.75 1.75h-8.5A1.75 1.75 0 0 1 2 6.75Zm1.75-.25a.25.25 0 0 0-.25.25v5c0 .138.112.25.25.25h8.5a.25.25 0 0 0 .25-.25v-5a.25.25 0 0 0-.25-.25Zm-2 9.5a.25.25 0 0 0-.25.25v3c0 .138.112.25.25.25h12.5a.25.25 0 0 0 .25-.25v-3a.25.25 0 0 0-.25-.25Z"></path><path d="M7 12.75a.75.75 0 0 1 .75-.75h4.5a.75.75 0 0 1 0 1.5h-4.5a.75.75 0 0 1-.75-.75Zm-4 0a.75.75 0 0 1 .75-.75h.5a.75.75 0 0 1 0 1.5h-.5a.75.75 0 0 1-.75-.75Z"></path></svg>Codespaces**\*\*"Политики".\*\*

5. На странице "Политики Codespaces" нажмите кнопку **"Создать политику**".

6. Введите имя для новой политики.

7. Нажмите кнопку "Добавить ограничение" и выберите ****"Базовые образы**".**

8. Щелкните <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-pencil" aria-label="pencil icon" role="img"><path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path></svg> для изменения ограничения.

9. В поле "Допустимые значения" введите ссылку на изображение Docker, которое требуется разрешить.

   ![Снимок экрана: ссылка на изображение "mcr.microsoft.com/devcontainers/java", введенная в поле "Допустимые значения".](/assets/images/help/codespaces/image-allowed-values.png)

   Подстановочный знак можно использовать `*` в качестве последнего символа ссылки на изображение, чтобы соответствовать всем изображениям, начинающимся с той же ссылки слева от подстановочного знака. Например: `mcr.microsoft.com/devcontainers/*`.

10. Нажмите кнопку <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-plus" aria-label="plus icon" role="img"><path d="M7.75 2a.75.75 0 0 1 .75.75V7h4.25a.75.75 0 0 1 0 1.5H8.5v4.25a.75.75 0 0 1-1.5 0V8.5H2.75a.75.75 0 0 1 0-1.5H7V2.75A.75.75 0 0 1 7.75 2Z"></path></svg> , чтобы добавить значение.

11. При необходимости повторите предыдущие два шага, чтобы добавить дополнительные ссылки на изображения.

    При добавлении нескольких ссылок на изображения, если ссылка на образ, указанная в конфигурации контейнера разработки репозитория, не соответствует ни одной из ссылок в политике, которая применяется к репозиторию, вы не сможете создавать пространства кода для этого репозитория.

12. Щелкните вне диалогового окна, чтобы закрыть его.

13. По умолчанию политика применяется ко всем репозиториям, если вы хотите применить ее только к некоторым репозиториям в организации, щелкните **"Все репозитории** " и выберите пункт **"Выбранные репозитории** " в раскрывающемся меню.

    ![Снимок экрана: раскрывающийся список выбора репозитория с параметрами "Все репозитории" и "Выбранные репозитории".](/assets/images/help/codespaces/selected-repositories.png)

    > \[!NOTE]
    > Если вы добавляете ограничение в существующую политику, которая уже содержит ограничение "Максимальное пространство кода на пользователя", вы не сможете применить политику к выбранным репозиториям. Это связано с тем, что ограничение "Максимальное пространство кода на пользователя" всегда применяется ко всем репозиториям в организации.

    Выбранные **репозитории** :

    1. Щелкните <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-gear" aria-label="The settings icon" role="img"><path d="M8 0a8.2 8.2 0 0 1 .701.031C9.444.095 9.99.645 10.16 1.29l.288 1.107c.018.066.079.158.212.224.231.114.454.243.668.386.123.082.233.09.299.071l1.103-.303c.644-.176 1.392.021 1.82.63.27.385.506.792.704 1.218.315.675.111 1.422-.364 1.891l-.814.806c-.049.048-.098.147-.088.294.016.257.016.515 0 .772-.01.147.038.246.088.294l.814.806c.475.469.679 1.216.364 1.891a7.977 7.977 0 0 1-.704 1.217c-.428.61-1.176.807-1.82.63l-1.102-.302c-.067-.019-.177-.011-.3.071a5.909 5.909 0 0 1-.668.386c-.133.066-.194.158-.211.224l-.29 1.106c-.168.646-.715 1.196-1.458 1.26a8.006 8.006 0 0 1-1.402 0c-.743-.064-1.289-.614-1.458-1.26l-.289-1.106c-.018-.066-.079-.158-.212-.224a5.738 5.738 0 0 1-.668-.386c-.123-.082-.233-.09-.299-.071l-1.103.303c-.644.176-1.392-.021-1.82-.63a8.12 8.12 0 0 1-.704-1.218c-.315-.675-.111-1.422.363-1.891l.815-.806c.05-.048.098-.147.088-.294a6.214 6.214 0 0 1 0-.772c.01-.147-.038-.246-.088-.294l-.815-.806C.635 6.045.431 5.298.746 4.623a7.92 7.92 0 0 1 .704-1.217c.428-.61 1.176-.807 1.82-.63l1.102.302c.067.019.177.011.3-.071.214-.143.437-.272.668-.386.133-.066.194-.158.211-.224l.29-1.106C6.009.645 6.556.095 7.299.03 7.53.01 7.764 0 8 0Zm-.571 1.525c-.036.003-.108.036-.137.146l-.289 1.105c-.147.561-.549.967-.998 1.189-.173.086-.34.183-.5.29-.417.278-.97.423-1.529.27l-1.103-.303c-.109-.03-.175.016-.195.045-.22.312-.412.644-.573.99-.014.031-.021.11.059.19l.815.806c.411.406.562.957.53 1.456a4.709 4.709 0 0 0 0 .582c.032.499-.119 1.05-.53 1.456l-.815.806c-.081.08-.073.159-.059.19.162.346.353.677.573.989.02.03.085.076.195.046l1.102-.303c.56-.153 1.113-.008 1.53.27.161.107.328.204.501.29.447.222.85.629.997 1.189l.289 1.105c.029.109.101.143.137.146a6.6 6.6 0 0 0 1.142 0c.036-.003.108-.036.137-.146l.289-1.105c.147-.561.549-.967.998-1.189.173-.086.34-.183.5-.29.417-.278.97-.423 1.529-.27l1.103.303c.109.029.175-.016.195-.045.22-.313.411-.644.573-.99.014-.031.021-.11-.059-.19l-.815-.806c-.411-.406-.562-.957-.53-1.456a4.709 4.709 0 0 0 0-.582c-.032-.499.119-1.05.53-1.456l.815-.806c.081-.08.073-.159.059-.19a6.464 6.464 0 0 0-.573-.989c-.02-.03-.085-.076-.195-.046l-1.102.303c-.56.153-1.113.008-1.53-.27a4.44 4.44 0 0 0-.501-.29c-.447-.222-.85-.629-.997-1.189l-.289-1.105c-.029-.11-.101-.143-.137-.146a6.6 6.6 0 0 0-1.142 0ZM11 8a3 3 0 1 1-6 0 3 3 0 0 1 6 0ZM9.5 8a1.5 1.5 0 1 0-3.001.001A1.5 1.5 0 0 0 9.5 8Z"></path></svg>.

       ![Снимок экрана: значок параметров (символ шестеренки) слева от кнопки с надписью "Выбранные репозитории".](/assets/images/help/codespaces/policy-edit.png)

    2. Выберите репозитории, к которым будет применяться эта политика.

    3. В нижней части списка репозиториев щелкните **Выбрать репозитории**.

       ![Снимок экрана: список репозиториев с флажком. Выбраны три репозитория.](/assets/images/help/codespaces/policy-select-repos.png)

14. Если вы хотите добавить другое ограничение в политику, щелкните **Добавить ограничение** и сделайте свой выбор. Дополнительные сведения о других ограничениях см. в следующем разделе:
    * [Ограничение доступа к типам компьютеров](/ru/codespaces/managing-codespaces-for-your-organization/restricting-access-to-machine-types)
    * [Ограничение количества кодовых пространств, оплачиваемых организацией, которые пользователь может создать](/ru/codespaces/managing-codespaces-for-your-organization/restricting-the-number-of-organization-billed-codespaces-a-user-can-create)
    * [Ограничение видимости переадресованных портов](/ru/codespaces/managing-codespaces-for-your-organization/restricting-the-visibility-of-forwarded-ports)
    * [Ограничение тайм-аута простоя](/ru/codespaces/managing-codespaces-for-your-organization/restricting-the-idle-timeout-period)
    * [Ограничение срока хранения для codespace](/ru/codespaces/managing-codespaces-for-your-organization/restricting-the-retention-period-for-codespaces)

15. Завершив добавление ограничений в политику, щелкните **Сохранить**.

Политика применяется, когда любой пользователь пытается создать новое пространство кода, которое можно выставлять в вашей организации. Ограничение базового образа не влияет на существующие пространства кода, активные или остановлены.

## Изменение политики

Можно изменить существующую политику. Например, вы можете захотеть добавить или удалить ограничения политики.

1. Отображение страницы "Политики Codespaces". Дополнительные сведения см. в разделе ["Добавление политики" для определения разрешенных образов](#adding-a-policy-to-define-the-allowed-images).
2. Щелкните имя политики, которую нужно изменить.
3. Рядом с ограничением "Базовые изображения" щелкните <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-pencil" aria-label="pencil icon" role="img"><path d="M11.013 1.427a1.75 1.75 0 0 1 2.474 0l1.086 1.086a1.75 1.75 0 0 1 0 2.474l-8.61 8.61c-.21.21-.47.364-.756.445l-3.251.93a.75.75 0 0 1-.927-.928l.929-3.25c.081-.286.235-.547.445-.758l8.61-8.61Zm.176 4.823L9.75 4.81l-6.286 6.287a.253.253 0 0 0-.064.108l-.558 1.953 1.953-.558a.253.253 0 0 0 .108-.064Zm1.238-3.763a.25.25 0 0 0-.354 0L10.811 3.75l1.439 1.44 1.263-1.263a.25.25 0 0 0 0-.354Z"></path></svg>.
4. Добавление или удаление ссылок на изображения.
5. Нажмите кнопку **Сохранить**.

## Удаление политики

1. Отображение страницы "Политики Codespaces". Дополнительные сведения см. в разделе ["Добавление политики" для определения разрешенных образов](#adding-a-policy-to-define-the-allowed-images).
2. Щелкните <svg version="1.1" width="16" height="16" viewBox="0 0 16 16" class="octicon octicon-trash" aria-label="Delete YOUR-POLICY-NAME" role="img"><path d="M11 1.75V3h2.25a.75.75 0 0 1 0 1.5H2.75a.75.75 0 0 1 0-1.5H5V1.75C5 .784 5.784 0 6.75 0h2.5C10.216 0 11 .784 11 1.75ZM4.496 6.675l.66 6.6a.25.25 0 0 0 .249.225h5.19a.25.25 0 0 0 .249-.225l.66-6.6a.75.75 0 0 1 1.492.149l-.66 6.6A1.748 1.748 0 0 1 10.595 15h-5.19a1.75 1.75 0 0 1-1.741-1.575l-.66-6.6a.75.75 0 1 1 1.492-.15ZM6.5 1.75V3h3V1.75a.25.25 0 0 0-.25-.25h-2.5a.25.25 0 0 0-.25.25Z"></path></svg> справа от политики, которую вы хотите удалить.

   ![Снимок экрана: политика с кнопкой удаления (значок корзины) выделена темно-оранжевым контуром.](/assets/images/help/codespaces/policy-delete.png)