Antes de começar
- Se você não estiver familiarizado com contêineres, leia Contêineres no Compute Engine .
- Se você não estiver familiarizado com o Docker, leia a documentação do Docker .
- Leia sobre como implantar contêineres no Compute Engine .
- Se ainda não o fez, configure a autenticação. Autenticação é o processo pelo qual sua identidade é verificada para acesso a Google Cloud serviços e APIs. Para executar códigos ou amostras em um ambiente de desenvolvimento local, você pode se autenticar 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
-
After installing the Google Cloud CLI, initialize it by running the following command:
gcloud init
If you're using an external identity provider (IdP), you must first sign in to the gcloud CLI with your federated identity.
- Set a default region and zone.
Acesse a página Criar um modelo de instância .
Na seção Contêiner , marque a caixa de seleção Implantar uma imagem de contêiner nesta instância de VM e expanda Opções avançadas de contêiner .
- Na CLI do Google Cloud, use o comando
gcloud compute instance-templates create-with-container
conforme mostrado nos exemplos a seguir. Vá para 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.
-
always
(padrão) -
on-failure
-
never
Vá para 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.
Vá para 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 STDIN .
- Para confirmar os detalhes do contêiner, clique em Selecionar .
Continue com o processo de criação da VM.
Vá para 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.
Vá para 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.
Vá para 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.
Vá para 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 variáveis de ambiente conforme necessário, uma para cada linha.
- Para confirmar os detalhes do contêiner, clique em Selecionar .
Continue com o processo de criação da VM.
Vá para 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 de montagem , especifique um caminho de montagem em uma estrutura de diretório de contêiner na qual montar um diretório host.
- No campo Caminho do host , especifique um caminho de host para o diretório de host a ser montado.
- Na lista Modo , especifique se deseja montar o diretório no modo 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.
Vá para 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 TmpFS .
- No campo Caminho de montagem , especifique um caminho de montagem em uma estrutura de diretório de contêiner onde você gostaria de montar um volume TmpFS.
- Na lista Modo , especifique se deseja montar o volume TmpFS no modo 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.
- O disco deve ter um sistema de arquivos
ext4
ou não ter nenhum sistema de arquivos. Sem sistema de arquivos inicial, o agente de inicialização do contêiner formata o disco paraext4
e somente leitura/gravação e montagem são suportadas. - O disco deve estar anexado à VM.
São suportados dispositivos sem partições e partições. Para montagens de partição, o disco não pode ficar em branco; ele deve conter uma tabela de partição existente.
Vá para 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 montagem , especifique um caminho na estrutura de diretórios do contêiner onde você gostaria de montar o disco permanente.
- Na lista Nome do disco , selecione um disco existente para montar.
- 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 possuir partições, deixe este campo em branco.
- Na lista Modo , especifique se deseja montar o diretório no modo 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.
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 host e a porta 80 do contêiner é publicada na porta 80 da VM host. A tag
http-server
é usada como uma tag de destino para a regra de firewall, criada na próxima etapa.Crie uma regra de firewall para ativar conexões com a porta 80 da instância de VM. A regra de firewall a seguir 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 automaticamente a receber tráfego na porta 80. Não é necessário realizar nenhuma configuração adicional.
Você pode criar regras de firewall para combinações de protocolo:porta da VM do host em que o protocolo é
tcp
ouudp
. Estas regras regem efetivamente o acesso de fora da VM às portas de contentores correspondentes.- Saiba como implantar contêineres Docker no Compute Engine .
- Saiba mais sobre o sistema operacional otimizado para contêineres .
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 do Google Cloud ou a CLI do Google Cloud.
As seções a seguir descrevem como configurar opções para instâncias de VM, mas você também pode configurar as opções a seguir ao criar um modelo de instância. Use o console do Google Cloud ou a CLI do Google Cloud para configurar opções para instâncias de VM em um modelo de instância.
Console
gcloud
Especificando uma política de reinicialização
Você pode definir uma política de reinicialização para especificar se um contêiner deve ser reiniciado ao sair. A política padrão é sempre reiniciar. Você também pode definir a política para reiniciar em caso de falha ou para nunca reiniciar.
Console
gcloud
Use o sinalizador
--container-restart-policy
para especificar uma política de reinicialização do contêiner:O exemplo a seguir inicia um contêiner com política de reinicialização
on-failure
, o que significa que a reinicialização só acontece quando o código de saída do contêiner é 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 sinalização--container-restart-policy
para a política de reinicialização em um contêiner em execução em uma VM.Executando um contêiner em modo privilegiado
Você pode executar um contêiner em modo privilegiado para permitir acesso a todos os dispositivos no host. Os contêineres são executados como "sem privilégios" por padrão e não têm permissão para acessar nenhum dispositivo.
Console
gcloud
Use o sinalizador
--container-privileged
para executar um contêiner com privilégio de tempo de execução. O exemplo a seguir inicia um contêiner busybox em 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 sinalização--container-privileged
para atualizar um contêiner em uma VM. Use o sinalizador--no-container-privileged
para desativar o modo privilegiado.Alocando um buffer para STDIN no tempo de execução do contêiner
Você pode alocar um buffer para
STDIN
no tempo de execução do contêiner para manter o fluxoSTDIN
aberto em um contêiner. Se não estiver definido, as leituras deSTDIN
no contêiner sempre resultam emEOF
.Junto com a alocação de um pseudo-TTY , é necessário manter o fluxo
STDIN
aberto para estabelecer um shell interativo no contêiner e para que o contêiner receba sua entrada padrão de um canal.Console
gcloud
Use o sinalizador
--container-stdin
para alocar um buffer paraSTDIN
no tempo de execução do contêiner. O exemplo a seguir inicia um contêiner e mantém seuSTDIN
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 sinalização--container-stdin
para atualizar um contêiner em uma VM. Use o sinalizador--no-container-stdin
para desativar a alocação de um buffer paraSTDIN
.Alocando um pseudo-TTY
A alocação de um pseudo-TTY para um contêiner é necessária para estabelecer um shell interativo no contêiner (junto com a alocação de um buffer para STDIN ).
Console
gcloud
Use o sinalizador
--container-tty
para alocar um pseudo-TTY. O exemplo a seguir inicia um contêiner e aloca 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 sinalização--container-tty
para atualizar um contêiner em uma VM. Use o sinalizador--no-container-tty
para não alocar um pseudo-TTY.Substituindo o comando padrão para executar na inicialização do contêiner
O
ENTRYPOINT
de uma imagem de contêiner especifica qual executável será executado quando o contêiner for iniciado e permite executar o contêiner como se fosse aquele binário.Você pode substituir o comando
ENTRYPOINT
da imagem do contêiner.Console
gcloud
Use o sinalizador
--container-command
para substituir a imagem do contêinerENTRYPOINT
. O exemplo a seguir executa o comandouptime
em um contêiner busybox para exibir o tempo 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-container
com a sinalização--container-command
para atualizar um comando para um contêiner em uma VM.Use o sinalizador
--clear-container-command
com o comandoupdate-container
para limpar o comando padrão do contêiner atualizado.Passando argumentos para o comando ENTRYPOINT do contêiner
Você pode passar (acrescentar) argumentos ao comando
ENTRYPOINT
do contêiner ou substituir o comandoCMD
do contêiner padrão.Console
gcloud
Use o sinalizador
--container-arg
para passar argumentos para um comandoENTRYPOINT
de imagem de contêiner. Use um sinalizador separado para cada argumento.O exemplo a seguir executa o comando
/bin/ash
com os argumentos-c 'ls -l'
em um contêiner 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 sinalizações--container-arg
para atualizar argumentos de comando para um contêiner em execução em uma VM. A atualização substitui toda a lista de argumentos pela nova lista.Use o sinalizador
--clear-container-args
com o comandoupdate-container
para remover todos os argumentos da declaração do contêiner.Configurando opções do driver de log
Se precisar configurar as opções do driver de log, você poderá criar um script de inicialização da VM para atualizar o arquivo de configuração do Docker com as opções de log necessárias. Essas opções se aplicam a todos os contêineres executados na VM e que não especificam opções de driver de log.
Por exemplo, o script de inicialização a seguir define várias opções – incluindo uma opção para limitar o tamanho do log 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 docker
Configurando variáveis de ambiente
Você pode definir variáveis de ambiente em um contêiner. Somente o último valor de
KEY
é obtido quando aKEY
é repetida mais de uma vez.Console
gcloud
Use o sinalizador
--container-env
para definir variáveis de ambiente em um contêiner. O exemplo a seguir 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 o sinalizador
--container-env-file
para definir variáveis de ambiente de um arquivo local. O exemplo a seguir define as duas variáveis de ambiente do arquivoenv.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 arquivo
env.txt
é:# this is a comment HOME=/home MODE=test OWNER=admin
Use o comando
gcloud compute instances update-container
com a sinalização--container-env
ou--container-env-file
para atualizar variáveis de ambiente para um contêiner em uma VM. Isso atualiza quaisquer variáveis presentes na declaração do contêiner da instância de VM. Variáveis que não estão na declaração do contêiner são adicionadas.Use a sinalização
--remove-container-env
para remover variáveis de ambiente ao atualizar um contêiner em uma VM. O exemplo a seguir remove as variáveis de ambiente chamadasMODE
eOWNER
: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 silenciosamente.
Montando um diretório host como um volume de dados
Você pode montar um diretório de uma VM host em um contêiner.
Console
gcloud
Use o sinalizador
--container-mount-host-path
para montar um diretório de VM host em um contêiner. O exemplo a seguir monta o diretório host/tmp
no contêiner em/logs
no modo leitura/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=ro
para montar um diretório host em modo somente leitura.Use o comando
gcloud compute instances update-container
com a sinalização--container-mount-host-path
para atualizar montagens de diretório de host em um contêiner. Use o sinalizador--remove-container-mounts
para remover montagens de volume com os caminhos de montagem especificados. O exemplo a seguir remove uma montagem de caminho de host commount-path=/logs
:gcloud compute instances update-container busybox-vm \ --remove-container-mounts /logs
Se o caminho de montagem especificado não existir, ele será ignorado silenciosamente.
Montando o sistema de arquivos tmpfs como um volume de dados
Você pode montar um sistema de arquivos tmpfs vazio em um contêiner.
Console
gcloud
Use o sinalizador
--container-mount-tmpfs
para montar um sistema de arquivostmpfs
vazio em um contêiner. O exemplo a seguir monta um sistema de arquivostmpfs
no contêiner em/cache
no modo leitura/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-container
com a sinalização--container-mount-tmpfs
para atualizar montagenstmpfs
em um contêiner. Use o sinalizador--remove-container-mounts
para remover uma montagemtmpfs
com o caminho de montagem especificado durante a atualização. O exemplo a seguir 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, ele será ignorado silenciosamente.
Montar um disco permanente como volume de dados
Com o Container-Optimized OS 69 ou posterior, você pode montar discos permanentes de uma VM host em um contêiner.
Pré-requisitos
Console
gcloud
Use o comando
gcloud compute instances create-with-container
ou o comandogcloud compute instances update-container
com a sinalização--container-mount-disk
para montar um disco permanente em um contêiner.O exemplo a seguir monta dois discos,
my-data-disk
emy-scratch-disk
, no contêiner 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
Observe que o sinalizador
--disk
anexamy-data-disk
, o sinalizador--create-disk
cria e anexamy-scatch-disk
e o sinalizador--container-mount-disk
monta os discos anexados ao contêiner. Como ummode
não é especificado paramy-scratch-disk
, esse disco é montado no contêiner no modo leitura/gravação por padrão.Use o comando
gcloud compute instances update-container
com a sinalização--container-mount-disk
para montar discos anexados adicionais ou para modificar montagens de disco existentes.Use o sinalizador
--remove-container-mounts
para remover uma montagem de volume de disco com o caminho de montagem especificado. O exemplo a seguir altera o modo de montagem demy-data-disk
para leitura/gravação 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 você passa para o sinalizador
--remove-container-mounts
não existir, ele será ignorado silenciosamente.Publicação de portas de contêiner
VMs com contêineres usam o modo de rede do host , onde um contêiner compartilha a pilha de rede do host e todas as interfaces do host ficam disponíveis para o contêiner.
As portas de contêiner têm um mapeamento individual para as portas da VM host. Por exemplo, uma porta 80 de contêiner é mapeada para a porta 80 da VM do host. O Compute Engine não oferece suporte à sinalização de publicação de porta (
-p
), e você não precisa especificá-la para que o mapeamento funcione.Para publicar as portas de um contêiner, configure regras de firewall para permitir o acesso às portas da instância de VM host. As portas correspondentes do container são acessíveis automaticamente, de acordo com as regras do firewall.
Exemplo: Publicando a porta 80 para um contêiner NGINX
O exemplo a seguir mostra como criar uma instância de VM com um contêiner NGINX e permitir o tráfego para a porta 80 do contêiner.
O que vem a seguir
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-04-21 UTC.
-