OGoogle Cloud mantém as seguintes imagens de base para o Cloud Workstations, que são derivadas das imagens de base padrão do Google Cloud.
Lista de imagens de base pré-configuradas
Essas imagens podem ser usadas diretamente em configurações de 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 IDE 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, baseado em Code-OSS com o kit de ferramentas NVIDIA CUDA. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/clion:latest | IDE 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 | IDE 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 | IDE 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 | IDE 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 | IDE 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ê tiver 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 dentro da 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çosshdno contêiner.030_customize-environment.sh: executa/home/user/.workstation/customize_environmentcomouser.110_start-$IDE.sh: inicia o ambiente de desenvolvimento integrado da imagem.
O Cloud Workstations armazena imagens Docker no diretório inicial em
/home/.docker_datapara 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/:
Por padrão, os scripts nesse diretório são executados como raiz. Para executar os scripts como outro usuário, use o comando
runuser.Como os scripts são executados em ordem lexicográfica, recomendamos que você adicione um prefixo de três dígitos maior que 200.
Como alternativa, se você não quiser estender uma imagem de estações de trabalho, crie um script customize_environment no diretório inicial.
Modificações no 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 ambiente de execução. Esse processo substitui
as modificações feitas no diretório /home no momento da criação da imagem do contêiner.
Para preservar as atualizações, modifique o diretório /home no ambiente 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 ambiente de execução do contêiner:
- Configuração do
gitpor usuário - Repositórios
gitclonados no diretório inicial - 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 ambiente de execução,
os usuários precisam ser adicionados na inicialização da estação de trabalho, não no Dockerfile. Para modificar
ou criar outros usuários, recomendamos que você atualize
/etc/workstation-startup.d/010_add-user.sh ou
crie seu próprio script que é executado na inicialização.
Além disso, é possível modificar o perfil bash padrão para os usuários atualizando
os arquivos em /etc/profile.d.
Atualizar as chaves pré-configuradas do Secure APT
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 Secure APT. 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.
Às vezes, 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,
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 as versões instaladas do ambiente de desenvolvimento integrado
Várias imagens de base do Cloud Workstations vêm pré-instaladas com um ambiente de desenvolvimento integrado. Para
facilitar, 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 os privilégios de raiz de 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 console do Google Cloud ao criar a configuração da estação de trabalho, siga estas etapas:
- Ao criar a configuração da estação de trabalho, preencha as informações básicas e a configuração da máquina.
- Na caixa de diálogo Personalização do ambiente, expanda a seção Opções avançadas de contêiner e selecione Variáveis de ambiente.
- Clique em addAdicionar variável.
- Insira
CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDOetruecomo o valor.
Personalizar sem estender uma imagem
Para maior 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 que você
execute 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 escrever 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 pode 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.
Após a 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 estar
disponíveis alguns instantes após a inicialização da estação de trabalho.
Evitar tempos limite de inatividade
Para facilitar, todas as imagens de base do Cloud Workstations incluem um script pré-instalado
em /google/scripts/keep_alive.sh. Esse script envia mensagens de atividade
regulares, que podem impedir que a estação de trabalho seja encerrada devido a tempos limite de
inatividade quando você está 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 programação de IA (como o Claude Code e a CLI do Antigravity) dentro da estação de trabalho para mantê-la ativa automaticamente enquanto eles estão trabalhando em tarefas. Quando o agente conclui as tarefas ou pausa para aguardar a entrada do usuário, o
script para de enviar mensagens 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 retome sem problemas quando você retornar.
Para mais informações sobre como configurar fluxos de trabalho assistidos por agentes e hooks de keep-alive, consulte Desenvolvimento otimizado para agentes.
A seguir
- Personalize as imagens de contêiner.
- Automatize as recriações de imagens de contêiner para sincronizar as atualizações de imagens de base usando o Cloud Build e o Cloud Scheduler.
- Configurar as práticas recomendadas de segurança.