Las imágenes base preconfiguradas que proporciona Cloud Workstations solo contienen un entorno mínimo con un IDE, una terminal básica de Linux, herramientas de lenguaje y un servidor sshd
. Para acelerar la configuración del entorno de casos prácticos de desarrollo específicos, puedes crear imágenes de contenedor personalizadas que amplíen estas imágenes base para preinstalar herramientas y dependencias, así como para ejecutar secuencias de comandos de automatización.
En el caso de las imágenes de contenedor personalizadas, le recomendamos que configure una canalización para volver a compilar automáticamente estas imágenes cuando se actualice la imagen base de Cloud Workstations, además de ejecutar una herramienta de análisis de contenedores, como Artifact Analysis, para inspeccionar las dependencias adicionales que haya añadido. Eres responsable de mantener y actualizar los paquetes y las dependencias personalizados que se hayan añadido a las imágenes personalizadas.
Antes de empezar
Necesitas una máquina con herramientas para crear imágenes de contenedor, como Docker, y para enviar imágenes a Artifact Registry mediante la CLI de Google Cloud. Puedes usar Cloud Workstations o el editor de Cloud Shell para llevar a cabo estos pasos, ya que tienen estas herramientas preinstaladas.
Selecciona la imagen base que quieras usar de nuestra lista de imágenes base admitidas, como
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
.También puedes usar tu propia imagen de contenedor o imágenes de contenedor externas siguiendo las instrucciones para usar tu propia imagen de contenedor.
Crea una carpeta, como
CUSTOM_IMAGE_FOLDER
, y un Dockerfile dentro de ella que extienda la imagen base seleccionada, tal como se muestra en los ejemplos que aparecen a continuación.
Estructura de la imagen base de Cloud Workstations
Las imágenes base de Cloud Workstations comparten la siguiente estructura definida:
- El archivo de punto de entrada de la imagen base es
/google/scripts/entrypoint.sh
. Al iniciarse, las imágenes base ejecutan archivos en
/etc/workstation-startup.d/*
en orden lexicográfico para inicializar el entorno de la estación de trabajo.Los archivos y su comportamiento son los siguientes:
000_configure-docker.sh
: configura y ejecuta Docker en la estación de trabajo.010_add-user.sh
: crea el usuario predeterminado en Cloud Workstations.Como el disco persistente se adjunta dinámicamente al contenedor, los usuarios deben añadirse al iniciar la estación de trabajo, no en el archivo Dockerfile.
020_start-sshd.sh
: inicia el serviciosshd
en el contenedor.030_customize-environment.sh
: ejecuta/home/user/.workstation/customize_environment
comouser
.110_start-$IDE.sh
: inicia el IDE de la imagen.
Cloud Workstations almacena las imágenes de Docker en el directorio principal en
/home/.docker_data
para que las imágenes se conserven entre sesiones.
Para añadir funciones adicionales durante el inicio de la estación de trabajo, añade tus secuencias de comandos al directorio /etc/workstation-startup.d/
:
Las secuencias de comandos de este directorio se ejecutan como root de forma predeterminada. Para ejecutar las secuencias de comandos como otro usuario, usa el comando
runuser
.Como las secuencias de comandos se ejecutan en orden lexicográfico, te recomendamos que añadas un prefijo a las secuencias de comandos con un número de tres dígitos superior a 200.
Si no quieres ampliar la imagen de una estación de trabajo, puedes crear un script customize_environment en tu directorio principal.
Modificaciones del directorio de inicio
Cuando la configuración de la estación de trabajo especifica un directorio principal persistente (que es el comportamiento predeterminado), se conecta dinámicamente un disco persistente que respalda el directorio principal al contenedor en el tiempo de ejecución. Este proceso sobrescribe las modificaciones realizadas en el directorio /home
durante la compilación de la imagen de contenedor.
Para conservar las actualizaciones, modifica el directorio /home
en el tiempo de ejecución del contenedor añadiendo una secuencia de comandos al directorio /etc/workstation-startup.d
o añadiendo una configuración por usuario al directorio /etc/profile.d
.
Para acelerar el proceso, puedes ejecutar la secuencia de comandos de configuración como un proceso en segundo plano (añade una ampersand, &
, al final del comando) para evitar que se bloquee el inicio del contenedor.
Estos son algunos ejemplos de configuración del tiempo de compilación que se deben mover al tiempo de ejecución del contenedor:
- Configuración de
git
por usuario git
repositorios clonados en el directorio principal- Configuración directa del usuario, como colocar archivos en un directorio
$HOME/.config
- Creación de un usuario
Creación y modificación de usuarios
Como el disco persistente se conecta dinámicamente al contenedor en el tiempo de ejecución, los usuarios deben añadirse al iniciar la estación de trabajo, no en el archivo Dockerfile. Para modificar o crear usuarios adicionales, te recomendamos que actualices /etc/workstation-startup.d/010_add-user.sh
o que crees tu propia secuencia de comandos que se ejecute al inicio.
Además, puedes modificar el perfil de bash predeterminado de los usuarios actualizando los archivos de /etc/profile.d
.
Actualizar las claves de APT seguras preconfiguradas
Las imágenes base de Cloud Workstations vienen preinstaladas con varias herramientas obtenidas de distintos repositorios de terceros mediante Secure APT. Como parte del proceso de instalación, las claves públicas proporcionadas por los propietarios del repositorio se importan mediante gpg
y se colocan en archivos individuales en /usr/share/keyrings/
. Se hace referencia a estos archivos desde los archivos list
correspondientes en /etc/apt/sources.list.d/
.
Esto permite que apt
verifique la integridad de un repositorio determinado al interactuar con él.
En ocasiones, los propietarios de repositorios de terceros pueden decidir cambiar la clave pública que se usa para validar la integridad de su repositorio, lo que provoca que apt
muestre un error al interactuar con él. Para solucionar este posible problema, puedes usar /google/scripts/refresh-preinstalled-apt-keys.sh
, que obtiene las versiones más recientes de las claves públicas preinstaladas y las vuelve a importar.
Mostrar las versiones instaladas del IDE
Varias imágenes base de Cloud Workstations vienen con un IDE preinstalado. Para mayor comodidad, consulta la /google/scripts/preinstalled-ide-versions.sh
secuencia de comandos incluida, que muestra el nombre y la información de la versión de los IDEs instalados en la imagen.
Desactivar los privilegios sudo
root
El usuario predeterminado de la estación de trabajo tiene privilegios de acceso sudo
raíz en estos contenedores. Para desactivar el acceso de superusuario al contenedor de Docker, asigna el valor true
a la variable de entorno CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO
al crear la configuración de la estación de trabajo.
Para definir esta variable de entorno a través de la consola Google Cloud al crear la configuración de tu estación de trabajo, sigue estos pasos:
- Cuando crees la configuración de tu estación de trabajo, completa la configuración de Información básica y Configuración de la máquina.
- En el cuadro de diálogo Personalización del entorno, despliega la sección Opciones avanzadas del contenedor y selecciona Variables de entorno.
- Haz clic en AñadirAñadir variable.
- Introduce
CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO
ytrue
como valor.
Personalizar sin ampliar una imagen
Para mayor comodidad, todas las imágenes base de Cloud Workstations comprueban si hay un archivo ejecutable en /home/user/.workstation/customize_environment
y, si lo hay, lo ejecutan en segundo plano como user
. Esto te permite ejecutar cualquier secuencia de comandos o archivo binario al inicio. A diferencia de .profile
o .bashrc
, la secuencia de comandos solo se ejecuta una vez cuando se inicia la estación de trabajo, en lugar de una vez por cada inicio de sesión de shell.
Como la secuencia de comandos de customize_environment
se ejecuta como user
, asegúrate de actualizar los permisos según sea necesario al escribir la secuencia de comandos. Por ejemplo, si quieres instalar Emacs cada vez que se inicie tu estación de trabajo, el contenido de customize_environment
podría ser similar al siguiente:
#!/bin/bash
sudo apt-get update
sudo apt-get install -y emacs
Los registros de ejecución de customize_environment
se pueden encontrar en el contenedor en
/var/log/customize_environment
y también se escriben en los
registros de salida del contenedor.
Si customize_environment
se ejecuta correctamente, se crea un archivo en
/var/run/customize_environment_done
. Como customize_environment
se ejecuta en paralelo con el inicio de la estación de trabajo, los paquetes instalados por la secuencia de comandos pueden estar disponibles unos instantes después de que se haya iniciado la estación de trabajo.
Usar tu propia imagen de contenedor
También puedes usar tu propia imagen de contenedor o imágenes de contenedor externas, siempre que estén basadas en Linux y ejecuten un proceso de bloqueo cuando se inicie el contenedor.
Al configurar el archivo Dockerfile, la instrucción ENTRYPOINT
debe ejecutar un proceso de bloqueo, como sleep infinity
, para que el contenedor siga ejecutándose en lugar de cerrarse inmediatamente. También puedes configurar la estación de trabajo y definir el campo config.container.args
para especificar un proceso de bloqueo.
Si usas tu propia imagen de contenedor, ten en cuenta lo siguiente:
Cloud Workstations no requiere secuencias de comandos adicionales de la imagen base de Cloud Workstations.
Sin embargo, puedes consultar las secuencias de comandos en el directorio
/etc/workstation-startup.d/
de un contenedor que ejecute la imagen base de Cloud Workstations. Los nombres de los archivos indican qué hace cada secuencia de comandos.Te recomendamos que ejecutes un servidor SSH en el contenedor. Consulta la sección
/etc/workstation-startup.d/020_start-sshd.sh
de la imagen base predeterminada para saber cómo configura Cloud Workstations este ajuste de forma predeterminada.Te recomendamos que ejecutes tu IDE o servidor web predeterminado en el puerto
80
.
Ampliar las imágenes base de Cloud Workstations
Cuando amplías una imagen base de Cloud Workstations para crear una imagen personalizada para tu entorno de estación de trabajo, puedes adoptar tres enfoques:
- Actualiza tu
Dockerfile
para incluir los recursos estáticos adicionales que quieras añadir. - Añada archivos ejecutables adicionales en
/etc/workstation-startup.d/
para personalizar el contenedor en ejecución. Los archivos de este directorio se ejecutan automáticamente en orden lexicográfico al iniciar el contenedor, por lo que puedes añadir un prefijo al nombre de archivo para que se ejecute en el momento adecuado durante el inicio de la estación de trabajo. - Anula el
ENTRYPOINT
en tu Dockerfile para personalizar por completo el inicio del contenedor.
Ejemplos de Dockerfiles personalizados
En esta sección se proporcionan ejemplos y se explica cómo crear tus propios Dockerfiles.
Imagen de contenedor con emacs
preinstalado
Para crear una imagen de contenedor con emacs
preinstalado, ejecuta los siguientes comandos:
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
RUN sudo apt update
RUN sudo apt install -y emacs
Imagen de contenedor con personalización del usuario
Sigue estos pasos para personalizar una imagen de contenedor:
Crea una secuencia de comandos en
/etc/workstation-startup.d/*
que se ejecute después de010_add-user.sh
. Por ejemplo,011_customize-user.sh
:#!/bin/bash # Create new group groupadd $GROUP # Add the user to a new group usermod -a -G $GROUP $USERNAME
Sustituye
$GROUP
por el nuevo nombre del grupo y$USERNAME
por el nombre de usuario.Si has llamado a tu secuencia de comandos
011_customize-user.sh
, añade lo siguiente a tu imagen en Dockerfile y haz que se pueda ejecutar:FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest COPY 011_customize-user.sh /etc/workstation-startup.d/ RUN chmod +x /etc/workstation-startup.d/011_customize-user.sh
Imagen de contenedor que define variables de entorno de contenedor en sesiones SSH
Las variables de entorno definidas en la configuración de la estación de trabajo o a nivel de estación de trabajo se transfieren a los subprocesos directos mediante el comando de punto de entrada. Esto incluye el IDE en las imágenes base preconfiguradas. Sin embargo, las sesiones SSH no son procesos secundarios del punto de entrada y no tienen definidas estas variables de entorno personalizadas.
Para definir esas variables de entorno en las sesiones SSH, configura una imagen de contenedor personalizada que transmita estas variables de entorno desde el comando de punto de entrada del contenedor al archivo /etc/environment
.
Para ello, sigue estos pasos:
Crea una secuencia de comandos en
/etc/workstation-startup.d/*
que se ejecute después de010_add-user.sh
. Por ejemplo,011_add-ssh-env-variables.sh
:#!/bin/bash # echo "CUSTOM_ENV_VAR=$CUSTOM_ENV_VAR" >> /etc/environment
Sustituye
CUSTOM_ENV_VAR
por el nombre de la variable de entorno que quieras.Si has llamado a tu secuencia de comandos
011_add-ssh-env-variables.sh
, añade lo siguiente a tu imagen en Dockerfile y haz que se pueda ejecutar:FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest COPY 011_add-ssh-env-variables.sh /etc/workstation-startup.d/ RUN chmod +x /etc/workstation-startup.d/011_add-ssh-env-variables.sh
Imagen de contenedor que habilita el reenvío de X11 para sesiones SSH
El reenvío de X11 te permite iniciar aplicaciones remotas y reenviar la pantalla de la aplicación a una máquina local.
Para crear una imagen de contenedor que habilite el reenvío de X11, modifica el archivo de configuración del daemon OpenSSH (/etc/ssh/sshd_config
) proporcionado por las imágenes base de Cloud Workstations añadiendo X11Forwarding yes
(para permitir el reenvío de X11) y AddressFamily inet
(para asegurarte de que solo se usa IPv4). Para obtener más información sobre estas palabras clave, consulta las páginas web de OpenBSD sobre AddressFamily
y X11Forwarding
.
Aquí tienes un Dockerfile de ejemplo que hace las modificaciones necesarias:
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
# Permit X11 forwarding using only IPv4
RUN cat >> /etc/ssh/sshd_config <<-EOF
AddressFamily inet
X11Forwarding yes
EOF
Copiar Code OSS para Cloud Workstations en otra imagen de contenedor
Una compilación multietapa te permite usar varias instrucciones FROM
en tu archivo Dockerfile. Cada instrucción FROM
puede usar una base diferente y permite copiar artefactos entre fases de compilación. Para añadir Code OSS para Cloud Workstations a otra imagen de contenedor, usa una compilación de varias fases para copiar la carpeta de la aplicación /opt/code-oss
en tu imagen. Si quieres iniciar Code OSS para Cloud Workstations
en el momento de iniciar el contenedor, copia también la secuencia de comandos /etc/workstation-startup.d/110_start-code-oss.sh
en el contenedor.
A continuación, se muestra un ejemplo de Dockerfile que copia Code OSS en la imagen de JetBrains IntelliJ Ultimate. Después, puedes interactuar con cualquiera de los dos IDEs:
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest as code-oss-image
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/jetbrains-intellij:latest
# Copy Code OSS for Cloud Workstations and startup scripts into our custom image
COPY --from=code-oss-image /opt/code-oss /opt/code-oss
COPY --from=code-oss-image /etc/workstation-startup.d/110_start-code-oss.sh /etc/workstation-startup.d/110_start-code-oss.sh
# Use the existing entrypoint script which will execute all scripts in /etc/workstation-startup.d/
ENTRYPOINT ["/google/scripts/entrypoint.sh"]
Imagen de contenedor que preinstala extensiones de IDE en Code OSS para Cloud Workstations para el desarrollo de Java
Para crear una imagen de contenedor que preinstale extensiones de IDE en Code OSS para Cloud Workstations para el desarrollo de Java en tiempo de compilación, ejecuta los siguientes comandos:
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
RUN wget https://open-vsx.org/api/vscjava/vscode-java-debug/0.40.1/file/vscjava.vscode-java-debug-0.40.1.vsix && \
unzip vscjava.vscode-java-debug-0.40.1.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-debug
RUN wget https://open-vsx.org/api/vscjava/vscode-java-dependency/0.19.1/file/vscjava.vscode-java-dependency-0.19.1.vsix && \
unzip vscjava.vscode-java-dependency-0.19.1.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-dependency
RUN wget https://open-vsx.org/api/redhat/java/1.6.0/file/redhat.java-1.6.0.vsix && \
unzip redhat.java-1.6.0.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/redhat-java
RUN wget https://open-vsx.org/api/vscjava/vscode-maven/0.35.2/file/vscjava.vscode-maven-0.35.2.vsix && \
unzip vscjava.vscode-maven-0.35.2.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-maven
RUN wget https://open-vsx.org/api/vscjava/vscode-java-test/0.35.0/file/vscjava.vscode-java-test-0.35.0.vsix && \
unzip vscjava.vscode-java-test-0.35.0.vsix "extension/*" &&\
mv extension /opt/code-oss/extensions/java-test
RUN chmod a+rwx -R /opt/code-oss/extensions/
Si preinstalas extensiones, se consideran extensiones integradas.
No podrás actualizar estas extensiones y es posible que no aparezcan en la sección de extensiones instaladas de
Marketplace de extensiones.
Sin embargo, puedes encontrar tus extensiones integradas buscando
@builtin
.
Otra forma de instalar extensiones al inicio es ejecutar una secuencia de comandos de inicio.
Por ejemplo, incluya la siguiente secuencia de comandos de inicio en /etc/workstation-startup.d/120_install_extensions.sh
:
sudo -u user /opt/code-oss/bin/codeoss-cloudworkstations --install-extension vscjava.vscode-java-debug@0.40.1 \
--install-extension vscjava.vscode-java-dependency@0.19.1 \
--install-extension redhat.java@1.6.0 \
--install-extension vscjava.vscode-maven@0.35.2 \
--install-extension vscjava.vscode-java-test@0.35.0
Con este método, la extensión aparece en el
Marketplace de extensiones y puedes
actualizarla desde ahí.
Instalar IDEs y complementos de JetBrains en imágenes base
Cuando personalices imágenes de Docker para configuraciones de estaciones de trabajo, puedes instalar IDEs y complementos de JetBrains, como Cloud Code para IntelliJ, en la imagen base. Las imágenes base de Cloud Workstations para productos de JetBrains incluyen las siguientes secuencias de comandos para ayudarte:
jetbrains-installer.sh
: instalar IDEs de JetBrainsplugin-installer.sh
: instala complementos, como Cloud Code para IntelliJ.
Usa estas secuencias de comandos según sea necesario para personalizar la imagen base, llamarlas con una secuencia de comandos de inicio o ejecutarlas después de iniciar la estación de trabajo.
Secuencias de comandos del instalador
Para ver los archivos de origen de las secuencias de comandos jetbrains-installer.sh
y plugin-installer.sh
, inicia una estación de trabajo con una configuración que use una de las imágenes predefinidas de JetBrains, conéctate a la estación de trabajo a través de JetBrains Gateway o SSH y, a continuación, busca los archivos de secuencias de comandos en el directorio installer-scripts
, que se encuentra en el directorio raíz.
Te recomendamos que ejecutes estas secuencias de comandos durante la compilación del contenedor. Evita ejecutarlos en una estación de trabajo que ya se haya iniciado.
Usar la secuencia de comandos del instalador de complementos
La secuencia de comandos plugin-installer.sh
usa la siguiente sintaxis:
plugin-installer.sh [-v VERSION] [-d DESTINATION-DIRECTORY] [-c CHECKSUM] [-f] PLUGIN_ID
Haz los cambios siguientes:
VERSION
: número de versión opcional del complemento que se va a instalar.DESTINATION-DIRECTORY
: directorio opcional en el que se debe instalar el complemento. Si no se especifica, se usa el directorio de trabajo.CHECKSUM
: suma de comprobación SHA-256 opcional del complemento solicitado.-f
: si se especifica, se sobrescribirá cualquier complemento.PLUGIN_ID
: el identificador numérico obligatorio del complemento de JetBrains Marketplace. Por ejemplo, para añadir Dart usa6351
como PLUGIN_ID. Para añadir Cloud Code for IntelliJ, usa8079
como PLUGIN_ID.
Por ejemplo, para instalar la versión más reciente del complemento de Dart en IntelliJ, ejecuta el siguiente comando:
/installer-scripts/plugin-installer.sh -d /opt/ideaIU/plugins/ 6351
Usar la secuencia de comandos del instalador de JetBrains
Te recomendamos que utilices la secuencia de comandos del instalador de JetBrains cuando amplíes una imagen base preconfigurada para los IDEs de JetBrains.
La secuencia de comandos jetbrains-installer.sh
usa la siguiente sintaxis:
jetbrains-installer.sh IDE [ pinned|latest ]
Haz los cambios siguientes:
IDE
: el IDE de JetBrains que se va a instalar. Debes usar una de las siguientes abreviaturas de IDE:IDE Producto instalado cl
CLion clion
CLion go
GoLand goland
GoLand iiu
IntelliJ Ultimate intellij
IntelliJ Ultimate pcp
PyCharm Professional pycharm
PyCharm Professional ps
PHPStorm phpstorm
PHPStorm rd
Rider rider
Rider rm
RubyMine rubymine
RubyMine ws
WebStorm webstorm
WebStorm pinned|latest
: opcional. Usa la versión fijada o la más reciente del IDE. El valor predeterminado eslatest
.
Por ejemplo, para instalar la versión más reciente de Clion, ejecuta el siguiente comando:
/installer-scripts/jetbrains-installer.sh clion
Personalizar archivos de configuración de IDEs de JetBrains
Si se especifica un directorio principal persistente en la configuración de las estaciones de trabajo, las imágenes base de Cloud Workstations con IDEs de JetBrains conservan automáticamente los archivos de configuración $IDE.vmoptions
y $IDE.properties
. Para anular la ubicación predeterminada de estos archivos, especifica la variable de entorno CLOUD_WORKSTATIONS_JETBRAINS_PERISTED_CONFIG_DIR
.
Para obtener más información, consulta /etc/workstation-startup.d/120_persist-jetbrains-configs.sh
en cualquier imagen base de JetBrains para saber cómo configura Cloud Workstations esta opción de forma predeterminada.
Ampliar una imagen Docker base con Cloud Code for IntelliJ
El siguiente fragmento de Dockerfile amplía una imagen Docker base con Cloud Code para IntelliJ incluyendo 8079
como identificador de complemento obligatorio.
En el ejemplo también se especifica de forma opcional version 22.9.3-222
como número de versión, /opt/ideaIU/plugins/
como directorio de destino y 89628279ed9042c526a81facc09bf53f8fb8b83b4595b0d329d94c1611e0c379
como suma de comprobación:
...
# Install IDE and Plugins
RUN bash /installer-scripts/jetbrains-installer.sh intellij pinned && \
# Install Cloud Code - https://plugins.jetbrains.com/plugin/8079-cloud-code
bash /installer-scripts/plugin-installer.sh \
-v 22.9.3-222 \
-d /opt/ideaIU/plugins/ \
-c 89628279ed9042c526a81facc09bf53f8fb8b83b4595b0d329d94c1611e0c379 \
8079
# Register IDE with JetBrains Gateway
RUN echo 'runuser user -c "/opt/ideaIU/bin/remote-dev-server.sh registerBackendLocationForGateway"' > /etc/workstation-startup.d/110_register-intellij-with-gateway.sh \
echo 'echo "IntelliJ-Ultimate ready for incoming gateway connection"' >> /etc/workstation-startup.d/110_register-intellij-with-gateway.sh
...
Instalar extensiones de IDE adicionales en Code OSS para Cloud Workstations
Puedes encontrar más extensiones de IDE en el registro Open VSX.
También puedes encontrar la URL del archivo .vsix
copiando la URL del enlace Descargar de cualquier extensión.

Si abres
Extensions Marketplace desde una
estación de trabajo, aparecerá Instalar en lugar de Descargar.
Configuración predeterminada de Code OSS para Cloud Workstations
Para obtener información detallada sobre el almacenamiento de la configuración en Code OSS para Cloud Workstations, consulta Personalizar la configuración.
Si especificas un directorio principal persistente en la configuración de las estaciones de trabajo, puedes configurar los ajustes predeterminados de Code OSS para Cloud Workstations añadiendo un script de inicio que escriba los ajustes en $HOME/.codeoss-cloudworkstations/data/Machine/settings.json
.
Por ejemplo, si quieres definir el tema de color predeterminado como Oscuro, amplía la imagen del editor base para incluir la siguiente secuencia de comandos en /etc/workstation-startup.d/150_default-ide-color-theme.sh
cat <<< $(jq '. += {"workbench.colorTheme": "Default Dark Modern"}' settings.json) > settings.json
Crear una imagen de contenedor personalizada
Para obtener información detallada sobre los comandos de Docker, consulta la referencia de Docker. Introduce el siguiente comando para compilar el contenedor:
docker build CUSTOM_IMAGE_FOLDER -t TARGET_IMAGE
Ten en cuenta que, si sustituyes el texto que precede al icono editar Editar, se actualizarán los demás ejemplos de esta página.
Haz los cambios siguientes:
CUSTOM_IMAGE_FOLDER
: la ruta a la carpeta que has creado para almacenar tu imagen personalizada.TARGET_IMAGE
: la ruta a la imagen en Artifact Registry.Por ejemplo,
TARGET_IMAGE
podría apuntar a una ruta de imagen de destino similar a la siguiente:*.pkg.dev/cloud-workstations-external/customimage:latest
Sustituye * por el nombre de la región y los identificadores adicionales que necesites.
También puedes actualizar la variable de entorno CLOUD_WORKSTATIONS_CUSTOM_IMAGE
para que apunte al repositorio.
Para obtener más información sobre cómo almacenar imágenes de Docker en Artifact Registry, consulta las siguientes secciones:
- Consulta cómo crear un repositorio de Docker con Artifact Registry.
- Nomenclaturas de nombres de repositorios e imágenes.
Alojar tu imagen de contenedor personalizada
Para alojar imágenes de contenedor personalizadas, recomendamos y admitimos Artifact Registry. Si usas GitHub o cualquier otro repositorio público o privado, es posible que Cloud Workstations no funcione correctamente. Para obtener más información, consulta la nota importante de la sección Usar una imagen de contenedor personalizada.
Probar una imagen de contenedor personalizada
Una vez que se haya creado el contenedor, puedes probarlo con el siguiente comando:
docker run --privileged -p LOCAL_PORT:CONTAINER_PORT TARGET_IMAGE
Haz los cambios siguientes:
LOCAL_PORT
: número de puerto localCONTAINER_PORT
: número de puerto del contenedor
Por ejemplo, si sustituyes
LOCAL_PORT
:CONTAINER_PORT
por
8080
:80
, se asigna el puerto 8080
para usarlo localmente y el puerto 80
para usarlo en el contenedor.
Si vas a ampliar la imagen del editor base de Cloud Workstations, ejecuta el comando docker
y, a continuación, prueba la imagen de la estación de trabajo conectándote a ella
a través de tu navegador local o ejecutando ssh
para conectarte a tu contenedor:
- Si te conectas a través del navegador, asegúrate de enviar
-p 8080:80
al comando de tudocker run
y, a continuación, abrelocalhost:8080
. - Si prefieres conectarte mediante SSH, asegúrate de pasar
-p 2222:22
a tu comandodocker run
y, a continuación, ejecutassh user@localhost -p 2222
.
Usar una imagen de contenedor personalizada
Para usar la imagen de contenedor personalizada después de haberla compilado y probado de forma local, envíala a Artifact Registry con el siguiente comando:
docker push TARGET_IMAGE
Ahora puedes crear una configuración de estación de trabajo con la imagen de contenedor que acabas de crear y enviar.
Para obtener más información, consulta Crear un repositorio de Docker con Artifact Registry.
Depurar problemas
Para encontrar y depurar problemas al ejecutar la imagen de contenedor, consulta los registros de salida del contenedor de las estaciones de trabajo en ejecución.
Recomendación: ayuda a proteger tu flujo de procesamiento de imágenes
Eres responsable de mantener y actualizar los paquetes y las dependencias personalizados que se hayan añadido a las imágenes personalizadas.
Si vas a crear imágenes personalizadas, te recomendamos que sigas estas indicaciones:
Ejecuta una herramienta de análisis de contenedores, como Artifact Analysis, para inspeccionar las dependencias adicionales que hayas añadido.
Programa compilaciones para recompilar imágenes semanalmente o consulta cómo automatizar la recompilación de imágenes de contenedor.
Siguientes pasos
- Automatiza la recompilación de imágenes de contenedor para sincronizar las actualizaciones de imágenes base con Cloud Build y Cloud Scheduler.
- Configurar prácticas recomendadas de seguridad.
- Consulta más información sobre Artifact Analysis.