Personalizzare le immagini container

Le immagini di base preconfigurate fornite da Cloud Workstations contengono solo un ambiente minimale con IDE, terminale Linux di base e strumenti di linguaggio e un server sshd. Per accelerare la configurazione dell'ambiente di casi d'uso di sviluppo specifici, puoi creare immagini container personalizzate che estendono queste immagini di base per preinstallare strumenti e dipendenze ed eseguire script di automazione.

Per le immagini container personalizzate, ti consigliamo di configurare una pipeline per ricompilare automaticamente queste immagini quando l'immagine di base di Cloud Workstations viene aggiornata, oltre a eseguire uno strumento di scansione dei container come Artifact Analysis per esaminare eventuali dipendenze aggiuntive che hai aggiunto. Sei responsabile della manutenzione e dell'aggiornamento dei pacchetti e delle dipendenze personalizzati aggiunti alle immagini personalizzate.

Prima di iniziare

  1. Hai bisogno di una macchina con strumenti per creare immagini container come Docker e per eseguire il push delle immagini in Artifact Registry utilizzando Google Cloud CLI. Puoi utilizzare Cloud Workstations o Cloud Shell Editor per eseguire questi passaggi, in cui questi strumenti sono preinstallati.

  2. Seleziona l'immagine di base che vuoi utilizzare dall'elenco delle immagini di base supportate, ad esempio us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest.

    In alternativa, puoi utilizzare la tua immagine container o immagini container esterne seguendo le istruzioni per utilizzare la tua immagine container.

  3. Crea una cartella come CUSTOM_IMAGE_FOLDER e un Dockerfile al suo interno che estenda l'immagine di base selezionata, come mostrato negli esempi che seguono.

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 viene collegato dinamicamente al container, gli utenti devono essere aggiunti all'avvio della workstation, non nel Dockerfile.

    • 020_start-sshd.sh: avvia il servizio sshd nel container.

    • 030_customize-environment.sh: esegue /home/user/.workstation/customize_environment come user.

    • 110_start-$IDE.sh: avvia l'IDE per l'immagine.

  • Cloud Workstations archivia le immagini Docker nella home directory in /home/.docker_data in modo che le immagini vengano conservate tra le sessioni.

Per aggiungere funzionalità aggiuntive durante l'avvio della workstation, aggiungi gli script nella directory /etc/workstation-startup.d/:

  • Per impostazione predefinita, gli script in questa directory vengono eseguiti come root. Per eseguire gli script come un utente diverso, 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 durante la 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.

Di seguito sono riportati alcuni esempi di configurazione in fase di compilazione che devono essere spostati nel runtime del container:

  • Configurazione di git per utente
  • git repository clonati nella home directory
  • Configurazione diretta dell'utente, ad esempio inserimento di file in una directory $HOME/.config
  • Creazione utente

Creazione e modifica degli utenti

Poiché il disco permanente viene collegato dinamicamente al container in fase di runtime, gli utenti devono essere aggiunti all'avvio della workstation, non nel Dockerfile. Per modificare o creare utenti aggiuntivi, ti consigliamo di aggiornare /etc/workstation-startup.d/010_add-user.sh o 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 sono preinstallate con una serie di strumenti ottenuti da vari repository di terze parti utilizzando Secure APT. Nell'ambito del 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 fanno riferimento ai file list corrispondenti in /etc/apt/sources.list.d/. In questo modo, apt può verificare l'integrità di un determinato repository quando interagisce con esso.

A volte, 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 quando interagisce con il repository. Per risolvere questo potenziale problema, puoi utilizzare /google/scripts/refresh-preinstalled-apt-keys.sh, che recupera le versioni più recenti delle chiavi pubbliche preinstallate e le reimporta.

Elenco delle versioni dell'IDE installate

Diverse immagini di base di Cloud Workstations sono preinstallate con un IDE. 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.

Disattivare i privilegi di root sudo

L'utente workstation predefinito dispone dei privilegi di accesso root in questi contenitori.sudo Per disattivare l'accesso root al container Docker, imposta la variabile di ambiente CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO su true quando crei la configurazione della workstation.

