Imagens de base pré-configuradas

Google Cloud mantém as seguintes imagens de base para o Cloud Workstations, que são derivadas das Google Cloud's imagens de base padrão.

Lista de imagens de base pré-configuradas

Essas imagens podem ser usadas diretamente nas configurações da estação de trabalho, ou como imagens de base ao criar imagens de contêiner personalizadas com o comando FROM do Docker.

Imagem Descrição
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest Editor de base do Cloud Workstations, Code OSS para Cloud Workstations, com base no Code-OSS. (Padrão)
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/base:latest Imagem de base sem ambiente de desenvolvimento integrado instalado.
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss-cuda:latest Editor de base do Cloud Workstations, Code OSS para Cloud Workstations, com base no Code-OSS com o NVIDIA CUDA Toolkit.
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/clion:latest Ambiente de desenvolvimento integrado do CLion. Acessível apenas pelo JetBrains Gateway.
Para informações sobre instalação e primeiros passos, consulte Desenvolver código usando ambientes de desenvolvimento integrado locais do JetBrains.
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/goland:latest Ambiente de desenvolvimento integrado do GoLand. Acessível apenas pelo JetBrains Gateway.
Para informações sobre instalação e primeiros passos, consulte Desenvolver código usando ambientes de desenvolvimento integrado locais do JetBrains.
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/intellij-ultimate:latest Ambiente de desenvolvimento integrado do IntelliJ IDEA Ultimate. Acessível apenas pelo JetBrains Gateway.
Para informações sobre instalação e primeiros passos, consulte Desenvolver código usando ambientes de desenvolvimento integrado locais do JetBrains.
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/phpstorm:latest Ambiente de desenvolvimento integrado do PhpStorm. Acessível apenas pelo JetBrains Gateway.
Para informações sobre instalação e primeiros passos, consulte Desenvolver código usando ambientes de desenvolvimento integrado locais do JetBrains.
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/pycharm:latest Ambiente de desenvolvimento integrado do PyCharm Professional. Acessível apenas pelo JetBrains Gateway.
Para informações sobre instalação e primeiros passos, consulte Desenvolver código usando ambientes de desenvolvimento integrado locais do JetBrains.
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/rider:latest Ambiente de desenvolvimento integrado do Rider. Acessível apenas pelo JetBrains Gateway.
Para informações sobre instalação e primeiros passos, consulte Desenvolver código usando ambientes de desenvolvimento integrado locais do JetBrains.
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/rubymine:latest Ambiente de desenvolvimento integrado do RubyMine. Acessível apenas pelo JetBrains Gateway.
Para informações sobre instalação e primeiros passos, consulte Desenvolver código usando ambientes de desenvolvimento integrado locais do JetBrains.
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/webstorm:latest Ambiente de desenvolvimento integrado do WebStorm. Acessível apenas pelo JetBrains Gateway.
Para informações sobre instalação e primeiros passos, consulte Desenvolver código usando ambientes de desenvolvimento integrado locais do JetBrains.

Lista de imagens de base de terceiros

Imagem de terceiros Provedor terceirizado
us-central1-docker.pkg.dev/posit-images/cloud-workstations/workbench:latest Posit Workbench (incluindo o RStudio Pro)

Se você encontrar problemas com o ambiente de desenvolvimento integrado do Posit Workbench ou com a imagem do contêiner do Posit Workbench, informe-os ao Posit no GitHub.

Estrutura da imagem de base do Cloud Workstations

