Skip to main content

Restricción de la imagen base para codespaces

Puede especificar qué imágenes base se pueden usar para crear el contenedor de desarrollador para los nuevos codespaces creados en la organización.

¿Quién puede utilizar esta característica?

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

Las organizaciones que tengan planes de GitHub Team y GitHub Enterprise pueden pagar por la utilizacion de miembros y colaboradores de GitHub Codespaces. Así, las organizaciones podrán acceder a configuraciones y directivas para administrar codespaces pagados por la organización. Para obtener más información, vea «Selección de quién posee y paga los codespaces de una organización» y «Planes de GitHub».

Información general

Al crear un codespace, se crea automáticamente un contenedor de desarrollo en una máquina virtual remota. El contenedor de desarrollador se crea a partir de una imagen de Docker. La imagen es básicamente una plantilla para los contenedores Docker y determina muchos aspectos del entorno resultante proporcionado por el codespace. Para obtener más información, vea «Resumen de GitHub Codespaces».

Puedes elegir qué imagen quieres usar para tus codespaces especificándola en la configuración del contenedor de desarrollo de un repositorio. Puedes hacerlo, por ejemplo, mediante la propiedad image del archivo devcontainer.json.

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

Para obtener más información, consulta la especificación de contenedores de desarrollo en el sitio web de contenedores de desarrollo.

Como alternativa, puedes especificar la imagen base en un Dockerfile. Para obtener más información, vea «Introducción a los contenedores dev».

Si no especifica una imagen en la configuración del contenedor de desarrollador de un repositorio, se usa la imagen predeterminada de contenedor de desarrollador. La imagen predeterminada contiene una serie de versiones en tiempo de ejecución de lenguajes populares y herramientas de uso frecuente. Para obtener más información, vea «Introducción a los contenedores dev».

Como propietario de la organización, puede agregar una directiva para restringir qué imágenes de contenedor de desarrollador se pueden usar para los codespaces creados en la organización.

Si intentas crear un codespace mediante una instancia de devcontainer.json que especifica una imagen que no está permitida por la directiva, se muestra el siguiente mensaje en GitHub.com:

No se puede crear codespace porque no se permite la imagen especificada en la configuración del contenedor de desarrollo. Es posible que tengas que seleccionar otra rama, modificar la configuración del contenedor o ajustar la configuración de directiva de la organización.

Con la CLI, el mensaje de error es el siguiente:

error al crear codespace: HTTP 400: la imagen base "IMAGE-REFERENCE" no está permitida en función de una directiva de organización establecida por el administrador de la organización.

Si la imagen de un codespace se especifica en un Dockerfile y no coincide con la directiva, se crea un codespace en modo de recuperación, mediante el contenedor de recuperación predeterminado en lugar de la imagen especificada. Se incluye un mensaje para este efecto al final del registro de creación. Para más información sobre el registro de creación, consulta "Registros de GitHub Codespaces".

Notas:

  • La imagen base del contenedor de desarrollador no debe confundirse con la imagen de host. La imagen de host es la imagen que se usa para generar la máquina virtual en la que se ejecuta el contenedor de desarrollador. Para obtener más información, vea «Elección de la imagen de host estable o beta».
  • La directiva de imagen base se aplica cuando se crea un codespace y cuando se realiza una recompilación completa del contenedor. Para obtener más información, vea «Ciclo de vida de un codespace».
  • La directiva de imagen base no se aplica a la imagen predeterminada ni a la imagen que se usa para recuperar un codespace si se introduce un error en la configuración de un contenedor de desarrollo que impide que se recompile el contenedor.

Configurar políticas específicas para los repositorios y a lo largo de la organización

Cuando creas una política, eliges si esta aplica a todos los repositorios de tu organización o solo a algunos específicos. Si configuras una política a lo largo de la organización, entonces cualquier política que configures para los repositorios individuales debe de caer dentro de las restricciones que se configuraron a nivel organizacional. La adición de directivas hace que la elección de imágenes sea más restrictiva, no menos.

Por ejemplo, podrías crear una directiva para toda la organización que restrinja la imagen base a una de las 10 imágenes especificadas. Después, puedes establecer una directiva para el repositorio A que restrinja la imagen a un subconjunto compuesto por tan solo dos de las imágenes especificadas a nivel de la organización. Especificar imágenes adicionales para el repositorio A no tendrá ningún efecto, porque estas imágenes no están especificadas en la directiva para toda la organización. Si agregas una directiva a nivel organizacional, deberás establecerla en la mayor selección de imágenes que estará disponible para cualquier repositorio de tu organización. Entonces podrás agregar las políticas específicas para los repositorios y así restringir aún más la elección.

