Pode executar um único contentor numa VM ou em cada VM num grupo de instâncias geridas (GIG). Para o fazer, especifique uma imagem de contentor e parâmetros de configuração quando criar uma instância de VM ou um modelo de instância.
Este documento descreve as opções de configuração para executar contentores em instâncias do Compute Engine.
Antes de começar
- Se não tiver experiência com contentores, leia o artigo Contentores no Compute Engine.
- Se não conhece o Docker, leia a documentação do Docker.
- Leia sobre a implementação de contentores no Compute Engine.
-
Se ainda não o tiver feito, configure a autenticação.
A autenticação valida a sua identidade para aceder a Trusted Cloud by S3NS serviços e APIs. Para executar código ou exemplos a partir de um ambiente de desenvolvimento local, pode autenticar-se no Compute Engine selecionando uma das seguintes opções:
Select the tab for how you plan to use the samples on this page:
Console
When you use the Trusted Cloud console to access Trusted Cloud by S3NS services and APIs, you don't need to set up authentication.
gcloud
-
Instale a CLI Google Cloud e, em seguida, inicie sessão na CLI gcloud com a sua identidade federada. Depois de iniciar sessão, inicialize a CLI gcloud executando o seguinte comando:
gcloud init
- Set a default region and zone.
Quando cria uma instância ou um modelo de instância para usar na Implementação de contentores em VMs e MIGs, especifique a configuração do contentor através da Trusted Cloud consola ou da CLI do Google Cloud.
As secções seguintes descrevem como configurar contentores em instâncias de VM, mas também pode configurar as seguintes opções quando cria um modelo de instância. Use a Trusted Cloud consola ou a Google Cloud CLI para configurar opções para instâncias de VM num modelo de instância.
Pode usar os comandos
docker run
para configurar um contentor numa instância de VM que esteja a executar o SO otimizado para contentores ou especificar o comandodocker run
num script de arranque para criar e configurar uma VM. Para mais informações, consulte o artigo Use scripts de arranque para implementar contentores em VMs.Especificar uma política de reinício
Pode definir uma política de reinício para especificar se um contentor deve ser reiniciado ao sair. A política predefinida é reiniciar sempre. Também pode definir a política para reiniciar em caso de falha ou para nunca reiniciar.
docker run
Use a flag
--restart
do comandodocker run
. As tentativas repetidas de reiniciar um contentor são determinadas pelo comportamento predefinido do Docker, conforme especificado na referência do Docker--restart
.Consola
Aceda à página Criar uma instância.
Na secção Contentor, clique em Implementar contentor.
Na página Configurar contentor, faça o seguinte:
- Especifique um nome de imagem de contentor.
- Na secção Política de reinício, selecione a política de reinício para o contentor.
- Para confirmar os detalhes do contentor, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use o sinalizador
--container-restart-policy
para especificar uma política de reinício do contentor:always
(predefinição)on-failure
never
O exemplo seguinte inicia um contentor com a política de reinício
on-failure
, o que significa que o reinício só ocorre quando o código de saída do contentor é diferente de zero:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-restart-policy on-failure
Use o comando
gcloud compute instances update-container
com a flag--container-restart-policy
para a política de reinício num contentor em execução numa VM.Executar um contentor no modo privilegiado
Pode executar um contentor no modo privilegiado para permitir o acesso a todos os dispositivos no anfitrião. Os contentores são executados como "sem privilégios" por predefinição e não têm autorização para aceder a dispositivos.
docker run
Use a flag
--privileged
do comandodocker run
. Para mais informações, consulte o artigo Privilégio de tempo de execução e capacidades do Linux.Consola
Aceda à página Criar uma instância.
Na secção Contentor, clique em Implementar contentor.
Na página Configurar contentor, faça o seguinte:
- Especifique um nome de imagem de contentor.
- Selecione Executar como privilegiado.
- Para confirmar os detalhes do contentor, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a flag
--container-privileged
para executar um contentor com privilégios de tempo de execução. O exemplo seguinte inicia um contentor busybox no modo privilegiado:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-privileged
Use o comando
gcloud compute instances update-container
com a flag--container-privileged
para atualizar um contentor numa VM. Use a flag--no-container-privileged
para desativar o modo privilegiado.Alocar um buffer para STDIN no tempo de execução do contentor
Pode atribuir um buffer para
STDIN
no tempo de execução do contentor para manter o fluxoSTDIN
aberto num contentor. Se esta opção não estiver definida, as leituras deSTDIN
no contentor resultam sempre emEOF
.Além de atribuir um pseudo-TTY, manter o fluxo
STDIN
aberto é necessário para estabelecer um shell interativo no contentor e para que o contentor receba a respetiva entrada padrão de um pipe.docker run
Use a marca
--interactive
(-i
) do comandodocker run
. Para mais informações, consulte a documentação da flag--interactive
.Consola
Aceda à página Criar uma instância.
Na secção Contentor, clique em Implementar contentor.
Na página Configurar contentor, faça o seguinte:
- Especifique um nome de imagem de contentor.
- Selecione Allocate a buffer for STDIN (Alocar uma memória intermédia para STDIN).
- Para confirmar os detalhes do contentor, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a flag
--container-stdin
para atribuir uma memória intermédia paraSTDIN
no tempo de execução do contentor. O exemplo seguinte inicia um contentor e mantém o respetivoSTDIN
aberto:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin
Use o comando
gcloud compute instances update-container
com a flag--container-stdin
para atualizar um contentor numa VM. Use a flag--no-container-stdin
para desativar a atribuição de um buffer paraSTDIN
.Atribuir um pseudo-TTY
A atribuição de um pseudo-TTY a um contentor é necessária para estabelecer uma shell interativa no contentor (juntamente com a atribuição de um buffer para STDIN).
docker run
Use a flag
--tty (-t)
do comandodocker run
. Para mais informações, consulte a flag--tty
.Consola
Aceda à página Criar uma instância.
Na secção Contentor, clique em Implementar contentor.
Na página Configurar contentor, faça o seguinte:
- Especifique um nome de imagem de contentor.
- Selecione Allocate a pseudo-TTY (Atribuir um pseudo-TTY).
- Para confirmar os detalhes do contentor, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a flag
--container-tty
para atribuir um pseudo-TTY. O exemplo seguinte inicia um contentor e atribui um pseudo-TTY:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin \ --container-tty
Use o comando
gcloud compute instances update-container
com a flag--container-tty
para atualizar um contentor numa VM. Use a flag--no-container-tty
para não atribuir um pseudo-TTY.Substituir o comando predefinido a executar no arranque do contentor
O
ENTRYPOINT
de uma imagem de contentor especifica que ficheiro executável deve ser executado quando o contentor é iniciado e permite-lhe executar o contentor como se fosse esse ficheiro binário.Pode substituir o comando
ENTRYPOINT
da imagem do contentor.docker run
Use a flag
--entrypoint
(apenas comando, sem argumentos) do comandodocker run
. Saiba mais sobre oENTRYPOINT
e a sinalização--entrypoint
.Consola
Aceda à página Criar uma instância.
Na secção Contentor, clique em Implementar contentor.
Na página Configurar contentor, faça o seguinte:
- Especifique um nome de imagem de contentor.
- No campo Comando, introduza um único comando executável sem parâmetros, por exemplo,
uptime
. - Para confirmar os detalhes do contentor, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a flag
--container-command
para substituir a imagem do contentorENTRYPOINT
. O exemplo seguinte executa o comandouptime
num contentor busybox para apresentar o tempo desde o último arranque:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-command "uptime"
Use o comando
gcloud compute instances update-container
com a flag--container-command
para atualizar um comando para um contentor numa VM.Use a flag
--clear-container-command
com o comandoupdate-container
para limpar o comando predefinido do contentor atualizado.Transmitir argumentos para o comando ENTRYPOINT do contentor
Pode transmitir (anexar) argumentos ao comando
ENTRYPOINT
do contentor ou substituir o comandoCMD
do contentor predefinido.Consola
Aceda à página Criar uma instância.
Na secção Contentor, clique em Implementar contentor.
Na página Configurar contentor, faça o seguinte:
- Especifique um nome de imagem de contentor.
- Na secção Argumentos, clique em Adicionar argumento.
- Introduza um argumento de comando para cada caixa.
- Para confirmar os detalhes do contentor, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a flag
--container-arg
para transmitir argumentos a um comando de imagem de contentorENTRYPOINT
. Use uma flag separada para cada argumento.O exemplo seguinte executa o comando
/bin/ash
com os argumentos-c 'ls -l'
num contentor que foi configurado para executar automaticamente o busybox:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-command "/bin/ash" \ --container-arg="-c" \ --container-arg="ls -l"
Use o comando
gcloud compute instances update-container
com as flags--container-arg
para atualizar os argumentos de comando de um contentor em execução numa VM. A atualização substitui toda a lista de argumentos pela nova lista.Use a flag
--clear-container-args
com o comandoupdate-container
para remover todos os argumentos da declaração do contentor.Configurar opções do controlador de registo
Se precisar de configurar opções do controlador de registo, pode criar um script de arranque da VM para atualizar o ficheiro de configuração do Docker com as opções de registo de que precisa. Estas opções aplicam-se a todos os contentores executados na VM e que não especificam opções de controlador de registo.
Por exemplo, o seguinte script de arranque define várias opções, incluindo uma opção para limitar o tamanho do registo do contentor e, em seguida, reinicia o Docker na VM:
cat <<EOF > /etc/docker/daemon.json { "live-restore": true, "storage-driver": "overlay2", "log-opts": { "max-size": "10m" } } EOF systemctl restart docker
Definir variáveis de ambiente
Pode definir variáveis de ambiente num contentor. Só é considerado o último valor de
KEY
quando oKEY
se repete mais do que uma vez.docker run
Use a flag
--env
do comandodocker run
. Saiba como o motor do Docker permite definir variáveis de ambiente.Consola
Aceda à página Criar uma instância.
Na secção Contentor, clique em Implementar contentor.
Na página Configurar contentor, faça o seguinte:
- Especifique um nome de imagem de contentor.
- Na secção Variáveis de ambiente, clique em Adicionar variável.
- Adicione ou remova variáveis de ambiente conforme necessário, uma por linha.
- Para confirmar os detalhes do contentor, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a flag
--container-env
para definir variáveis de ambiente num contentor. O exemplo seguinte define três variáveis de ambiente:HOME
,MODE
eOWNER
:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env HOME=/home,MODE=test,OWNER=admin
Use a flag
--container-env-file
para definir variáveis de ambiente a partir de um ficheiro local. O exemplo seguinte define as duas variáveis de ambiente a partir do ficheiroenv.txt
:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env-file ./env.txt
O conteúdo do ficheiro
env.txt
é:# this is a comment HOME=/home MODE=test OWNER=admin
Use o comando
gcloud compute instances update-container
com a flag--container-env
ou--container-env-file
para atualizar as variáveis de ambiente de um contentor numa VM. Isto atualiza todas as variáveis presentes na declaração do contentor da instância da VM. São adicionadas variáveis que não estão na declaração do contentor.Use a flag
--remove-container-env
para remover variáveis de ambiente quando atualizar um contentor numa VM. O exemplo seguinte remove as variáveis de ambiente denominadasMODE
eOWNER
:gcloud compute instances update-container busybox-vm \ --remove-container-env MODE,OWNER
Se uma variável de ambiente especificada não existir, é ignorada silenciosamente.
Montar um diretório de anfitrião como um volume de dados
Pode montar um diretório de uma VM anfitriã num contentor.
docker run
Use o sinalizador
--volume
e o sinalizador--mount
com a montagemtype=bind
do comandodocker run
. Saiba como o motor do Docker monta um diretório de anfitrião como um volume de dados.Consola
Aceda à página Criar uma instância.
Na secção Contentor, clique em Implementar contentor.
Na página Configurar contentor, faça o seguinte:
- Especifique um nome de imagem de contentor.
- Na secção Montagens de volumes, clique em Adicionar volume.
Na lista Tipo de volume, selecione Diretório e faça o seguinte:
- No campo Caminho de montagem, especifique um caminho de montagem numa estrutura de diretórios do contentor no qual montar um diretório do anfitrião.
- No campo Caminho do anfitrião, especifique um caminho do anfitrião para o diretório do anfitrião a montar.
- Na lista Modo, especifique se quer montar o diretório no modo de leitura/escrita ou só de leitura.
Para confirmar os detalhes do contentor, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a flag
--container-mount-host-path
para montar um diretório de VM de anfitrião num contentor. O exemplo seguinte monta o diretório do anfitrião/tmp
no contentor em/logs
no modo de leitura/escrita:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-mount-host-path mount-path=/logs,host-path=/tmp,mode=rw
Especifique
mode=ro
para montar um diretório de anfitrião no modo de leitura.Use o comando
gcloud compute instances update-container
com a flag--container-mount-host-path
para atualizar as montagens de diretórios de anfitriões num contentor. Use a flag--remove-container-mounts
para remover as montagens de volume com os caminhos de montagem especificados. O exemplo seguinte remove uma montagem de caminho de anfitrião commount-path=/logs
:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /logs
Se o caminho de montagem especificado não existir, é ignorado silenciosamente.
Montar o sistema de ficheiros tmpfs como um volume de dados
Pode montar um sistema de ficheiros tmpfs vazio num contentor.
Um sistema de ficheiros tmpfs vazio é semelhante a um volume
EmptyDir
do Google Kubernetes Engine commedium:Memory
. Ao contrário do Docker, em que os dadostmpfs
são eliminados quando o contentor é reiniciado, com otmpfs
num contentor do Compute Engine, o volume e os respetivos dados persistem nos reinícios do contentor e só são eliminados quando a VM é reiniciada.Consola
Aceda à página Criar uma instância.
Na secção Contentor, clique em Implementar contentor.
Na página Configurar contentor, faça o seguinte:
- Especifique um nome de imagem de contentor.
- Na secção Montagens de volumes, clique em Adicionar volume.
- Na lista Tipo de volume, selecione TmpFS.
- No campo Caminho de montagem, especifique um caminho de montagem numa estrutura de diretórios de contentores onde quer montar um volume TmpFS.
- Na lista Modo, especifique se deve montar o volume TmpFS no modo de leitura/escrita ou apenas de leitura.
- Para confirmar os detalhes do contentor, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use o sinalizador
--container-mount-tmpfs
para montar um sistema de ficheirostmpfs
vazio num contentor. O exemplo seguinte monta um sistema de ficheirostmpfs
no contentor em/cache
no modo de leitura/escrita:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-mount-tmpfs mount-path=/cache
Use o comando
gcloud compute instances update-container
com a flag--container-mount-tmpfs
para atualizar as montagenstmpfs
num contentor. Use a flag--remove-container-mounts
para remover uma montagemtmpfs
com o caminho de montagem especificado durante a atualização. O exemplo seguinte remove a montagemtmpfs
commount-path=/cache
:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /cache
Se o caminho de montagem especificado não existir, é ignorado silenciosamente.
Montar um disco persistente como um volume de dados
Com o SO otimizado para contentores 69 ou posterior, pode montar discos persistentes de uma VM anfitriã num contentor.
Pré-requisitos
- O disco tem de ter um sistema de ficheiros
ext4
ou não ter nenhum sistema de ficheiros. Sem um sistema de ficheiros inicial, o agente de arranque do contentor formata o disco paraext4
e apenas são suportados a montagem e o anexo de leitura/escrita. - O disco tem de estar anexado à VM.
São suportados dispositivos sem partições e partições. Para montagens de partições, o disco não pode estar em branco. Tem de conter uma tabela de partições existente.
Consola
Aceda à página Criar uma instância.
Na secção Contentor, clique em Implementar contentor.
Na página Configurar contentor, faça o seguinte:
- Especifique um nome de imagem de contentor.
- Na secção Montagens de volumes, clique em Adicionar volume.
- Na lista Tipo de volume, selecione Disco.
- No campo Caminho de montagem, especifique um caminho na estrutura de diretórios do contentor onde quer montar o disco persistente.
- Na lista Nome do disco, selecione um disco existente para montar.
- No campo Partição, especifique o número da partição a montar se o disco tiver uma tabela de partições. Se o disco não tiver partições, deixe este campo em branco.
- Na lista Modo, especifique se quer montar o diretório no modo de leitura/escrita ou só de leitura.
- Para confirmar os detalhes do contentor, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use o comando
gcloud compute instances create-with-container
ou o comandogcloud compute instances update-container
com a flag--container-mount-disk
para montar um disco persistente num contentor.O exemplo seguinte monta dois discos,
my-data-disk
emy-scratch-disk
, no contentor nos caminhos de montagem/disks/data-disk
e/disks/scratch-disk
.gcloud compute instances create-with-container busybox-vm \ --disk name=my-data-disk \ --create-disk name=my-scratch-disk,auto-delete=yes,image=ubuntu-1710-artful-v20180315,image-project=ubuntu-os-cloud \ --container-image docker.io/busybox:1.27 \ --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=ro \ --container-mount-disk mount-path="/disks/scratch-disk",name=my-scratch-disk
Tenha em atenção que a flag
--disk
anexamy-data-disk
, a flag--create-disk
cria e anexamy-scatch-disk
, e a flag--container-mount-disk
monta os discos anexados ao contentor. Uma vez que não é especificado ummode
paramy-scratch-disk
, esse disco é montado no contentor no modo de leitura/escrita por predefinição.Use o comando
gcloud compute instances update-container
com a flag--container-mount-disk
para montar discos anexados adicionais ou para modificar montagens de discos existentes.Use o sinalizador
--remove-container-mounts
para remover uma montagem de volume de disco com o caminho de montagem especificado. O exemplo seguinte altera o modo de montagem demy-data-disk
para leitura/escrita e remove a montagem do disco commount-path="/disks/scratch-disk"
.gcloud compute instances update-container busybox-vm \ --container-mount-disk mount-path="/disks/data-disk",name=my-data-disk,mode=rw \ --remove-container-mounts "/disks/scratch-disk"
Se o caminho de montagem que transmite à flag
--remove-container-mounts
não existir, é ignorado silenciosamente.Publicar portas de contentores
As VMs com contentores usam o modo de rede do anfitrião, em que um contentor partilha a pilha de rede do anfitrião e todas as interfaces do anfitrião estão disponíveis para o contentor.
As portas do contentor têm um mapeamento individual para as portas da VM anfitriã. Por exemplo, uma porta 80 do contentor é mapeada para a porta 80 da VM do anfitrião. O Compute Engine não suporta a flag de publicação de portas (
-p
) e não tem de a especificar para que o mapeamento funcione.Para publicar as portas de um contentor, configure as regras de firewall para permitir o acesso às portas da VM anfitriã. As portas correspondentes do contentor ficam acessíveis automaticamente, de acordo com as regras da firewall.
Exemplo: publicar a porta 80 para um contentor NGINX
docker run
Configure o sinalizador
--network="host"
quando usar o comandodocker run
. Saiba mais sobre as definições de rede de contentores e o modo de anfitrião.gcloud
O exemplo seguinte mostra como criar uma instância de VM com um contentor NGINX e permitir tráfego para a porta 80 do contentor.
Crie uma instância de VM com um contentor NGINX:
gcloud compute instances create-with-container nginx-vm \ --container-image gcr.io/cloud-marketplace/google/nginx1:1.15 \ --tags http-server
O contentor partilha a pilha de rede da VM anfitriã e a porta 80 do contentor é publicada na porta 80 da VM anfitriã. A etiqueta
http-server
é usada como uma etiqueta de destino para a regra de firewall, criada no passo seguinte.Crie uma regra de firewall para ativar as ligações à porta 80 da instância de VM. A seguinte regra de firewall permite ligações HTTP a instâncias de VM com a etiqueta
http-server
.gcloud compute firewall-rules create allow-http \ --allow tcp:80 --target-tags http-server
O contentor começa automaticamente a receber tráfego na porta 80. Não tem de fazer nenhuma configuração adicional.
Pode criar regras de firewall para combinações de protocolo:porta de VMs de anfitrião em que o protocolo é
tcp
ouudp
. Estas regras regem eficazmente o acesso de fora da VM às portas do contentor correspondentes.
O que se segue?
- Saiba como implementar contentores Docker no Compute Engine.
- Saiba mais acerca do SO otimizado para contentores.
Exceto em caso de indicação contrária, o conteúdo desta página é licenciado de acordo com a Licença de atribuição 4.0 do Creative Commons, e as amostras de código são licenciadas de acordo com a Licença Apache 2.0. Para mais detalhes, consulte as políticas do site do Google Developers. Java é uma marca registrada da Oracle e/ou afiliadas.
Última atualização 2025-09-30 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Não contém as informações de que eu preciso","missingTheInformationINeed","thumb-down"],["Muito complicado / etapas demais","tooComplicatedTooManySteps","thumb-down"],["Desatualizado","outOfDate","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Problema com as amostras / o código","samplesCodeIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-09-30 UTC."],[],[],null,[]] -