Per impostare questa variabile di ambiente tramite la console Google Cloud durante la creazione della configurazione della workstation:

  1. Quando crei la configurazione della workstation, completa la configurazione per le informazioni di base e la configurazione della macchina.
  2. Nella finestra di dialogo Personalizzazione ambiente, espandi la sezione Opzioni container avanzate e seleziona Variabili di ambiente.
  3. Fai clic su AggiungiAggiungi variabile.
  4. Inserisci CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO e true come valore.

Personalizzare senza estendere un'immagine

Per comodità, 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 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 si avvia, i contenuti di customize_environment potrebbero essere simili ai seguenti:

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

I log di esecuzione per customize_environment sono disponibili nel container all'indirizzo /var/log/customize_environment e vengono scritti anche nei log di output del container. Se l'esecuzione di customize_environment va a buon fine, 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.

Prevenire i timeout per inattività

Per comodità, 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.

Utilizzare la tua immagine container

Puoi anche utilizzare la tua immagine container o immagini container esterne, purché siano basate su Linux ed eseguano un processo di blocco all'avvio del container.

Quando configuri il Dockerfile, l'istruzione ENTRYPOINT deve eseguire un processo di blocco come sleep infinity in modo che il container continui a essere eseguito anziché uscire immediatamente. In alternativa, nella configurazione della workstation puoi impostare il campo config.container.args per specificare un processo di blocco.

Quando utilizzi la tua immagine container, tieni presente quanto segue:

  • Cloud Workstations non richiede script aggiuntivi dall'immagine di base di Cloud Workstations.

    Tuttavia, puoi esaminare gli script nella directory /etc/workstation-startup.d/ all'interno di un container che esegue l'immagine di base di Cloud Workstations. I nomi dei file indicano la funzione di ogni script.

  • Ti consigliamo di eseguire un server SSH nel container. Fai riferimento a /etc/workstation-startup.d/020_start-sshd.sh nell'immagine di base predefinita per scoprire come Cloud Workstations configura questa impostazione per impostazione predefinita.

  • Ti consigliamo di eseguire l'IDE o il server web predefinito sulla porta 80.

Estendere le immagini di base di Cloud Workstations

Quando estendi un'immagine di base di Cloud Workstations per creare un'immagine personalizzata per l'ambiente workstation, puoi adottare tre approcci:

  1. Aggiorna il tuo Dockerfile per includere eventuali asset statici aggiuntivi che vuoi aggiungere.
  2. Aggiungi altri file eseguibili in /etc/workstation-startup.d/ per personalizzare il contenitore in esecuzione. I file in questa directory vengono eseguiti automaticamente in ordine lessicografico all'avvio del container, quindi puoi aggiungere un prefisso al nome file per eseguirlo al momento opportuno durante l'avvio della workstation.
  3. Esegui l'override di ENTRYPOINT nel Dockerfile per personalizzare completamente l'avvio del container.

Esempi di Dockerfile personalizzati

Questa sezione fornisce scenari di esempio e istruzioni per creare i tuoi Dockerfiles.

Immagine container con emacs preinstallato

Per creare un'immagine container con emacs preinstallato, esegui i seguenti comandi:

FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest

RUN sudo apt update
RUN sudo apt install -y emacs

Immagine container con personalizzazione dell'utente

