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 Google Cloud 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 Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Instale a CLI Google Cloud. Após a instalação, inicialize a CLI gcloud executando o seguinte comando:
gcloud initSe estiver a usar um fornecedor de identidade (IdP) externo, primeiro tem de iniciar sessão na CLI gcloud com a sua identidade federada.
- 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 Google 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 Google 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 runpara configurar um contentor numa instância de VM que esteja a executar o SO otimizado para contentores ou especificar o comandodocker runnum 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
--restartdo 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-policypara especificar uma política de reinício do contentor:always(predefinição)on-failurenever
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-containercom a flag--container-restart-policypara 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
--privilegeddo 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-privilegedpara 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-containercom a flag--container-privilegedpara atualizar um contentor numa VM. Use a flag--no-container-privilegedpara desativar o modo privilegiado.Alocar um buffer para STDIN no tempo de execução do contentor
Pode atribuir um buffer para
STDINno tempo de execução do contentor para manter o fluxoSTDINaberto num contentor. Se esta opção não estiver definida, as leituras deSTDINno contentor resultam sempre emEOF.Além de atribuir um pseudo-TTY, manter o fluxo
STDINaberto é 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-stdinpara atribuir uma memória intermédia paraSTDINno tempo de execução do contentor. O exemplo seguinte inicia um contentor e mantém o respetivoSTDINaberto:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-stdin
Use o comando
gcloud compute instances update-containercom a flag--container-stdinpara atualizar um contentor numa VM. Use a flag--no-container-stdinpara 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-ttypara 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-containercom a flag--container-ttypara atualizar um contentor numa VM. Use a flag--no-container-ttypara não atribuir um pseudo-TTY.Substituir o comando predefinido a executar no arranque do contentor
O
ENTRYPOINTde 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
ENTRYPOINTda imagem do contentor.docker run
Use a flag
--entrypoint(apenas comando, sem argumentos) do comandodocker run. Saiba mais sobre oENTRYPOINTe 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-commandpara substituir a imagem do contentorENTRYPOINT. O exemplo seguinte executa o comandouptimenum 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-containercom a flag--container-commandpara atualizar um comando para um contentor numa VM.Use a flag
--clear-container-commandcom o comandoupdate-containerpara limpar o comando predefinido do contentor atualizado.Transmitir argumentos para o comando ENTRYPOINT do contentor
Pode transmitir (anexar) argumentos ao comando
ENTRYPOINTdo contentor ou substituir o comandoCMDdo 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-argpara transmitir argumentos a um comando de imagem de contentorENTRYPOINT. Use uma flag separada para cada argumento.O exemplo seguinte executa o comando
/bin/ashcom 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-containercom as flags--container-argpara 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-argscom o comandoupdate-containerpara 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 dockerDefinir variáveis de ambiente
Pode definir variáveis de ambiente num contentor. Só é considerado o último valor de
KEYquando oKEYse repete mais do que uma vez.docker run
Use a flag
--envdo 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-envpara definir variáveis de ambiente num contentor. O exemplo seguinte define três variáveis de ambiente:HOME,MODEeOWNER: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-filepara 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=adminUse o comando
gcloud compute instances update-containercom a flag--container-envou--container-env-filepara 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-envpara remover variáveis de ambiente quando atualizar um contentor numa VM. O exemplo seguinte remove as variáveis de ambiente denominadasMODEeOWNER: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
--volumee o sinalizador--mountcom a montagemtype=binddo 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-pathpara montar um diretório de VM de anfitrião num contentor. O exemplo seguinte monta o diretório do anfitrião/tmpno contentor em/logsno 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=ropara montar um diretório de anfitrião no modo de leitura.Use o comando
gcloud compute instances update-containercom a flag--container-mount-host-pathpara atualizar as montagens de diretórios de anfitriões num contentor. Use a flag--remove-container-mountspara 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
EmptyDirdo Google Kubernetes Engine commedium:Memory. Ao contrário do Docker, em que os dadostmpfssão eliminados quando o contentor é reiniciado, com otmpfsnum 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-tmpfspara montar um sistema de ficheirostmpfsvazio num contentor. O exemplo seguinte monta um sistema de ficheirostmpfsno contentor em/cacheno 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-containercom a flag--container-mount-tmpfspara atualizar as montagenstmpfsnum contentor. Use a flag--remove-container-mountspara remover uma montagemtmpfscom o caminho de montagem especificado durante a atualização. O exemplo seguinte remove a montagemtmpfscommount-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
ext4ou não ter nenhum sistema de ficheiros. Sem um sistema de ficheiros inicial, o agente de arranque do contentor formata o disco paraext4e 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-containerou o comandogcloud compute instances update-containercom a flag--container-mount-diskpara montar um disco persistente num contentor.O exemplo seguinte monta dois discos,
my-data-diskemy-scratch-disk, no contentor nos caminhos de montagem/disks/data-diske/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
--diskanexamy-data-disk, a flag--create-diskcria e anexamy-scatch-disk, e a flag--container-mount-diskmonta os discos anexados ao contentor. Uma vez que não é especificado ummodeparamy-scratch-disk, esse disco é montado no contentor no modo de leitura/escrita por predefinição.Use o comando
gcloud compute instances update-containercom a flag--container-mount-diskpara montar discos anexados adicionais ou para modificar montagens de discos existentes.Use o sinalizador
--remove-container-mountspara remover uma montagem de volume de disco com o caminho de montagem especificado. O exemplo seguinte altera o modo de montagem demy-data-diskpara 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-mountsnã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 é
tcpouudp. 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-10-19 UTC.
[[["Fácil de entender","easyToUnderstand","thumb-up"],["Meu problema foi resolvido","solvedMyProblem","thumb-up"],["Outro","otherUp","thumb-up"]],[["Difícil de entender","hardToUnderstand","thumb-down"],["Informações incorretas ou exemplo de código","incorrectInformationOrSampleCode","thumb-down"],["Não contém as informações/amostras de que eu preciso","missingTheInformationSamplesINeed","thumb-down"],["Problema na tradução","translationIssue","thumb-down"],["Outro","otherDown","thumb-down"]],["Última atualização 2025-10-19 UTC."],[],[]] -