Nota: Las directivas de Codespaces solo se aplican a los codespaces que paga tu organización. Si alguien crea un codespace para un repositorio de tu organización por su cuenta, dicho codespace no estará sujeto a estas políticas. Para obtener más información, vea «Selección de quién posee y paga los codespaces de una organización».

Adición de una directiva para definir las imágenes permitidas

  1. En la esquina superior derecha de GitHub.com, selecciona la foto de perfil y luego haz clic en Sus organizaciones.

    Captura de pantalla del menú desplegable en la imagen de perfil de @octocat. "Sus organizaciones" se destaca en naranja oscuro.

  2. Junto a la organización, haga clic en Settings.

  3. En la sección "Código, planificación y automatización" de la barra lateral, selecciona Codespaces y, después, haz clic en Directivas.

  4. En la página "Directivas de codespaces", haga clic en Crear directiva.

  5. Ingresa un nombre para tu política nueva.

  6. Haz clic en Agregar restricción y elige Imágenes base.

  7. Haz clic en para editar la restricción.

  8. En el campo "Valores permitidos", escribe la referencia de imagen de la imagen de Docker que quieras permitir.

    Captura de pantalla de la referencia de imagen "mcr.microsoft.com/vscode/devcontainers/java" especificada en el campo "Valores permitidos".

    Puedes usar el carácter comodín * como último carácter de la referencia de imagen para que coincida con todas las imágenes que comienzan con la misma referencia a la izquierda del carácter comodín. Por ejemplo, mcr.microsoft.com/devcontainers/*.

  9. Haz clic en para agregar el valor.

  10. Si es necesario, repite los dos pasos anteriores para agregar más referencias de imagen.

    Al agregar varias referencias de imagen, si una referencia de imagen especificada en la configuración del contenedor de desarrollo de un repositorio no coincide con ninguna de las referencias de una directiva que se aplica al repositorio, no podrás crear codespace para ese repositorio.

  11. Haz clic fuera del cuadro de diálogo para cerrarlo.

  12. De forma predeterminada, la directiva se establece para aplicarse a todos los repositorios; si deseas que se aplique solo a algunos de los repositorios de la organización, haz clic en Todos los repositorios y, a continuación, haz clic en Repositorios seleccionados en el menú desplegable.

    Captura de pantalla de la lista desplegable de selección del repositorio, en la que se muestran las opciones "Todos los repositorios" y "Repositorios seleccionados".

    Nota: Si vas a agregar una restricción a una directiva existente que ya contiene la restricción "Máximo de codespaces por usuario", no podrás aplicar la directiva a los repositorios seleccionados. Esto se debe a que la restricción "Máximo de codespaces por usuario" siempre se aplica a todos los repositorios de la organización.

    Con la opción Repositorios seleccionados seleccionada:

    1. Haga clic en .

      Captura de pantalla del icono de configuración (un símbolo de engranaje) a la izquierda de un botón con la etiqueta "Repositorios seleccionados".

    2. Selecciona los repositorios a los cuales quieres que aplique esta política.

    3. En la parte inferior de la lista de repositorios, haga clic en Select repositories.

      Captura de pantalla de una lista de repositorios, cada uno con una casilla. Hay tres repositorios seleccionados.

  13. Si quieres agregar otra restricción a la directiva, haz clic en Agregar restricción y elige otra restricción. Para obtener información sobre otras restricciones, consulta:

  14. Cuando hayas terminado de agregar restricciones a la directiva, haz clic en Guardar.

La directiva se aplica cuando alguien intenta crear un nuevo codespace que se puede facturar a tu organización. La restricción de la imagen base no afecta a los codespaces existentes, ya estén activos o detenidos.

Editar una política

Puedes editar una directiva existente. Por ejemplo, puede que te interese agregar restricciones a una directiva o quitarlas.

  1. Mostrar la página de "Políticas del Codespaces". Para obtener más información, consulta "Adición de una directiva para definir las imágenes permitidas".
  2. Haz clic en el nombre de la política que quieres editar.
  3. Junto a la restricción "Imágenes base", haz clic en .
  4. Agrega o quita referencias de imagen.
  5. Haga clic en Save(Guardar).

Borrar una política

  1. Mostrar la página de "Políticas del Codespaces". Para obtener más información, consulta "Adición de una directiva para definir las imágenes permitidas".

  2. Haz clic en a la derecha de la directiva que quieres eliminar.

    Captura de pantalla de una directiva con el botón Eliminar (icono de papelera) resaltado con un contorno naranja oscuro.