Como usar o comando docker pull para baixar imagens

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker pull para baixar imagens Docker de registros (registries). Você explorará diferentes métodos para baixar imagens, incluindo baixar uma imagem específica por sua tag do Docker Hub, baixar uma imagem usando seu digest imutável para controle de versão garantido, baixar todas as imagens marcadas de um repositório e baixar imagens de registros diferentes do Docker Hub.

Ao concluir estas etapas, você obterá experiência prática na aquisição de imagens Docker, que é uma habilidade fundamental para construir e executar aplicações em contêineres. Você aprenderá como especificar versões e fontes de imagens, garantindo que você possa obter de forma confiável as imagens que precisa para seus projetos.

Baixar uma imagem específica por tag do Docker Hub

Nesta etapa, você aprenderá como baixar uma imagem Docker específica por sua tag do Docker Hub. O Docker Hub é um registro público que hospeda muitas imagens Docker oficiais e contribuídas pela comunidade. Baixar uma imagem significa baixá-la de um registro para sua máquina local.

O comando básico para baixar uma imagem é docker pull <nome_da_imagem>:<tag>. Se você não especificar uma tag, o Docker baixará a tag latest por padrão. No entanto, é uma boa prática especificar uma tag para garantir que você obtenha uma versão específica da imagem.

Vamos baixar a imagem hello-world com a tag latest. Esta é uma imagem muito pequena usada para testar se sua instalação do Docker está funcionando corretamente.

docker pull hello-world:latest

Você deve ver uma saída indicando que o Docker está baixando as camadas da imagem.

Using default tag: latest
latest: Pulling from library/hello-world
Digest: sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc
Status: Downloaded newer image for hello-world:latest
docker.io/library/hello-world:latest

Agora, vamos baixar a imagem ubuntu com uma tag específica, por exemplo, 20.04. Isso baixará a imagem Ubuntu 20.04 LTS.

docker pull ubuntu:20.04

Você verá uma saída semelhante mostrando o progresso do download.

20.04: Pulling from library/ubuntu
... (download progress) ...
Status: Downloaded newer image for ubuntu:20.04
docker.io/library/ubuntu:20.04

Para ver as imagens que você baixou, você pode usar o comando docker images.

docker images

Este comando lista todas as imagens armazenadas em sua máquina local, incluindo seu repositório, tag, ID da imagem, tempo de criação e tamanho.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
ubuntu        20.04     ...            ...            ...
hello-world   latest    ...            ...            ...

Você baixou com sucesso imagens específicas por tag do Docker Hub.

Baixar uma imagem por seu digest imutável

Nesta etapa, você aprenderá como baixar uma imagem Docker usando seu digest imutável. Embora as tags sejam convenientes, elas podem ser atualizadas para apontar para uma versão diferente da imagem. Um digest, por outro lado, é um identificador único para uma configuração específica da camada da imagem e seu histórico. É uma maneira mais confiável de garantir que você está baixando exatamente a mesma imagem todas as vezes.

O formato para baixar uma imagem por digest é docker pull <nome_da_imagem>@<digest>.

Primeiro, vamos encontrar o digest de uma imagem que já temos. Podemos usar o comando docker images --digests para mostrar os digests das imagens locais.

docker images --digests

Você deve ver uma saída semelhante a esta, incluindo a coluna DIGEST:

REPOSITORY    TAG       DIGEST                                                                      IMAGE ID       CREATED        SIZE
ubuntu        20.04     sha256:...   ...            ...
hello-world   latest    sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc   ...            ...            ...

Vamos usar o digest da imagem hello-world. Copie a string completa do digest (começando com sha256:).

Agora, vamos tentar baixar a imagem hello-world novamente, mas desta vez usando seu digest. Substitua <digest> pelo digest real que você copiou.

docker pull hello-world@sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc

Como você provavelmente já tem essa camada de imagem, o Docker relatará que a imagem está atualizada.

sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc: Pulling from library/hello-world
Digest: sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc
Status: Downloaded newer image for hello-world@sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc
docker.io/library/hello-world@sha256:f52335ce493f8f15cfcf46725b2909db9087b688aedabbbd2a167ae30b6da6fc

Baixar por digest é particularmente útil em ambientes de produção ou scripts automatizados onde você precisa garantir que está implantando uma versão específica e imutável de uma imagem.

Você pode verificar as imagens novamente usando docker images --digests. Você verá a imagem hello-world listada, potencialmente com a tag e o digest se você baixou por tag anteriormente.

