É possível executar um único contêiner em uma VM ou em cada VM de um grupo gerenciado de instâncias (MIG). Para isso, especifique uma imagem de contêiner e parâmetros de configuração ao criar uma instância de VM ou um modelo de instância.
Este documento descreve as opções de configuração para executar contêineres em instâncias do Compute Engine.
Antes de começar
- Se você não tiver familiaridade com contêineres, saiba mais em Contêineres no Compute Engine.
- Se você não conhece o Docker, leia a documentação do Docker.
- Leia sobre Como implantar contêineres no Compute Engine.
-
Configure a autenticação, caso ainda não tenha feito isso.
Com isso, você confirma sua identidade para acesso a serviços e APIs do Google Cloud . Para executar código ou exemplos em um ambiente de desenvolvimento local, faça a autenticação no Compute Engine com um destes métodos:
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 do Google Cloud. Após a instalação, inicialize a CLI do Google Cloud executando o seguinte comando:
gcloud initAo usar um provedor de identidade (IdP) externo, primeiro faça login na gcloud CLI com sua identidade federada.
- Set a default region and zone.
Ao criar uma instância ou um modelo de instância para usar na implantação de contêineres em VMs e MIGs, especifique a configuração do contêiner usando o console Google Cloud ou a CLI do Google Cloud.
Nas seções a seguir, descreveremos como configurar contêineres em instâncias de VM. No entanto, também é possível configurar as seguintes opções ao criar um modelo de instância. Use o console Google Cloud ou a CLI do Google Cloud para configurar opções de instâncias de VM em um modelo de instância.
É possível usar os comandos
docker runpara configurar um contêiner em uma instância de VM que esteja executando o Container-Optimized OS ou especificar o comandodocker runem um script de inicialização para criar e configurar uma VM. Para mais informações, consulte Usar scripts de inicialização para implantar contêineres em VMs.Como especificar uma política de reinicialização
Defina uma política de reinicialização para especificar se um contêiner será reiniciado na saída. A política padrão é sempre reiniciar. Também é possível definir políticas para reiniciar em caso de falha ou para nunca fazer isso.
docker run
Use a sinalização
--restartdo comandodocker run. O comportamento padrão do Docker é realizar várias tentativas de reinicialização de um contêiner, conforme especificado na referência de--restart(em inglês).Console
Acesse a página Criar uma instância.
Na seção Contêiner, clique em Implantar contêiner.
Na página Configurar contêiner, faça o seguinte:
- Especifique um nome de imagem de contêiner.
- Na seção Política de reinicialização, selecione a política de reinicialização do contêiner.
- Para confirmar os detalhes do contêiner, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a sinalização
--container-restart-policypara especificar uma política de reinicialização do contêiner:always(padrão)on-failurenever
No exemplo a seguir, um contêiner com a política de reinicialização
on-failureé iniciado. Ela determina que a reinicialização acontecerá apenas quando o código de saída do contêiner for 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 sinalização--container-restart-policypara definir a política de reinicialização em um contêiner executado em uma VM.Como executar um contêiner no modo privilegiado
Execute um contêiner no modo privilegiado para permitir o acesso a todos os dispositivos no host. Por padrão, os contêineres são executados como "não privilegiados" e não têm permissão para acessar nenhum dispositivo.
docker run
Use a flag
--privilegeddo comandodocker run. Para mais informações, consulte Privilégios de ambiente de execução e recursos do Linux.Console
Acesse a página Criar uma instância.
Na seção Contêiner, clique em Implantar contêiner.
Na página Configurar contêiner, faça o seguinte:
- Especifique um nome de imagem de contêiner.
- Selecione Executar como privilegiado.
- Para confirmar os detalhes do contêiner, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a sinalização
--container-privilegedpara executar um contêiner com privilégio de ambiente de execução. No exemplo a seguir, um contêiner busybox em modo privilegiado é iniciado: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 sinalização--container-privilegedpara atualizar um contêiner em uma VM. Use a sinalização--no-container-privilegedpara desativar o modo privilegiadoComo alocar um buffer do STDIN no ambiente de execução do contêiner
É possível alocar um buffer do
STDINno ambiente de execução do contêiner para que o fluxo noSTDINfique aberto em um contêiner. Se essa configuração não for definida, as leituras doSTDINno contêiner sempre terãoEOFcomo resultado.Além de alocar um pseudo-TTY, é necessário manter o fluxo do
STDINaberto para estabelecer um shell interativo no contêiner e para que ele receba a entrada padrão de um pipeline.docker run
Use a flag
--interactive(-i) do comandodocker run. Para mais informações, consulte a documentação da flag--interactive.Console
Acesse a página Criar uma instância.
Na seção Contêiner, clique em Implantar contêiner.
Na página Configurar contêiner, faça o seguinte:
- Especifique um nome de imagem de contêiner.
- Selecione Alocar um buffer para o STDIN.
- Para confirmar os detalhes do contêiner, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a sinalização
--container-stdinpara alocar um buffer doSTDINno ambiente de execução do contêiner. No exemplo a seguir, um contêiner é iniciado, e oSTDINdele é 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-containercom a flag--container-stdinpara atualizar um contêiner em uma VM. Use a sinalização--no-container-stdinpara desativar a alocação de buffer noSTDIN.Como alocar um pseudo-TTY
Além da alocação de um buffer do STDIN, também é necessário alocar um pseudo-TTY em um contêiner para estabelecer um shell interativo nele.
docker run
Use a sinalização
--tty (-t)do comandodocker run. Para mais informações, consulte a flag--tty.Console
Acesse a página Criar uma instância.
Na seção Contêiner, clique em Implantar contêiner.
Na página Configurar contêiner, faça o seguinte:
- Especifique um nome de imagem de contêiner.
- Selecione Alocar um pseudo-TTY.
- Para confirmar os detalhes do contêiner, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a sinalização
--container-ttypara alocar um pseudo-TTY. No exemplo a seguir, um contêiner é iniciado, e um pseudo-TTY é alocado: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 sinalização--container-ttypara atualizar um contêiner em uma VM. Se não quiser alocar um pseudo-TTY, use a sinalização--no-container-tty.Como modificar o comando padrão a ser executado na inicialização do contêiner
Com o
ENTRYPOINTde uma imagem de contêiner, você especifica o executável a ser usado quando o contêiner é iniciado. Além disso, você executa o contêiner como se ele fosse o binário.É possível modificar o comando
ENTRYPOINTda imagem do contêiner.docker run
Use a flag
--entrypoint(somente comando, sem argumentos) do comandodocker run. Saiba mais sobre o comandoENTRYPOINTe a sinalização--entrypoint(páginas em inglês).Console
Acesse a página Criar uma instância.
Na seção Contêiner, clique em Implantar contêiner.
Na página Configurar contêiner, faça o seguinte:
- Especifique um nome de imagem de contêiner.
- No campo Comando, insira um único comando executável sem parâmetros. Por exemplo,
uptime. - Para confirmar os detalhes do contêiner, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a sinalização
--container-commandpara modificar oENTRYPOINTda imagem do contêiner. No exemplo a seguir, o comandouptimeé executado em um contêiner busybox para exibir o tempo decorrido desde a última inicialização: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 sinalização--container-commandpara atualizar um comando de um contêiner em uma VM.Use a sinalização
--clear-container-commandcom o comandoupdate-containerpara limpar o comando padrão do contêiner atualizado.Como transmitir argumentos ao comando ENTRYPOINT do contêiner
É possível transmitir ou anexar argumentos ao comando
ENTRYPOINTdo contêiner ou modificar o comandoCMDpadrão do contêiner.Console
Acesse a página Criar uma instância.
Na seção Contêiner, clique em Implantar contêiner.
Na página Configurar contêiner, faça o seguinte:
- Especifique um nome de imagem de contêiner.
- Na seção Argumentos, clique em Adicionar argumento.
- Insira um argumento de comando para cada caixa.
- Para confirmar os detalhes do contêiner, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a sinalização
--container-argpara transmitir argumentos para o comandoENTRYPOINTda imagem de contêiner. Use uma sinalização separada para cada argumento.No exemplo a seguir, o comando
/bin/ashé executado com os argumentos-c 'ls -l'em um contêiner que foi configurado para executar o busybox automaticamente: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 sinalizações--container-argpara atualizar argumentos em um contêiner executado em uma VM. A atualização substitui toda a lista de argumentos pela nova lista.Use a sinalização
--clear-container-argscom o comandoupdate-containerpara remover todos os argumentos da declaração do contêiner.Como configurar opções do driver de registro
Se você precisar configurar as opções do driver de registro, crie um script de inicialização da VM para atualizar o arquivo de configuração do Docker com as opções de geração de registros necessárias. Essas opções se aplicam a todos os contêineres executados na VM e que não especificam opções do driver de registro.
Por exemplo, o script de inicialização a seguir define várias opções, incluindo uma opção para limitar o tamanho do registro do contêiner, e 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 dockerComo definir variáveis de ambiente
É possível definir variáveis de ambiente em um contêiner. Apenas o último valor de
KEYé usado quandoKEYé repetido mais de uma vez.docker run
Use a sinalização
--envdo comandodocker run. Saiba como definir variáveis de ambiente (em inglês) com o mecanismo do Docker.Console
Acesse a página Criar uma instância.
Na seção Contêiner, clique em Implantar contêiner.
Na página Configurar contêiner, faça o seguinte:
- Especifique um nome de imagem de contêiner.
- Na seção Variáveis de ambiente, clique em Adicionar variável.
- Adicione ou remova as variáveis de ambiente conforme a necessidade, uma para cada linha.
- Para confirmar os detalhes do contêiner, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a sinalização
--container-envpara definir variáveis de ambiente em um contêiner. No exemplo a seguir, três variáveis de ambiente são definidas: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 sinalização
--container-env-filepara definir variáveis de ambiente a partir de um arquivo local. No exemplo a seguir, as duas variáveis de ambiente do arquivoenv.txtsão definidas:gcloud compute instances create-with-container busybox-vm \ --container-image docker.io/busybox:1.27 \ --container-env-file ./env.txt
O conteúdo do arquivo
env.txté:# this is a comment HOME=/home MODE=test OWNER=adminUse o comando
gcloud compute instances update-containercom a sinalização--container-envou--container-env-filepara atualizar as variáveis de ambiente de um contêiner em uma VM. Isso atualiza todas as variáveis na declaração do contêiner da instância de VM. As variáveis que não estiverem na declaração do contêiner serão adicionadas.Use a sinalização
--remove-container-envpara remover variáveis de ambiente ao atualizar um contêiner em uma VM. No exemplo a seguir, as variáveis de ambiente chamadasMODEeOWNERsão removidas:gcloud compute instances update-container busybox-vm \ --remove-container-env MODE,OWNER
Se uma variável de ambiente especificada não existir, ela será ignorada.
Como montar um diretório de host como um volume de dados
É possível ativar um diretório de uma VM de host em um contêiner.
docker run
Use as flags
--volumee--mountcom a montagemtype=binddo comandodocker run. Saiba como o mecanismo do Docker ativa um diretório de host (em inglês) como volume de dados.Console
Acesse a página Criar uma instância.
Na seção Contêiner, clique em Implantar contêiner.
Na página Configurar contêiner, faça o seguinte:
- Especifique um nome de imagem de contêiner.
- Na seção montagens de volume, clique em Adicionar volume.
Na lista Tipo de volume, selecione Diretório e faça o seguinte:
- No campo Caminho da ativação, especifique um caminho em uma estrutura de diretórios de contêiner em que um diretório de host será ativado.
- No campo Host path, especifique um caminho de host para o diretório do host a ser ativado.
- Na lista Modo, especifique se você quer ativar o diretório no modo de leitura/gravação ou somente leitura.
Para confirmar os detalhes do contêiner, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a sinalização
--container-mount-host-pathpara ativar um diretório da VM de host em um contêiner. No exemplo a seguir, o diretório de host/tmpé ativado no contêiner em/logsno modo de leitura e gravação: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 ativar um diretório de host no modo somente leitura.Use o comando
gcloud compute instances update-containercom a sinalização--container-mount-host-pathpara atualizar as ativações do diretório de host em um contêiner. Use a sinalização--remove-container-mountspara remover as ativações de volume com os caminhos de ativação especificados. No exemplo a seguir, uma ativação de caminho de host commount-path=/logsé removida:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /logs
Se o caminho de ativação especificado não existir, ele será ignorado.
Como montar o sistema de arquivos tmpfs como um volume de dados
É possível ativar um sistema de arquivos tmpfs vazio em um contêiner.
Um sistema de arquivos tmpfs vazio é semelhante a um volume
EmptyDirdo Google Kubernetes Engine commedium:Memory. Comtmpfsem um contêiner do Compute Engine, o volume e os dados dele são mantidos nas reinicializações do contêiner e excluídos somente na reinicialização da VM. Isso é diferente do Docker, em que os dadostmpfssão excluídos nas reinicializações do contêiner.Console
Acesse a página Criar uma instância.
Na seção Contêiner, clique em Implantar contêiner.
Na página Configurar contêiner, faça o seguinte:
- Especifique um nome de imagem de contêiner.
- Na seção montagens de volume, clique em Adicionar volume.
- Na lista Volume type, selecione TmpFS.
- No campo Caminho da ativação, especifique um caminho em uma estrutura de diretórios de contêiner em que você queira ativar um volume TmpFS.
- Na lista Modo, especifique se você quer ativar o volume do TmpFS no modo de leitura/gravação ou somente leitura.
- Para confirmar os detalhes do contêiner, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use a sinalização
--container-mount-tmpfspara ativar um sistema de arquivostmpfsvazio em um contêiner. No exemplo a seguir, um sistema de arquivostmpfsé ativado no contêiner em/cacheno modo de leitura e gravação: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 sinalização--container-mount-tmpfspara atualizar as ativaçõestmpfsem um contêiner. Use a sinalização--remove-container-mountspara remover uma ativaçãotmpfscom o caminho de ativação especificado durante a atualização. No exemplo a seguir, a ativaçãotmpfscommount-path=/cacheé removida:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /cache
Se o caminho de ativação especificado não existir, ele será ignorado.
Como montar um disco permanente como um volume de dados
Com o Container-Optimized OS 69 ou superior, é possível ativar discos permanentes de uma VM de host em um contêiner.
Pré-requisitos
- O disco precisa ter um sistema de arquivos
ext4ou não ter sistema de arquivos. Sem um sistema de arquivos inicial, o agente de inicialização do contêiner formata o disco comoext4, e somente a ativação e anexo de leitura e gravação são compatíveis. - O disco precisa estar anexado à VM.
Ambos os dispositivos e partições sem partição são compatíveis. Para montagens de partições, o disco não pode estar em branco. Ele precisa conter uma tabela de partição existente.
Console
Acesse a página Criar uma instância.
Na seção Contêiner, clique em Implantar contêiner.
Na página Configurar contêiner, faça o seguinte:
- Especifique um nome de imagem de contêiner.
- Na seção montagens de volume, clique em Adicionar volume.
- Na lista Tipo de volume, selecione Disco.
- No campo Caminho de ativação, especifique um caminho na estrutura de diretórios do contêiner em que você quer ativar o disco permanente.
- Na lista Nome do disco, selecione um disco atual para ser ativado.
- No campo Partição, especifique o número da partição a ser montada se o disco tiver uma tabela de partições. Se o disco não tiver partições, deixe esse campo em branco.
- Na lista Modo, especifique se você quer ativar o diretório no modo de leitura/gravação ou somente leitura.
- Para confirmar os detalhes do contêiner, clique em Selecionar.
Continue com o processo de criação da VM.
gcloud
Use o comando
gcloud compute instances create-with-containerougcloud compute instances update-containercom a sinalização--container-mount-diskpara ativar um disco permanente em um contêiner.No exemplo a seguir, dois discos,
my-data-diskemy-scratch-disk, são ativados no contêiner nos caminhos/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
A sinalização
--diskanexamy-data-disk,--create-diskcria e anexamy-scatch-diske--container-mount-diskativa os discos anexados ao contêiner. Comomodenão está especificado emmy-scratch-disk, esse disco é ativado no contêiner no modo de leitura e gravação por padrão.Use o comando
gcloud compute instances update-containercom a sinalização--container-mount-diskpara ativar outros discos anexados ou modificar as ativações de disco atuais.Use a sinalização
--remove-container-mountspara remover uma ativação de volume de disco com o caminho especificado. No exemplo a seguir, o modo de ativação demy-data-diské alterado para leitura e gravação, e a ativação de disco commount-path="/disks/scratch-disk"é removida.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 ativação transmitido para a sinalização
--remove-container-mountsnão existir, ele será ignorado.Como publicar portas de contêineres
As VMs com contêineres usam o modo de rede do host (em inglês). Nele, um contêiner compartilha a pilha de rede do host, e todas as interfaces desse host ficam disponíveis para o contêiner.
As portas do contêiner são mapeadas de uma para uma com relação às portas da VM do host. Por exemplo, uma porta de contêiner 80 é mapeada na mesma porta da VM de host. O Compute Engine não é compatível com a flag de publicação de portas (
-p), e não é necessário especificá-la para que o mapeamento funcione.Para publicar as portas de um contêiner, configure regras de firewall para ativar o acesso às portas da VM de host. As portas correspondentes do contêiner ficam acessíveis automaticamente, de acordo com as regras do firewall.
Exemplo: publicação da porta 80 de um contêiner NGINX
docker run
Configure a flag
--network="host"ao usar o comandodocker run. Saiba mais sobre as configurações de rede de contêineres e o modo host (em inglês).gcloud
Veja no exemplo a seguir como criar uma instância de VM com um contêiner NGINX e permitir tráfego para a porta 80 do contêiner.
Crie uma instância de VM com um contêiner NGINX:
gcloud compute instances create-with-container nginx-vm \ --container-image gcr.io/cloud-marketplace/google/nginx1:1.15 \ --tags http-server
O contêiner compartilha a pilha de rede da VM de host, e a porta 80 do contêiner é publicada na mesma porta da VM de host. A tag
http-serveré usada como tag de destino na regra de firewall, que será criada na próxima etapa.Crie uma regra de firewall para ativar conexões à porta 80 da instância de VM. Com a regra de firewall a seguir, você permite conexões HTTP a instâncias de VM com a tag
http-server.gcloud compute firewall-rules create allow-http \ --allow tcp:80 --target-tags http-server
O contêiner começa a receber tráfego automaticamente na porta 80. Você não precisa fazer outras configurações.
É possível criar regras de firewall em combinações de protocolo:porta da VM de host em que o protocolo seja
tcpouudp. Essas regras controlam o acesso de fora da VM às portas correspondentes do contêiner.
A seguir
- Saiba como implantar contêineres do Docker no Compute Engine.
- Saiba mais sobre o Container-Optimized OS.
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."],[],[]] -