As imagens de base pré-configuradas fornecidas pelo Cloud Workstations contêm apenas um ambiente mínimo com ambiente de desenvolvimento integrado, ferramentas básicas de terminal e linguagem do Linux e um servidor sshd
. Para agilizar a
configuração do ambiente de casos de uso de desenvolvimento específicos, é possível criar imagens de contêiner
personalizadas que estendam essas imagens de base para pré-instalar ferramentas e
dependências e que executem scripts de automação.
Para imagens de contêiner personalizadas, recomendamos configurar um pipeline para recriar automaticamente essas imagens quando a imagem base do Cloud Workstations for atualizada, além de executar uma ferramenta de verificação de contêiner, como o Artifact Analysis, para inspecionar outras dependências adicionadas. Você é responsável por manter e atualizar as dependências e os pacotes personalizados adicionados às imagens personalizadas.
Antes de começar
Você precisa de uma máquina com ferramentas para criar imagens de contêiner, como o Docker, e para enviar imagens para o Artifact Registry (ou Container Registry) usando a Google Cloud CLI. É possível usar o Cloud Workstations ou o Cloud Shell Editor para executar essas etapas, que têm essas ferramentas pré-instaladas.
Selecione qual imagem de base você quer usar na nossa lista de imagens de base compatíveis, como
us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
.Também é possível usar sua própria imagem de contêiner ou usar imagens de contêiner externas seguindo as instruções para Usar sua própria imagem de contêiner.
Crie uma pasta como
CUSTOM_IMAGE_FOLDER
e um Dockerfile dentro dessa pasta estendendo a imagem de base selecionada, conforme mostrado nos exemplos a seguir.
Estrutura da imagem base do Cloud Workstations
As imagens de base do Cloud Workstations compartilham a seguinte estrutura definida:
- O arquivo de ponto de entrada da imagem 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çosshd
no contêiner.110_start-$IDE.sh
: inicia o ambiente de desenvolvimento integrado para a imagem.
O Cloud Workstations armazena imagens do Docker no diretório principal em
/home/.docker_data
para que elas sejam preservadas entre as sessões.
Para adicionar outras funcionalidades durante a inicialização da estação de trabalho, adicione seus scripts no
diretório /etc/workstation-startup.d/
:
Os scripts neste 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.
Modificações no diretório principal
Quando a configuração da estação de trabalho especifica um diretório inicial permanente (que é o comportamento padrão), um disco permanente que apoia o diretório principal é dinamicamente anexado 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 do tempo de compilação que precisam ser migrados para o ambiente de execução do contêiner:
- Configuração do
git
por usuário git
repositórios 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 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 para execução 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 chaves APT seguras pré-configuradas
As imagens de base do Cloud Workstations vêm pré-instaladas com várias ferramentas
recebidas de vários repositórios de terceiros que usam 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 apt
verifique a integridade de um determinado repositório ao
interagir com ele.
Às vezes, os proprietários de repositórios de terceiros podem mudar a chave pública
usada para validar a integridade do repositório, o que faz com que apt
exiba um erro ao interagir com ele. Para resolver esse possível problema,
você pode usar /google/scripts/refresh-preinstalled-apt-keys.sh
, que
recebe as versões mais recentes das chaves públicas pré-instaladas e as importa novamente.
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
conveniência, consulte o script /google/scripts/preinstalled-ide-versions.sh
incluído, que lista as informações de nome e versão dos ambientes de desenvolvimento integrado
instalados na imagem.
Desativar sudo
privilégios raiz
O usuário padrão da estação de trabalho tem sudo
privilégios de acesso raiz 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 por meio do 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, conclua a configuração das informações básicas e 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 AdicionarAdicionar variável.
- Insira
CLOUD_WORKSTATIONS_CONFIG_DISABLE_SUDO
etrue
como o valor.
Usar sua própria imagem de contêiner
Você também pode usar sua própria imagem de contêiner ou imagens de contêiner externas, desde que elas sejam baseadas em Linux e executem um processo de bloqueio quando o contêiner for iniciado.
Ao configurar o Dockerfile, a instrução ENTRYPOINT
precisa executar um processo de bloqueio, como sleep infinity
, para que o contêiner continue em execução, em vez de sair imediatamente. Como alternativa, na configuração da estação de trabalho,
é possível definir o campo config.container.args
para especificar um
processo de bloqueio.
Ao usar sua própria imagem de contêiner, observe o seguinte:
O Cloud Workstations não requer scripts extras da imagem base do Cloud Workstations.
No entanto, é possível consultar os scripts no diretório
/etc/workstation-startup.d/
em um contêiner que executa a imagem base do Cloud Workstations. Os nomes dos arquivos indicam o que cada script faz.Recomendamos executar um servidor SSH no contêiner. Consulte
/etc/workstation-startup.d/020_start-sshd.sh
na imagem base padrão para saber como o Cloud Workstations configura isso por padrão.Recomendamos executar o ambiente de desenvolvimento integrado ou o servidor da Web padrão na porta
80
.
Ampliar imagens base do Cloud Workstations
Ao estender uma imagem base do Cloud Workstations para criar uma imagem personalizada para o ambiente da estação de trabalho, é possível adotar três abordagens:
- Atualize o
Dockerfile
para incluir outros recursos estáticos que você quiser adicionar. - Adicione outros arquivos executáveis em
/etc/workstation-startup.d/
para personalizar o contêiner em execução. Os arquivos nesse diretório são executados automaticamente em ordem lexicográfica na inicialização do contêiner. Dessa forma, é possível prefixar o nome do arquivo para executá-lo no momento apropriado durante a inicialização da estação de trabalho. - Substitua
ENTRYPOINT
no seu Dockerfile para personalizar totalmente a inicialização do contêiner.
Exemplos de Dockerfiles personalizados
Nesta seção, fornecemos cenários de exemplo e instruções para criar seus próprios Dockerfiles.
Imagem de contêiner com emacs
pré-instalado
Para criar uma imagem de contêiner com emacs
pré-instalado, execute os seguintes
comandos:
FROM us-central1-docker.pkg.dev/cloud-workstations-images/predefined/code-oss:latest
RUN sudo apt update
RUN sudo apt install -y emacs
Imagem de contêiner com personalização do usuário
Siga estas etapas para personalizar uma imagem de contêiner:
Crie um script em
/etc/workstation-startup.d/*
que seja executado após010_add-user.sh
, por exemplo,011_customize-user.sh
:#!/bin/bash # Create new group groupadd $GROUP # Add the user to a new group usermod -a -G $GROUP $USERNAME
Substitua
$GROUP
pelo novo nome do grupo e$USERNAME
pelo nome de usuário do usuário.Supondo que você nomeou seu script como
011_customize-user.sh
, adicione o seguinte à sua imagem no Dockerfile e torne-a executável: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
Imagem de contêiner que define variáveis de ambiente de contêiner em sessões SSH
As variáveis de ambiente definidas na configuração ou no nível da estação de trabalho são transmitidas para subprocessos diretos usando o comando entrypoint. Isso inclui o IDE nas imagens de base pré-configuradas. No entanto, as sessões SSH não são processos filhos do ponto de entrada e não têm essas variáveis de ambiente personalizadas definidas.
Para definir essas variáveis de ambiente nas sessões SSH, configure uma imagem de contêiner personalizada que redirecione essas variáveis de ambiente do comando de ponto de entrada do contêiner para o arquivo /etc/environment
.
Para isso, siga estas etapas:
Crie um script em
/etc/workstation-startup.d/*
que seja executado após010_add-user.sh
, por exemplo,011_add-ssh-env-variables.sh
:#!/bin/bash # echo "CUSTOM_ENV_VAR=$CUSTOM_ENV_VAR" >> /etc/environment
Substitua
CUSTOM_ENV_VAR
pelo nome da variável de ambiente pretendida.Supondo que você nomeou seu script como
011_add-ssh-env-variables.sh
, adicione o seguinte à sua imagem no Dockerfile e torne-a executável: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
Imagem de contêiner que ativa o encaminhamento X11 para sessões SSH
Com o encaminhamento X11, é possível iniciar aplicativos remotos e encaminhar a tela do aplicativo para uma máquina local.
Para criar uma imagem de contêiner que permita o encaminhamento X11, modifique o arquivo de configuração
do daemon OpenSSH (/etc/ssh/sshd_config
) fornecido pelas imagens base do Cloud Workstations
anexando X11Forwarding yes
(para permitir o encaminhamento X11) e AddressFamily inet
(para garantir que somente IPv4 seja usado). Para mais informações sobre essas palavras-chave, consulte as páginas da Web do OpenBSD sobre AddressFamily
e X11Forwarding
(links em inglês).
Veja aqui um exemplo de Dockerfile, que faz as modificações necessárias:
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 código OSS para Cloud Workstations em outra imagem de contêiner
Um build de vários estágios permite que você use várias instruções FROM
no Dockerfile. Cada instrução FROM
pode usar uma base diferente e permite
copiar artefatos entre os estágios de compilação. Para adicionar o Code OSS for Cloud Workstations a
outra imagem de contêiner, use um build de vários estágios para copiar a pasta do aplicativo
/opt/code-oss
para a imagem. Se você quiser iniciar o Code OSS para Cloud Workstations
no momento da inicialização do contêiner, copie o script /etc/workstation-startup.d/110_start-code-oss.sh
para ele.
Veja um exemplo de Dockerfile que copia o Code OSS na imagem final do JetBrains IntelliJ. Depois, interaja com qualquer um dos ambientes de desenvolvimento integrado:
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"]
Imagem de contêiner que pré-instala extensões de ambiente de desenvolvimento integrado no Code OSS para Cloud Workstations para desenvolvimento em Java
Para criar uma imagem de contêiner que pré-instala extensões de ambiente de desenvolvimento integrado no Code OSS para Cloud Workstations para desenvolvimento em Java no momento da criação, execute os seguintes 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
Se você pré-instalar extensões, elas serão consideradas extensões integradas.
Não será possível atualizar essas extensões, e elas podem não aparecer na
seção de instalações no
Extensions Marketplace.
No entanto, você pode encontrar suas extensões integradas pesquisando @builtin
.
Outra maneira de instalar extensões na inicialização é executar um
script de inicialização.
Por exemplo, inclua o seguinte script de inicialização em
/etc/workstation-startup.d/120_install_extensions.sh
:
/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
Ao usar esse método, a extensão aparece no , no Marketplace de extensões e pode ser atualizada a partir daí.
Instalar ambientes de desenvolvimento integrado e plug-ins da JetBrains em imagens de base
Ao personalizar as imagens do Docker para configurações da estação de trabalho, é possível instalar os ambientes de desenvolvimento integrado e plug-ins da JetBrains, como o Cloud Code para IntelliJ, na imagem base. As imagens base do Cloud Workstations para produtos do JetBrains incluem os seguintes scripts para ajudar você:
jetbrains-installer.sh
: instalar os ambientes de desenvolvimento integrado do JetBrainsplugin-installer.sh
: instala plug-ins, como o Cloud Code para IntelliJ.
Use esses scripts conforme necessário para personalizar a imagem de base, chamá-los com um script de inicialização ou executá-los depois de iniciar a estação de trabalho.
Scripts do instalador
Para visualizar os arquivos de origem dos scripts jetbrains-installer.sh
e
plugin-installer.sh
, inicie uma estação de trabalho usando uma configuração
de estação de trabalho que use uma das imagens predefinidas do JetBrains, conecte-se à
estação de trabalho pelo JetBrains Gateway ou SSH e navegue
pelos arquivos de script no diretório installer-scripts
, localizado no
diretório raiz.
Recomendamos que você execute esses scripts no momento da criação do contêiner. Evite executá-las em uma estação de trabalho já iniciada.
Usar o script de instalação do plug-in
O script plugin-installer.sh
usa a seguinte sintaxe:
plugin-installer.sh [-v VERSION] [-d DESTINATION-DIRECTORY] [-c CHECKSUM] [-f] PLUGIN_ID
Substitua:
VERSION
: número da versão opcional do plug-in a ser instalado.DESTINATION-DIRECTORY
: diretório opcional em que o plug-in precisa ser instalado. Se não for especificado, o diretório de trabalho será usado.CHECKSUM
: soma de verificação SHA-256 opcional do plug-in solicitado.-f
: se especificado, qualquer plug-in atual será substituído.PLUGIN_ID
: o identificador numérico de plug-in necessário do marketplace do JetBrains. Por exemplo, para adicionar o Dart, use6351
como PLUGIN_ID. Para adicionar o Cloud Code for IntelliJ, use8079
como PLUGIN_ID.
Por exemplo, para instalar a versão mais recente do plug-in Dart no IntelliJ, execute o seguinte comando:
plugin-installer.sh -d /opt/ideaIU/plugins/ 6351
Usar o script de instalação do JetBrains
Recomendamos que você use o script de instalação do JetBrains ao estender uma imagem de base pré-configurada para ambientes de desenvolvimento integrado do JetBrains.
O script jetbrains-installer.sh
usa a seguinte sintaxe:
jetbrains-installer.sh IDE [ pinned|latest ]
Substitua:
IDE
: o ambiente de desenvolvimento integrado do JetBrains a instalar. Use uma das seguintes abreviações de ambiente de desenvolvimento integrado:IDE Produto instalado cl
CLion clion
CLion go
GoLand goland
GoLand iiu
Intellij Ultimate intellij
Intellij Ultimate pcp
Profissional de PyCharm pycharm
Profissional de PyCharm ps
PHPStorm phpstorm
PHPStorm rd
Rider rider
Rider rm
RubyMine rubymine
RubyMine ws
WebStorm webstorm
WebStorm pinned|latest
(opcional): use a versão fixada ou mais recente do ambiente de desenvolvimento integrado. O padrão élatest
.
Por exemplo, para instalar a versão mais recente do Clion, execute o seguinte comando:
jetbrains-installer.sh clion
Personalizar arquivos de configuração do ambiente de desenvolvimento integrado do JetBrains
Se um diretório principal permanente for especificado na configuração
das estações de trabalho, as imagens base do Cloud Workstations com os ambientes de desenvolvimento integrado do JetBrains
permanecerão automaticamente nos arquivos de configuração $IDE.vmoptions
e $IDE.properties
. Para substituir o local padrão desses arquivos, especifique a variável de ambiente CLOUD_WORKSTATIONS_JETBRAINS_PERISTED_CONFIG_DIR
.
Para mais informações, consulte
/etc/workstation-startup.d/120_persist-jetbrains-configs.sh
em qualquer
imagem base do JetBrains (link em inglês) para saber
como o Cloud Workstations configura isso por padrão.
Estender uma imagem base do Docker com o Cloud Code for IntelliJ
O snippet do Dockerfile a seguir estende uma imagem de base do Docker com o Cloud Code for IntelliJ incluindo 8079
como o identificador de plug-in necessário.
O exemplo também especifica opcionalmente version 22.9.3-222
como o número da
versão, /opt/ideaIU/plugins/
como o diretório de destino e
89628279ed9042c526a81facc09bf53f8fb8b83b4595b0d329d94c1611e0c379
como a
soma de verificação:
...
# 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
...
Instale mais extensões de ambiente de desenvolvimento integrado no Code OSS para Cloud Workstations
Encontre mais extensões do ambiente de desenvolvimento integrado no
Open VSX Registry.
Também é possível encontrar o URL do arquivo .vsix
copiando o URL do link Fazer o download de qualquer extensão.
Se você abrir o Extensions Marketplace do em uma estação de trabalho, vai aparecer Instalar em vez de Fazer download.
Configurações padrão do OSS de código para o Cloud Workstations
Para informações detalhadas sobre o armazenamento de configurações no Code OSS para Cloud Workstations, consulte Personalizar configurações.
Se você especificar um diretório principal persistente na configuração das estações de trabalho,
poderá definir as configurações padrão do Code OSS para Cloud Workstations adicionando um
script de inicialização
que grava as configurações em
$HOME/.codeoss-cloudworkstations/data/Machine/settings.json
.
Por exemplo, se você quiser definir o tema de cores padrão como escuro, estenda a imagem
do editor de base para incluir o script a seguir em
/etc/workstation-startup.d/150_default-ide-color-theme.sh
.
cat <<< $(jq '. += {"workbench.colorTheme": "Default Dark Modern"}' settings.json) > settings.json
Criar uma imagem de contêiner personalizada
Para informações detalhadas sobre os comandos do Docker, consulte a referência do Docker. Digite o seguinte comando para criar o contêiner:
docker build CUSTOM_IMAGE_FOLDER -t TARGET_IMAGE
Substituir o texto que precede o ícone editar Editar atualiza os outros exemplos nesta página.
Substitua:
CUSTOM_IMAGE_FOLDER
: o caminho para a pasta que você criou para armazenar a imagem personalizada.TARGET_IMAGE
: o caminho para a imagem no Artifact Registry (ou no Container Registry).Por exemplo,
TARGET_IMAGE
pode apontar para um caminho da imagem de destino semelhante a um dos seguintes caminhos:*.pkg.dev/cloud-workstations-external/customimage:latest *.gcr.io/cloud-workstations-external/customimage:latest
Substitua * conforme necessário pelo nome da região e outros identificadores.
Também é possível atualizar a variável de ambiente CLOUD_WORKSTATIONS_CUSTOM_IMAGE
para apontar para o repositório.
Para mais informações sobre como armazenar imagens do Docker no Artifact Registry, consulte as seções a seguir:
- Como criar um repositório do Docker com o Artifact Registry.
- Convenções de nomenclatura para nomes de repositórios e imagens.
Hospedar sua imagem de contêiner personalizada
Para hospedar imagens de contêiner personalizadas, recomendamos e oferecemos suporte ao Artifact Registry. Se você usa o GitHub ou qualquer outro repositório público ou privado, o Cloud Workstations pode não funcionar como esperado. Para mais informações, consulte a observação importante na seção Usar uma imagem de contêiner personalizada.
Testar sua imagem de contêiner personalizada
Depois que o contêiner terminar a criação, teste-o com o seguinte comando:
docker run --privileged -p LOCAL_PORT:CONTAINER_PORT TARGET_IMAGE
Substitua:
LOCAL_PORT
: o número da porta localCONTAINER_PORT
: o número da porta do contêiner.
Por exemplo, a substituição de
LOCAL_PORT
:CONTAINER_PORT
por
8080
:80
atribui a porta 8080
para uso local e a porta 80
para uso no
contêiner.
Se você estiver estendendo a imagem do editor base do Cloud Workstations, execute o comando docker
e teste a imagem da estação de trabalho conectando-se a ela por meio do navegador local ou executando ssh
para se conectar ao contêiner:
- Se você se conectar pelo navegador, transmita
-p 8080:80
para o comandodocker run
e abralocalhost:8080
. - Se preferir se conectar por SSH, transmita
-p 2222:22
ao comandodocker run
e executessh user@localhost -p 2222
.
Usar uma imagem de contêiner personalizada
Para usar a imagem de contêiner personalizada depois de criar e testar localmente, envie seu contêiner para o Artifact Registry (ou o Container Registry) com o seguinte comando:
docker push TARGET_IMAGE
Agora é possível criar uma configuração de estação de trabalho usando a imagem de contêiner que você acabou de criar e enviar.
Para mais informações, consulte Criar um repositório do Docker com o Artifact Registry.
Depurar problemas
Para localizar e depurar problemas na execução da imagem de contêiner, analise os registros de saída do contêiner das estações de trabalho em execução.
Recomendado: ajudar a proteger o pipeline de imagem
Você é responsável por manter e atualizar os pacotes e dependências personalizados adicionados às imagens personalizadas.
Se você criar imagens personalizadas, recomendamos o seguinte:
Ajude a proteger o pipeline de imagem recriando automaticamente essas imagens quando a imagem base do Cloud Workstations for atualizada.
Execute uma ferramenta de verificação de contêiner, como o Artifact Analysis, para inspecionar outras dependências adicionadas.
Programe builds para recriar imagens semanalmente ou aprenda a automatizar recriações de imagens de contêiner.
A seguir
- Automatize as recriações de imagens de contêiner para sincronizar as atualizações da imagem base usando o Cloud Build e o Cloud Scheduler.
- Configurar práticas recomendadas de segurança.
- Saiba mais sobre o Artifact Analysis.