docker images --digests

Baixar todas as imagens com tags de um repositório

Nesta etapa, você aprenderá como baixar todas as imagens com tag de um repositório específico no Docker Hub. Isso pode ser útil quando você deseja baixar várias versões de uma imagem para testes ou outros propósitos.

Para baixar todas as imagens com tag de um repositório, você pode usar o comando docker pull -a <nome_da_imagem>. A flag -a significa "all-tags" (todas as tags).

Vamos tentar baixar todas as imagens com tag do repositório alpine. Alpine é uma distribuição Linux leve, frequentemente usada em contêineres.

docker pull -a alpine

Este comando iniciará o download de todas as imagens no repositório alpine que possuem uma tag. Você verá a saída mostrando o download de várias tags como latest, 3.14, 3.15, etc.

Using default tag: latest
latest: Pulling from library/alpine
... (download progress for various tags) ...
Status: Downloaded newer image for alpine:latest
Status: Downloaded newer image for alpine:3.14
Status: Downloaded newer image for alpine:3.15
...
docker.io/library/alpine:latest
docker.io/library/alpine:3.14
docker.io/library/alpine:3.15
...

Dependendo do número de tags no repositório, este comando pode levar algum tempo para ser concluído.

Depois que o comando for concluído, você pode usar docker images para ver todas as imagens alpine que você baixou.

docker images | grep alpine

Você verá uma lista de imagens alpine com diferentes tags.

REPOSITORY    TAG       IMAGE ID       CREATED        SIZE
alpine        latest    ...            ...            ...
alpine        3.14      ...            ...            ...
alpine        3.15      ...            ...            ...
...

Este método é eficiente para baixar várias versões de uma imagem de um único repositório.

Baixar uma imagem de um registro diferente

Nesta etapa, você aprenderá como baixar uma imagem Docker de um registro diferente do Docker Hub. Embora o Docker Hub seja o padrão, pode ser necessário baixar imagens de registros privados, registros de provedores de nuvem (como Google Container Registry, Amazon Elastic Container Registry) ou outros registros públicos.

Para baixar uma imagem de um registro diferente, você precisa especificar o nome do host (hostname) do registro antes do nome da imagem. O formato é tipicamente <registry_hostname>/<image_name>:<tag> ou <registry_hostname>/<user_or_organization>/<image_name>:<tag>.

Para este exemplo, baixaremos uma imagem do Google Container Registry (GCR). Baixaremos a imagem hello-app do projeto google-samples. O nome do host do registro para GCR é gcr.io.

docker pull gcr.io/google-samples/hello-app:1.0

Este comando diz ao Docker para baixar a imagem chamada hello-app com a tag 1.0 do registro localizado em gcr.io dentro do projeto google-samples.

Você verá a saída indicando o processo de download do registro especificado.

1.0: Pulling from google-samples/hello-app
... (download progress) ...
Status: Downloaded newer image for gcr.io/google-samples/hello-app:1.0
gcr.io/google-samples/hello-app:1.0

Após a conclusão do download, você pode listar suas imagens locais usando docker images para ver a imagem que você acabou de baixar do GCR.

docker images

Você deve ver gcr.io/google-samples/hello-app listado em suas imagens.

REPOSITORY                         TAG       IMAGE ID       CREATED        SIZE
gcr.io/google-samples/hello-app    1.0       ...            ...            ...
ubuntu                             20.04     ...            ...            ...
hello-world                        latest    ...            ...            ...
alpine                             latest    ...            ...            ...
alpine                             3.14      ...            ...            ...
alpine                             3.15      ...            ...            ...
...

Isso demonstra como baixar imagens de registros diferentes do Docker Hub padrão, especificando o nome do host do registro.

Resumo

Neste laboratório, você aprendeu como usar o comando docker pull para baixar imagens Docker de registros. Você começou baixando imagens específicas do Docker Hub usando suas tags, entendendo que especificar uma tag é crucial para obter uma versão específica. Você também aprendeu como visualizar as imagens que você baixou localmente usando o comando docker images.

O laboratório demonstrou ainda como baixar uma imagem usando seu digest imutável, garantindo que você recupere exatamente a mesma versão da imagem, independentemente das alterações na tag. Você também explorou o download de todas as imagens com tag de um repositório e o download de imagens de registros diferentes do Docker Hub, expandindo sua capacidade de acessar imagens de várias fontes.