As imagens de base do Cloud Workstations compartilham a seguinte estrutura definida:

  • O arquivo de ponto de entrada da imagem de base está definido como /google/scripts/entrypoint.sh.
  • Na inicialização, as imagens de base executam arquivos em /etc/workstation-startup.d/* em ordem lexicográfica para inicializar o ambiente da estação de trabalho.

    Os arquivos e o comportamento deles são os seguintes:

    • 000_configure-docker.sh: configura e executa o Docker na estação de trabalho.
    • 010_add-user.sh: cria o usuário padrão no Cloud Workstations.

      Como o disco permanente é anexado dinamicamente ao contêiner, os usuários precisam ser adicionados na inicialização da estação de trabalho, não no Dockerfile.

    • 020_start-sshd.sh: inicia o serviço sshd no contêiner.

    • 030_customize-environment.sh: Executa /home/user/.workstation/customize_environment como user.

    • 110_start-$IDE.sh: inicia o ambiente de desenvolvimento integrado da imagem.

  • O Cloud Workstations armazena imagens do Docker no diretório principal em /home/.docker_data para que as imagens sejam preservadas entre as sessões.

Para adicionar mais funcionalidades durante a inicialização da estação de trabalho, adicione seus scripts no diretório /etc/workstation-startup.d/:

  • Os scripts nesse diretório são executados como raiz por padrão. Para executar os scripts como um usuário diferente, use o comando runuser.

  • Como os scripts são executados em ordem lexicográfica, recomendamos que você prefixe os scripts com um número de três dígitos maior que 200.

Como alternativa, se você não quiser estender uma imagem de estação de trabalho, crie um script customize_environment no diretório principal.

Modificações do diretório principal

Quando a configuração da estação de trabalho especifica um diretório principal permanente (que é o comportamento padrão), um disco permanente que faz backup do diretório principal é anexado dinamicamente ao contêiner no momento da execução. Esse processo substitui as modificações feitas no diretório /home no tempo de build da imagem do contêiner.

Para preservar as atualizações, modifique o diretório /home no tempo de execução do contêiner adicionando um script no diretório /etc/workstation-startup.d ou adicionando uma configuração por usuário no diretório /etc/profile.d. Para acelerar o processo, execute o script de configuração como um processo em segundo plano (adicione um e comercial, &, ao final do comando) para evitar o bloqueio da inicialização do contêiner.

Alguns exemplos de configuração de tempo de build que precisam ser movidos para o tempo de execução do contêiner:

  • Configuração git por usuário
  • Repositórios git clonados no diretório principal
  • Configuração direta do usuário, como colocar arquivos em um diretório $HOME/.config
  • Criação de usuário

Criação e modificação de usuários

Como o disco permanente é anexado dinamicamente ao contêiner no momento da execução, os usuários precisam ser adicionados na inicialização da estação de trabalho, não no Dockerfile. Para modificar ou criar mais usuários, recomendamos que você atualize /etc/workstation-startup.d/010_add-user.sh ou crie seu próprio script que seja executado na inicialização.

Além disso, é possível modificar o perfil bash padrão dos usuários atualizando os arquivos em /etc/profile.d.

Atualizar chaves APT seguras pré-configuradas

As imagens de base do Cloud Workstations vêm pré-instaladas com várias ferramentas obtidas de vários repositórios de terceiros usando o APT seguro. Como parte do processo de instalação, as chaves públicas fornecidas pelos proprietários do repositório são importadas usando gpg e colocadas em arquivos individuais em /usr/share/keyrings/. Esses arquivos são referenciados nos arquivos list correspondentes em /etc/apt/sources.list.d/. Isso permite que o apt verifique a integridade de um determinado repositório ao interagir com ele.

Em algumas ocasiões, os proprietários de repositórios de terceiros podem decidir mudar a chave pública usada para validar a integridade do repositório, o que faz com que o apt mostre um erro ao interagir com ele. Para resolver esse problema em potencial, use /google/scripts/refresh-preinstalled-apt-keys.sh, que recebe as versões mais recentes das chaves públicas pré-instaladas e as importa novamente.

Também é possível executar esse script diretamente no Dockerfile personalizado antes de executar apt-get update:

# Refresh the preinstalled APT keys
RUN /google/scripts/refresh-preinstalled-apt-keys.sh

RUN apt-get update

Listar versões de ambientes de desenvolvimento integrado instaladas

Várias imagens de base do Cloud Workstations vêm pré-instaladas com um ambiente de desenvolvimento integrado. Para sua conveniência, consulte o script /google/scripts/preinstalled-ide-versions.sh incluído, que lista o nome e as informações de versão dos ambientes de desenvolvimento integrado instalados na imagem.

Desativar privilégios de raiz sudo

O usuário padrão da estação de trabalho tem privilégios de acesso raiz sudo nesses contêineres. Para desativar o acesso raiz ao contêiner do Docker, defina a variável de ambiente CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO como true ao criar a configuração da estação de trabalho.

Para definir essa variável de ambiente no Google Cloud console ao criar a configuração da estação de trabalho, siga estas etapas:

  1. Ao criar a configuração da estação de trabalho, conclua a configuração das informações básicas e da configuração da máquina.
  2. Na caixa de diálogo Personalização do ambiente, expanda a seção Opções avançadas do contêiner e selecione Variáveis de ambiente.
  3. Clique em addAdicionar variável.
  4. Insira CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO e true como o valor.

Personalizar sem estender uma imagem

Para sua conveniência, todas as imagens de base do Cloud Workstations verificam a presença de um arquivo executável localizado em /home/user/.workstation/customize_environment e, se ele existir, o executam em segundo plano como user. Isso permite executar qualquer script ou binário na inicialização. Ao contrário de .profile ou .bashrc, o script é executado apenas uma vez quando a estação de trabalho é iniciada, em vez de uma vez para cada login do shell.

Como o script customize_environment é executado como user, atualize as permissões conforme necessário ao gravar o script. Por exemplo, se você quiser instalar o Emacs sempre que a estação de trabalho for iniciada, o conteúdo de customize_environment poderá ser semelhante ao seguinte:

#!/bin/bash
sudo apt-get update
sudo apt-get install -y emacs

Os registros de execução de customize_environment podem ser encontrados no contêiner em /var/log/customize_environment e também são gravados nos registros de saída do contêiner. Na execução bem-sucedida de customize_environment, um arquivo é criado em /var/run/customize_environment_done. Como customize_environment é executado em paralelo com a inicialização da estação de trabalho, os pacotes instalados pelo script podem ficar disponíveis alguns instantes após o início da estação de trabalho.

Evitar tempos limite de inatividade

Para sua conveniência, todas as imagens de base do Cloud Workstations incluem um script pré-instalado em /google/scripts/keep_alive.sh. Esse script envia sinais de atividade regulares, o que pode impedir que a estação de trabalho seja desligada devido a tempos limite de inatividade quando você estiver executando processos em segundo plano sem interação direta.

Evitar tempos limite de inatividade com agentes de IA

Além disso, as imagens de base do Cloud Workstations incluem scripts de configuração de agente de amostra em /google/samples/agents/keepalive/. Essas configurações de amostra permitem configurar agentes de codificação de IA (como o Claude Code e a CLI do Antigravity) na estação de trabalho para manter a estação de trabalho ativa automaticamente enquanto eles estão trabalhando ativamente em tarefas. Quando o agente termina as tarefas ou faz uma pausa para aguardar a entrada do usuário, o script para de enviar mensagens de sinal de atividade, permitindo que a estação de trabalho expire devido à inatividade. Essas configurações funcionam melhor quando a configuração da estação de trabalho está definida para usar a suspensão da estação de trabalho (idleAction definido como SUSPEND), permitindo que a estação de trabalho salve o estado da memória e seja retomada sem problemas quando você retornar.

Para mais informações sobre como configurar fluxos de trabalho assistidos por agentes e hooks de sinal de atividade, consulte Desenvolvimento otimizado para agentes.

A seguir