
Before you begin
- Labs create a Google Cloud project and resources for a fixed time
- Labs have a time limit and no pause feature. If you end the lab, you'll have to restart from the beginning.
- On the top left of your screen, click Start lab to begin
Publish your container image to Container Registry
/ 100
O Docker é uma plataforma aberta para desenvolvimento, envio e execução de aplicativos. Com ele, você pode separar os aplicativos da sua infraestrutura e tratá-la como um aplicativo gerenciado. A plataforma agiliza o envio de códigos, os testes e as implantações, além de encurtar o ciclo entre a criação e a execução do código.
Para isso, o Docker combina recursos de conteinerização do kernel com fluxos de trabalho e ferramentas que ajudam no gerenciamento e na implantação dos seus aplicativos.
Os contêineres do Docker podem ser usados diretamente no Kubernetes, o que facilita a execução no Kubernetes Engine. Depois de aprender os conceitos básicos do Docker, você terá as habilidades necessárias para começar a desenvolver aplicativos conteinerizados e no Kubernetes.
Neste laboratório, você vai aprender a:
Este é um laboratório de nível introdutório. Ele não exige experiência com o Docker e contêineres. Conhecer o Cloud Shell e a linha de comando é recomendável, mas não obrigatório.
Leia estas instruções. Os laboratórios são cronometrados e não podem ser pausados. O timer é iniciado quando você clica em Começar o laboratório e mostra por quanto tempo os recursos do Google Cloud vão ficar disponíveis.
Este laboratório prático permite que você realize as atividades em um ambiente real de nuvem, não em uma simulação ou demonstração. Você vai receber novas credenciais temporárias para fazer login e acessar o Google Cloud durante o laboratório.
Confira os requisitos para concluir o laboratório:
Clique no botão Começar o laboratório. Se for preciso pagar, você verá um pop-up para selecionar a forma de pagamento. No painel Detalhes do laboratório à esquerda, você vai encontrar o seguinte:
Se você estiver usando o navegador Chrome, clique em Abrir console do Google Cloud ou clique com o botão direito do mouse e selecione Abrir link em uma janela anônima.
O laboratório ativa os recursos e depois abre a página Fazer login em outra guia.
Dica: coloque as guias em janelas separadas lado a lado.
Se necessário, copie o Nome de usuário abaixo e cole na caixa de diálogo Fazer login.
Você também encontra o Nome de usuário no painel Detalhes do laboratório.
Clique em Seguinte.
Copie a Senha abaixo e cole na caixa de diálogo de boas-vindas.
Você também encontra a Senha no painel Detalhes do laboratório.
Clique em Seguinte.
Acesse as próximas páginas:
Depois de alguns instantes, o console do Google Cloud será aberto nesta guia.
O Cloud Shell é uma máquina virtual com várias ferramentas de desenvolvimento. Ele tem um diretório principal permanente de 5 GB e é executado no Google Cloud. O Cloud Shell oferece acesso de linha de comando aos recursos do Google Cloud.
Depois de se conectar, vai notar que sua conta já está autenticada, e que o projeto está configurado com seu PROJECT_ID. A saída contém uma linha que declara o projeto PROJECT_ID para esta sessão:
gcloud
é a ferramenta de linha de comando do Google Cloud. Ela vem pré-instalada no Cloud Shell e aceita preenchimento com tabulação.
Clique em Autorizar.
A saída será parecida com esta:
Saída:
Saída:
Exemplo de saída:
gcloud
, acesse o guia com informações gerais sobre a gcloud CLI no Google Cloud.
Resposta ao comando
Esse contêiner simples exibe a mensagem Hello from Docker!
. O comando é simples, mas observe na saída o número de etapas que ele executou. O daemon do Docker procurou a imagem do Hello World, não a encontrou no local, extraiu a imagem de um registro público chamado Docker Hub, criou um contêiner dessa imagem e o executou para você.
Resposta ao comando
Essa é a imagem extraída do registro público Docker Hub. O ID da imagem tem o formato de hash SHA256 (em inglês). Esse campo especifica a imagem do Docker que foi provisionada. Quando o daemon do Docker não encontra uma imagem no local, ele procura a imagem no registro público por padrão.
Resposta ao comando
Quando você executar esse comando pela segunda vez, o daemon do Docker vai encontrar a imagem no registro local e executar o contêiner a partir dela. Não será mais necessário extrair a imagem do Docker Hub.
Resposta ao comando
Não há contêineres em execução. Você já saiu dos contêineres do Hello World executados anteriormente.
docker ps -a
:Resposta ao comando
Essa resposta mostra metadados relativos à execução e o Container ID
, um UUID gerado pelo Docker para identificar o contêiner. Os Names
dos contêineres também são gerados aleatoriamente, mas podem ser especificados com o comando docker run --name [container-name] hello-world
.
Nesta seção, você vai criar uma imagem do Docker baseada em um aplicativo de nó simples.
test
.Dockerfile
:O arquivo instrui o daemon do Docker sobre como criar a imagem.
"."
.Dockerfile
. Agora você vai criar o aplicativo do nó e depois a imagem.
Esse é um servidor HTTP simples que detecta atividade na porta 80 e retorna "Hello World".
Agora crie a imagem.
"."
, que indica o diretório atual. Você precisa executar este comando dentro do diretório que contém o Dockerfile:A execução desse comando pode levar alguns minutos. Ao terminar, a resposta será parecida com esta:
O -t
nomeia e marca uma imagem com a sintaxe name:tag
. O nome da imagem é node-app
, e a tag
é 0.1
. É altamente recomendado usar a tag para criar imagens do Docker. Se você não especificar uma tag, ela vai receber o valor latest
por padrão. Dessa forma, será mais difícil distinguir as imagens mais recentes das mais antigas. Observe também como cada linha no Dockerfile
acima resulta em camadas de contêiner intermediárias à medida que a imagem é criada.
A saída será parecida com esta:
O node
é a imagem de base e o node-app
é a imagem que você criou. Não é possível remover o node
sem remover o node-app
primeiro. O tamanho da imagem é relativamente pequeno em comparação com as VMs. Outras versões da imagem do nó, como node:slim
e node:alpine
, podem ser ainda menores para facilitar a portabilidade. A redução do tamanho dos contêineres é explorada mais a fundo nos tópicos avançados. Todas as versões do repositório oficial estão disponíveis nesta página.
Resposta ao comando
A flag --name
permite nomear o contêiner. O -p
instrui o Docker a mapear a porta 4000 do host para a porta 80 do contêiner. Agora você pode acessar o servidor em http://localhost:4000
. Sem o mapeamento de portas, você não poderia acessar o contêiner em localhost.
+
) e teste o servidor:Resposta ao comando
O contêiner será executado enquanto o terminal inicial estiver em funcionamento. Se você quiser que o contêiner seja executado em segundo plano (não vinculado à sessão do terminal), será necessário especificar a sinalização -d
.
Resposta ao comando
docker ps
. Para conferir os registros, execute docker logs [container_id]
.docker logs 17b
se o ID do contêiner for 17bcaca6f....
Resposta ao comando
Agora modifique o aplicativo.
app.js
com um editor de texto da sua escolha, como o nano ou o vim, e substitua "Hello World" por outra string:0.2
a ela:Resposta ao comando
Observe que, na etapa 2, você usou uma camada de cache atual. Da etapa 3 em diante, as camadas serão modificadas porque você alterou o app.js
.
Resposta ao comando
Resposta ao comando
Resposta ao comando
Agora que você sabe como criar e executar contêineres, confira algumas práticas de depuração.
docker logs [container_id]
. Para seguir a saída do registro com o contêiner em execução, use a opção -f
.Resposta ao comando
Em alguns momentos, é melhor iniciar uma sessão interativa de Bash dentro do contêiner em execução.
docker exec
para fazer isso. Abra outro terminal (no Cloud Shell, clique no ícone +) e insira o seguinte comando:Com as flags -it
, aloque um pseudo-tty e mantenha o stdin aberto para interagir com um contêiner. Observe que o bash foi executado no diretório (/app) WORKDIR
especificado no Dockerfile
. Agora, você tem uma sessão de shell interativa dentro do contêiner para depurar.
Resposta ao comando
Resposta ao comando
Resposta ao comando
--format
para inspecionar campos específicos do JSON retornado. Exemplo:Exemplo de saída
Confira mais informações sobre depuração nos recursos a seguir da documentação do Docker:
Agora você vai enviar a imagem para o Google Artifact Registry. Depois disso, será preciso remover todos os contêineres e imagens para simular um ambiente novo. Após isso, extraia e execute os contêineres. Essa tarefa vai demonstrar a portabilidade dos contêineres do Docker.
Para enviar imagens para o registro privado hospedado pelo Artifact Registry, marque as imagens com um nome de registro. O formato é <regional-repository>-docker.pkg.dev/my-project/my-repo/my-image
.
É necessário criar um repositório antes de enviar imagens para ele. O envio de uma imagem não aciona a criação de um repositório e a conta de serviço do Cloud Build não tem permissões para criar repositórios.
No Menu de navegação, em "CI/CD", acesse o Artifact Registry > Repositórios.
Clique no ícone +CRIAR REPOSITÓRIO ao lado dos repositórios.
Especifique o nome do repositório como my-repository
.
Escolha Docker como o formato.
Em "Tipo de local", selecione Região e escolha o seguinte local:
Clique em Criar.
Antes de enviar ou extrair imagens, configure o Docker para usar a CLI do Google Cloud e autenticar solicitações ao Artifact Registry.
Y
quando solicitado.O comando atualiza a configuração do Docker. Agora é possível se conectar ao Artifact Registry no projeto do Google Cloud para enviar e extrair imagens.
node-app:0.2
.Resposta ao comando
Resposta ao comando (sujeita à variação):
Quando o envio terminar, em CI/CD no menu de navegação, acesse Artifact Registry > Repositórios.
Clique em my-repository. Você verá o contêiner node-app
do Docker:
Você pode se conectar a uma máquina virtual usando SSH, iniciar uma nova VM e instalar a gcloud. Para simplificar, remova todos os contêineres e imagens para simular um ambiente novo.
Remova as imagens secundárias do node:lts
antes de remover a imagem do nó.
Resposta ao comando
Neste ponto, você tem um ambiente praticamente novo.
Resposta ao comando
Clique em Verificar meu progresso para conferir a tarefa realizada. Se você publicou uma imagem de contêiner no Artifact Registry com êxito, vai receber uma pontuação de avaliação.
A portabilidade dos contêineres é apresentada nesta etapa. Enquanto o Docker estiver instalado no host (seja no local ou na VM), ele poderá extrair imagens de registros públicos ou privados e executar contêineres baseados nelas. Nenhuma dependência de aplicativo precisa ser instalada no host, com exceção do Docker.
Parabéns! Neste laboratório, você realizou diversas atividades práticas, incluindo a execução de contêineres com base em imagens públicas do Docker Hub. Você também criou suas próprias imagens de contêiner e as enviou para o Google Artifact Registry. Além disso, agora você tem as habilidades necessárias para depurar contêineres em execução de maneira eficaz e ainda ganhou experiência na execução de contêineres com base em imagens extraídas do Google Artifact Registry, aprimorando seu conhecimento e proficiência no Docker.
Esses treinamentos ajudam você a aproveitar as tecnologias do Google Cloud ao máximo. Nossas aulas incluem habilidades técnicas e práticas recomendadas para ajudar você a alcançar rapidamente o nível esperado e continuar sua jornada de aprendizado. Oferecemos treinamentos que vão do nível básico ao avançado, com opções de aulas virtuais, sob demanda e por meio de transmissões ao vivo para que você possa encaixá-las na correria do seu dia a dia. As certificações validam sua experiência e comprovam suas habilidades com as tecnologias do Google Cloud.
Manual atualizado em 29 de fevereiro de 2024
Laboratório testado em 29 de fevereiro de 2024
Copyright 2025 Google LLC. Todos os direitos reservados. Google e o logotipo do Google são marcas registradas da Google LLC. Todos os outros nomes de produtos e empresas podem ser marcas registradas das respectivas empresas a que estão associados.
Este conteúdo não está disponível no momento
Você vai receber uma notificação por e-mail quando ele estiver disponível
Ótimo!
Vamos entrar em contato por e-mail se ele ficar disponível
One lab at a time
Confirm to end all existing labs and start this one