Google Cloud gestisce le seguenti immagini di base per Cloud Workstations, che derivano dalleimmagini di base standarddi Google Cloud.
Elenco di immagini di base preconfigurate
Queste immagini possono essere utilizzate direttamente nelle configurazioni delle workstation o come immagini di base durante la creazione di immagini container personalizzate con il comando FROM di Docker.
| Image | Descrizione |
|---|---|
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest | Editor di base di Cloud Workstations, Code OSS per Cloud Workstations, basato su Code-OSS. (Valore predefinito) |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/base:latest | Immagine di base senza IDE installato. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss-cuda:latest | Editor di base di Cloud Workstations, Code OSS per Cloud Workstations, basato su Code-OSS con NVIDIA CUDA Toolkit. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/clion:latest | CLion IDE. Accessibile solo tramite il gateway JetBrains. Per informazioni sull'installazione e su come iniziare, consulta Sviluppa il codice utilizzando gli IDE JetBrains locali. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/goland:latest | IDE GoLand. Accessibile solo tramite il gateway JetBrains. Per informazioni sull'installazione e su come iniziare, consulta Sviluppa il codice utilizzando gli IDE JetBrains locali. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/intellij-ultimate:latest | IDE IntelliJ IDEA Ultimate. Accessibile solo tramite JetBrains Gateway. Per informazioni sull'installazione e su come iniziare, consulta Sviluppa il codice utilizzando gli IDE JetBrains locali. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/phpstorm:latest | IDE PhpStorm. Accessibile solo tramite il gateway JetBrains. Per informazioni sull'installazione e su come iniziare, consulta Sviluppa il codice utilizzando gli IDE JetBrains locali. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/pycharm:latest | IDE PyCharm Professional. Accessibile solo tramite il gateway JetBrains. Per informazioni sull'installazione e su come iniziare, consulta Sviluppa il codice utilizzando gli IDE JetBrains locali. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/rider:latest | Rider. Accessibile solo tramite il gateway JetBrains. Per informazioni sull'installazione e su come iniziare, consulta Sviluppa il codice utilizzando gli IDE JetBrains locali. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/rubymine:latest | IDE RubyMine. Accessibile solo tramite il gateway JetBrains. Per informazioni sull'installazione e su come iniziare, consulta Sviluppa il codice utilizzando gli IDE JetBrains locali. |
| us-central1-docker.pkg.dev/cloud-workstations-images/predefined/webstorm:latest | IDE WebStorm. Accessibile solo tramite il gateway JetBrains. Per informazioni sull'installazione e su come iniziare, consulta Sviluppa il codice utilizzando gli IDE JetBrains locali. |
Elenco di immagini di base di terze parti
| Immagine di terze parti | Provider di terze parti |
|---|---|
| us-central1-docker.pkg.dev/posit-images/cloud-workstations/workbench:latest | Posit Workbench (incluso RStudio Pro) |
Se riscontri problemi con l'IDE Posit Workbench o con l'immagine container Posit Workbench, segnalali a Posit su GitHub.
Struttura dell'immagine di base di Cloud Workstations
Le immagini di base di Cloud Workstations condividono la seguente struttura definita:
- Il file entrypoint dell'immagine di base è impostato su
/google/scripts/entrypoint.sh. All'avvio, le immagini di base eseguono i file in
/etc/workstation-startup.d/*in ordine lessicografico per inizializzare l'ambiente della workstation.I file e il loro comportamento sono i seguenti:
000_configure-docker.sh: configura ed esegue Docker all'interno della workstation.010_add-user.sh: crea l'utente predefinito in Cloud Workstations.Poiché il disco permanente è collegato dinamicamente al container, gli utenti devono essere aggiunti all'avvio della workstation, non nel Dockerfile.
020_start-sshd.sh: avvia il serviziosshdnel container.030_customize-environment.sh: esegue/home/user/.workstation/customize_environmentcomeuser.110_start-$IDE.sh: avvia l'IDE per l'immagine.
Cloud Workstations archivia le immagini Docker nella home directory in
/home/.docker_datain modo che vengano conservate tra le sessioni.
Per aggiungere funzionalità aggiuntive durante l'avvio della workstation, aggiungi gli script nella directory /etc/workstation-startup.d/:
Gli script in questa directory vengono eseguiti come root per impostazione predefinita. Per eseguire gli script come un altro utente, utilizza il comando
runuser.Poiché gli script vengono eseguiti in ordine lessicografico, ti consigliamo di anteporre agli script un numero di tre cifre maggiore di 200.
In alternativa, se non vuoi estendere un'immagine delle workstation, puoi creare uno script customize_environment nella tua home directory.
Modifiche alla home directory
Quando la configurazione della workstation specifica una home directory permanente (che è il comportamento predefinito), un disco permanente che supporta la home directory viene collegato dinamicamente al container in fase di runtime. Questo processo sovrascrive le modifiche apportate alla directory /home al momento della creazione dell'immagine container.
Per conservare gli aggiornamenti, modifica la directory /home in fase di runtime del container aggiungendo uno script nella directory /etc/workstation-startup.d o aggiungendo la configurazione per utente nella directory /etc/profile.d.
Per velocizzare la procedura, valuta la possibilità di eseguire lo script di configurazione come processo in background (aggiungi una e commerciale, &, alla fine del comando) per evitare di bloccare l'avvio del container.
Ecco alcuni esempi di configurazione del tempo di build che dovrebbero essere spostati nel runtime del container:
- Configurazione di
gitper utente gitrepository clonati nella home directory- Configurazione diretta dell'utente, ad esempio l'inserimento di file in una directory
$HOME/.config - Creazione utente
Creazione e modifica degli utenti
Poiché il disco permanente si collega dinamicamente al container in fase di runtime, gli utenti devono essere aggiunti all'avvio della workstation, non nel Dockerfile. Per modificare o creare altri utenti, ti consigliamo di aggiornare /etc/workstation-startup.d/010_add-user.sh o di creare uno script personalizzato che venga eseguito all'avvio.
Inoltre, puoi modificare il profilo bash predefinito per gli utenti aggiornando i file in /etc/profile.d.
Aggiorna le chiavi Secure APT preconfigurate
Le immagini di base di Cloud Workstations vengono fornite con una serie di strumenti preinstallati ottenuti da vari repository di terze parti utilizzando Secure APT. Durante il processo di installazione, le chiavi pubbliche fornite dai proprietari del repository vengono importate utilizzando gpg e inserite in singoli file in /usr/share/keyrings/. Questi file sono referenziati dai file list corrispondenti in /etc/apt/sources.list.d/.
In questo modo, apt può verificare l'integrità di un determinato repository quando interagisce con quest'ultimo.
In alcuni casi, i proprietari di repository di terze parti possono decidere di modificare la chiave pubblica utilizzata per convalidare l'integrità del repository, il che causa la visualizzazione di un errore da parte di apt durante l'interazione con il repository. Per risolvere questo potenziale problema, puoi utilizzare /google/scripts/refresh-preinstalled-apt-keys.sh, che ottiene le ultime versioni delle chiavi pubbliche preinstallate e le importa di nuovo.
Puoi anche eseguire questo script direttamente nel tuo Dockerfile personalizzato prima di eseguire apt-get update:
# Refresh the preinstalled APT keys
RUN /google/scripts/refresh-preinstalled-apt-keys.sh
RUN apt-get update
Elenca le versioni dell'IDE installate
Diverse immagini di base di Cloud Workstations vengono fornite con un IDE preinstallato. Per comodità, consulta lo script /google/scripts/preinstalled-ide-versions.sh incluso, che elenca il nome e le informazioni sulla versione degli IDE installati nell'immagine.
Disattiva i privilegi di root di sudo
L'utente predefinito della workstation dispone dei privilegi di accesso root sudo in questi container. Per disattivare l'accesso root al container Docker, imposta la variabile di ambiente CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO su true durante la creazione della configurazione della workstation.
Per impostare questa variabile di ambiente tramite la console Google Cloud durante la creazione della configurazione della workstation, segui questi passaggi:
- Quando crei la configurazione della workstation, completa la configurazione per le informazioni di base e la configurazione della macchina.
- Nella finestra di dialogo Personalizzazione dell'ambiente, espandi la sezione Opzioni container avanzate e seleziona Variabili di ambiente.
- Fai clic su addAggiungi variabile.
- Inserisci
CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDOetruecome valore.
Personalizza senza estendere un'immagine
Per praticità, tutte le immagini di base di Cloud Workstations verificano la presenza di un file eseguibile che si trova in /home/user/.workstation/customize_environment e, se esiste, lo eseguono in background come user. In questo modo puoi eseguire qualsiasi script o programma binario all'avvio. A differenza di .profile o .bashrc, lo script viene eseguito una sola volta all'avvio della workstation, anziché una volta per ogni accesso alla shell.
Poiché lo script customize_environment viene eseguito come user, assicurati di aggiornare le autorizzazioni in base alle necessità durante la scrittura dello script. Ad esempio, se vuoi installare Emacs ogni volta che la workstation viene avviata, il contenuto di customize_environment potrebbe essere simile al seguente:
#!/bin/bash
sudo apt-get update
sudo apt-get install -y emacs
I log di esecuzione di customize_environment sono disponibili nel container all'indirizzo /var/log/customize_environment e vengono scritti anche nei log di output del container.
In caso di esecuzione corretta di customize_environment, viene creato un file in /var/run/customize_environment_done. Poiché customize_environment viene eseguito in parallelo con l'avvio della workstation, i pacchetti installati dallo script possono essere disponibili già pochi istanti dopo l'avvio della workstation.
Impedisci i timeout di inattività
Per praticità, tutte le immagini di base di Cloud Workstations includono uno script preinstallato in /google/scripts/keep_alive.sh. Questo script invia messaggi keep-alive regolari, che possono impedire l'arresto della workstation a causa di timeout di inattività quando esegui processi in background senza interazione diretta.
Previeni i timeout di inattività con gli agenti AI
Inoltre, le immagini di base di Cloud Workstations includono script di configurazione dell'agente di esempio in /google/samples/agents/keepalive/. Queste configurazioni di esempio ti consentono di configurare gli agenti di programmazione AI (come Claude Code e Antigravity CLI) all'interno della workstation per mantenerla automaticamente attiva mentre lavorano attivamente alle attività. Quando l'agente termina le sue attività o si mette in pausa per attendere l'input utente dell'utente, lo script interrompe l'invio di messaggi keep-alive, consentendo alla workstation di andare in timeout per inattività.
Queste configurazioni funzionano meglio quando la configurazione della workstation è impostata per utilizzare
la sospensione della workstation (idleAction impostato su SUSPEND),
consentendo alla workstation di salvare lo stato della memoria e riprendere senza problemi quando torni.
Per saperne di più sulla configurazione dei workflow assistiti dall'agente e degli hook keep-alive, consulta Sviluppo ottimizzato per l'agente.
Passaggi successivi
- Personalizza le immagini container.
- Automatizza la creazione di nuove build delle immagini container per sincronizzare gli aggiornamenti delle immagini di base utilizzando Cloud Build e Cloud Scheduler.
- Configura le best practice per la sicurezza.