Per personalizzare un'immagine container:

  1. Crea uno script in /etc/workstation-startup.d/* che viene eseguito dopo 010_add-user.sh, ad esempio 011_customize-user.sh:

    #!/bin/bash
    # Create new group
    groupadd $GROUP
    # Add the user to a new group
    usermod -a -G $GROUP $USERNAME
    

    Sostituisci $GROUP con il nuovo nome del gruppo e $USERNAME con il nome utente dell'utente.

  2. Supponendo che tu abbia chiamato lo script 011_customize-user.sh, aggiungi quanto segue all'immagine nel Dockerfile e rendilo eseguibile:

    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
    

Immagine container che imposta le variabili di ambiente del container nelle sessioni SSH

Le variabili di ambiente impostate a livello di configurazione della workstation o di workstation vengono trasmesse ai sottoprocessi diretti utilizzando il comando entrypoint. Ciò include l'IDE nelle immagini di base preconfigurate. Tuttavia, le sessioni SSH non sono processi secondari del punto di ingresso e non hanno impostate queste variabili di ambiente personalizzate.

Per impostare queste variabili di ambiente nelle sessioni SSH, configura un'immagine container personalizzata che trasmetta queste variabili di ambiente dal comando di punto di ingresso del container al file /etc/environment.

Per farlo, segui questi passaggi:

  1. Crea uno script in /etc/workstation-startup.d/* che viene eseguito dopo 010_add-user.sh, ad esempio 011_add-ssh-env-variables.sh:

    #!/bin/bash
    #
    echo "CUSTOM_ENV_VAR=$CUSTOM_ENV_VAR" >> /etc/environment
    

    Sostituisci CUSTOM_ENV_VAR con il nome della variabile di ambiente prevista.

  2. Supponendo che tu abbia chiamato lo script 011_add-ssh-env-variables.sh, aggiungi quanto segue all'immagine nel Dockerfile e rendilo eseguibile:

    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
    

Immagine container che consente l'inoltro X11 per le sessioni SSH

L'inoltro X11 ti consente di avviare applicazioni remote e inoltrare la visualizzazione dell'applicazione a una macchina locale.

Per creare un'immagine container che consenta l'inoltro X11, modifica il file di configurazione del daemon OpenSSH (/etc/ssh/sshd_config) fornito dalle immagini di base di Cloud Workstations aggiungendo X11Forwarding yes (per consentire l'inoltro X11) e AddressFamily inet (per garantire che venga utilizzato solo IPv4). Per saperne di più su queste parole chiave, consulta le pagine web di OpenBSD su AddressFamily e X11Forwarding.

Ecco un Dockerfile di esempio che apporta le modifiche necessarie:

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

Copia Code OSS per Cloud Workstations in un'altra immagine container

Una build in più fasi ti consente di utilizzare più istruzioni FROM nel Dockerfile. Ogni istruzione FROM può utilizzare una base diversa e consente di copiare gli artefatti tra le fasi di build. Per aggiungere Code OSS per Cloud Workstations a un'altra immagine container, utilizza una build in più fasi per copiare la cartella dell'applicazione /opt/code-oss nell'immagine. Se vuoi avviare Code OSS per Cloud Workstations al momento dell'avvio del container, copia anche lo script /etc/workstation-startup.d/110_start-code-oss.sh nel container.

Ecco un Dockerfile di esempio che copia Code OSS nell'immagine JetBrains IntelliJ Ultimate. A questo punto puoi interagire con uno dei due IDE:

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"]

Immagine container che preinstalla le estensioni IDE in Code OSS per Cloud Workstations per lo sviluppo Java

Per creare un'immagine container che preinstalli le estensioni IDE in Code OSS per Cloud Workstations per lo sviluppo Java al momento della creazione, esegui i seguenti comandi:

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/

Se pre-installi le estensioni, queste vengono considerate estensioni integrate. Non potrai aggiornare queste estensioni e potrebbero non essere visualizzate nella sezione installata del Marketplace delle estensioni. Tuttavia, puoi trovare le estensioni integrate cercando @builtin.

Un altro modo per installare le estensioni all'avvio è eseguire uno script di avvio. Ad esempio, includi il seguente script di avvio in /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

Utilizzando questo metodo, l'estensione viene visualizzata in Extensions Marketplace e puoi eseguire l'aggiornamento da lì.

Installare IDE e plug-in JetBrains nelle immagini di base

Quando personalizzi le immagini Docker per le configurazioni delle workstation, puoi installare IDE e plug-in JetBrains, ad esempio Cloud Code for IntelliJ, nell'immagine di base. Le immagini di base di Cloud Workstations per i prodotti JetBrains includono i seguenti script per aiutarti a:

  • jetbrains-installer.sh: installa gli IDE JetBrains
  • plugin-installer.sh: installa plug-in, ad esempio Cloud Code for IntelliJ

Utilizza questi script in base alle necessità per personalizzare l'immagine di base, per chiamarli con uno script di avvio o per eseguirli dopo l'avvio della workstation.

Script del programma di installazione

Per visualizzare i file di origine degli script jetbrains-installer.sh e plugin-installer.sh, avvia una workstation utilizzando una configurazione della workstation che utilizza una delle immagini predefinite di JetBrains, connettiti alla workstation tramite JetBrains Gateway o SSH e poi sfoglia i file di script nella directory installer-scripts, che si trova nella directory principale.

Ti consigliamo di eseguire questi script durante la creazione del container. Evita di eseguirli in una workstation già avviata.

Utilizza lo script di installazione del plug-in

Lo script plugin-installer.sh utilizza la seguente sintassi:

plugin-installer.sh [-v VERSION] [-d DESTINATION-DIRECTORY] [-c CHECKSUM] [-f] PLUGIN_ID

Sostituisci quanto segue:

  • VERSION: numero di versione facoltativo del plug-in da installare.
  • DESTINATION-DIRECTORY: directory facoltativa in cui deve essere installato il plug-in. Se non specificata, viene utilizzata la directory di lavoro.
  • CHECKSUM: checksum SHA-256 facoltativo del plug-in richiesto.
  • -f: se specificato, qualsiasi plug-in esistente verrà sovrascritto.
  • PLUGIN_ID: l'identificatore numerico del plug-in richiesto dal marketplace JetBrains. Ad esempio, per aggiungere Dart utilizza 6351 come PLUGIN_ID. Per aggiungere Cloud Code for IntelliJ, utilizza 8079 come PLUGIN_ID.

Ad esempio, per installare l'ultima versione del plug-in Dart in IntelliJ, esegui questo comando:

/installer-scripts/plugin-installer.sh -d /opt/ideaIU/plugins/ 6351

Utilizza lo script di installazione di JetBrains

Ti consigliamo di utilizzare lo script di installazione di JetBrains quando estendi un'immagine di base preconfigurata per gli IDE JetBrains.

Lo script jetbrains-installer.sh utilizza la seguente sintassi:

jetbrains-installer.sh IDE [ pinned|latest ]

Sostituisci quanto segue:

  • IDE: l'IDE JetBrains da installare. Devi utilizzare una delle seguenti abbreviazioni IDE:

    IDE Prodotto installato
    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 Motociclista
    rider Motociclista
    rm RubyMine
    rubymine RubyMine
    ws WebStorm
    webstorm WebStorm
  • pinned|latest: (facoltativo) utilizza la versione bloccata o più recente dell'IDE. Il valore predefinito è latest.

Ad esempio, per installare l'ultima versione di Clion, esegui questo comando:

/installer-scripts/jetbrains-installer.sh clion

Personalizza i file di configurazione dell'IDE JetBrains

Se nella configurazione delle workstation è specificata una home directory persistente, le immagini di base di Cloud Workstations con gli IDE JetBrains rendono automaticamente persistenti i file di configurazione $IDE.vmoptions e $IDE.properties. Per ignorare la posizione predefinita di questi file, specifica la variabile di ambiente CLOUD_WORKSTATIONS_JETBRAINS_PERISTED_CONFIG_DIR.

Per saperne di più, consulta /etc/workstation-startup.d/120_persist-jetbrains-configs.sh in qualsiasi immagine di base JetBrains per scoprire come Cloud Workstations configura questa impostazione per impostazione predefinita.

Estendere un'immagine Docker di base con Cloud Code for IntelliJ

Il seguente snippet di Dockerfile estende un'immagine Docker di base con Cloud Code per IntelliJ includendo 8079 come identificatore del plug-in richiesto. L'esempio specifica anche facoltativamente version 22.9.3-222 come numero di versione, /opt/ideaIU/plugins/ come directory di destinazione e 89628279ed9042c526a81facc09bf53f8fb8b83b4595b0d329d94c1611e0c379 come checksum:

...
# 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
...

Installare estensioni IDE aggiuntive in Code OSS per Cloud Workstations

Trova altre estensioni IDE nel registro Open VSX. Puoi anche trovare l'URL del file .vsix copiando l'URL dal link Download per qualsiasi estensione.

Apri la pagina VSX per l&#39;estensione del linguaggio Go che mostra il pulsante Download.

Se apri il Marketplace di estensioni da una workstation, viene visualizzato Installa anziché Scarica.

Impostazioni predefinite di Code OSS per Cloud Workstations

Per informazioni dettagliate sull'archiviazione delle impostazioni in Code OSS per Cloud Workstations, vedi Personalizzare le impostazioni.

Se specifichi una home directory permanente nella configurazione delle workstation, puoi configurare le impostazioni predefinite per Code OSS per Cloud Workstations aggiungendo uno script di avvio che scrive le impostazioni in $HOME/.codeoss-cloudworkstations/data/Machine/settings.json.

Ad esempio, se vuoi impostare il tema di colore predefinito su Scuro, estendi l'immagine dell'editor di base in modo da includere il seguente script in /etc/workstation-startup.d/150_default-ide-color-theme.sh

cat <<< $(jq '. += {"workbench.colorTheme": "Default Dark Modern"}' settings.json) > settings.json

Crea un'immagine container personalizzata

Per informazioni dettagliate sui comandi Docker, consulta il riferimento a Docker. Inserisci il comando seguente per creare il container:

docker build CUSTOM_IMAGE_FOLDER -t TARGET_IMAGE

Tieni presente che la sostituzione del testo che precede l'icona Modifica Modifica aggiorna gli altri esempi in questa pagina.

Sostituisci quanto segue:

  • CUSTOM_IMAGE_FOLDER: il percorso della cartella che hai creato per archiviare l'immagine personalizzata.
  • TARGET_IMAGE: il percorso dell'immagine in Artifact Registry.

    Ad esempio, TARGET_IMAGE potrebbe puntare a un percorso dell'immagine di destinazione simile al seguente:

    *.pkg.dev/cloud-workstations-external/customimage:latest
    

    Sostituisci * in base alle esigenze con il nome della regione e eventuali identificatori aggiuntivi.

Puoi anche aggiornare la variabile di ambiente CLOUD_WORKSTATIONS_CUSTOM_IMAGE in modo che punti al repository.

Per ulteriori informazioni sull'archiviazione delle immagini Docker in Artifact Registry, consulta le seguenti sezioni:

Ospitare l'immagine container personalizzata

Per ospitare immagini container personalizzate, consigliamo e supportiamo Artifact Registry. Se utilizzi GitHub o qualsiasi altro repository pubblico o privato, Cloud Workstations potrebbe non funzionare come previsto. Per saperne di più, consulta la nota importante nella sezione Utilizzare un'immagine container personalizzata.

Testare l'immagine container personalizzata

Una volta completata la creazione del container, puoi testarlo con il seguente comando:

docker run --privileged -p LOCAL_PORT:CONTAINER_PORT TARGET_IMAGE

Sostituisci quanto segue:

  • LOCAL_PORT: il numero di porta locale
  • CONTAINER_PORT: il numero di porta del container

Ad esempio, la sostituzione di LOCAL_PORT:CONTAINER_PORT con 8080:80 assegna la porta 8080 per l'utilizzo locale e la porta 80 per l'utilizzo nel container.

Se stai estendendo l'immagine dell'editor di base di Cloud Workstations, esegui il comando docker e poi testa l'immagine della workstation connettendoti alla workstation tramite il browser locale o eseguendo ssh per connetterti al container:

  • Se ti connetti tramite il browser, assicurati di passare -p 8080:80 al comando docker run e poi apri localhost:8080.
  • Se preferisci connetterti tramite SSH, assicurati di passare -p 2222:22 al comando docker run e poi esegui ssh user@localhost -p 2222.

Utilizzare un'immagine container personalizzata

Per utilizzare l'immagine container personalizzata dopo averla creata e testata localmente, esegui il push del container in Artifact Registry con il seguente comando:

docker push TARGET_IMAGE

Ora puoi creare una configurazione della workstation utilizzando l'immagine container che hai appena creato e di cui hai eseguito il push.

Per saperne di più, vedi Creare un repository Docker con Artifact Registry.

Eseguire il debug di problemi.

Per trovare ed eseguire il debug dei problemi durante l'esecuzione dell'immagine container, esamina i log di output del container delle workstation in esecuzione.

Sei responsabile della manutenzione e dell'aggiornamento dei pacchetti personalizzati e delle dipendenze aggiunte alle immagini personalizzate.

Se crei immagini personalizzate, ti consigliamo di:

Passaggi successivi