Como usar o comando docker image load para carregar imagens

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker load para carregar imagens Docker de arquivos. Esta é uma habilidade crucial para transferir imagens entre máquinas sem depender de um registro Docker (Docker registry). Você começará preparando um arquivo de imagem Docker usando docker save.

Após a preparação, você explorará diferentes métodos de carregamento da imagem. Isso inclui carregar uma imagem da entrada padrão (STDIN), carregar de um arquivo usando a flag --input, e carregar especificamente uma variante de plataforma usando a flag --platform. Ao completar estas etapas, você obterá experiência prática no gerenciamento de imagens Docker offline.

Preparar um arquivo de imagem Docker

Nesta etapa, aprenderemos como preparar um arquivo de imagem Docker. Isso é útil para transferir imagens Docker entre diferentes máquinas sem depender de um registro Docker (Docker registry). Usaremos o comando docker save para criar um arquivo de uma imagem Docker existente.

Primeiro, vamos puxar uma imagem Docker simples que podemos usar para esta demonstração. Usaremos a imagem hello-world.

docker pull hello-world

Você deve ver uma saída indicando que a imagem está sendo puxada e que é uma imagem muito pequena.

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

Agora que temos a imagem hello-world, podemos salvá-la em um arquivo de arquivo tar. Vamos salvá-la em um arquivo chamado hello-world.tar no diretório ~/project.

docker save -o ~/project/hello-world.tar hello-world

A flag -o especifica o caminho do arquivo de saída. O comando salvará a imagem hello-world no arquivo especificado. Você não deve ver nenhuma saída se o comando for bem-sucedido.

Para verificar se o arquivo de arquivo foi criado, você pode listar os arquivos no diretório ~/project.

ls ~/project

Você deve ver hello-world.tar listado entre os arquivos.

hello-world.tar

Este arquivo hello-world.tar agora contém os dados da imagem Docker para a imagem hello-world. Você pode transferir este arquivo para outra máquina e carregar a imagem dele usando o comando docker load, que abordaremos nas próximas etapas.

Carregar uma imagem Docker de STDIN

Nesta etapa, aprenderemos como carregar uma imagem Docker da entrada padrão (STDIN). Esta é outra maneira de carregar um arquivo de imagem, particularmente útil ao canalizar a saída de docker save diretamente para docker load.

Primeiro, vamos remover a imagem hello-world que puxamos e salvamos na etapa anterior. Isso garantirá que estamos carregando a imagem do arquivo e não usando a existente.

docker rmi hello-world

Você deve ver uma saída indicando que a imagem foi excluída.

Untagged: hello-world:latest
Deleted: sha256:...

Agora, usaremos o comando cat para gerar o conteúdo do arquivo hello-world.tar para a saída padrão e, em seguida, canalizaremos essa saída para o comando docker load.

cat ~/project/hello-world.tar | docker load

O comando docker load, quando usado sem a flag --input, lê o arquivo de imagem de STDIN. Você deve ver uma saída indicando que as camadas da imagem estão sendo carregadas.

...
Loaded image: hello-world:latest

Para verificar se a imagem foi carregada com sucesso, você pode listar as imagens Docker disponíveis.

docker images

Você deve ver a imagem hello-world listada na saída.

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

Isso demonstra como carregar uma imagem Docker de um arquivo de arquivo canalizado para STDIN.

Carregar uma imagem Docker de um arquivo usando --input

Nesta etapa, aprenderemos como carregar uma imagem Docker de um arquivo usando a flag --input com o comando docker load. Esta é a maneira mais comum de carregar um arquivo de imagem de um arquivo.

Primeiro, vamos novamente remover a imagem hello-world para garantir que estamos carregando-a do arquivo de arquivo.

docker rmi hello-world

Você deve ver a saída confirmando a exclusão da imagem.

Untagged: hello-world:latest
Deleted: sha256:...

Agora, usaremos o comando docker load com a flag --input para especificar o caminho para o arquivo hello-world.tar que criamos na primeira etapa.

docker load --input ~/project/hello-world.tar

A flag --input diz ao docker load para ler o arquivo de imagem do arquivo especificado em vez de STDIN. Você deve ver uma saída semelhante à de quando carrega de STDIN, indicando que as camadas estão sendo carregadas.

...
Loaded image: hello-world:latest

Para confirmar que a imagem foi carregada, liste as imagens Docker novamente.

docker images

A imagem hello-world deve estar presente na lista.

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

Este método é geralmente preferido quando você tem o arquivo de imagem salvo como um arquivo, pois é mais explícito do que canalizar o conteúdo do arquivo para STDIN.

Carregar uma variante de plataforma específica usando --platform

Nesta etapa, exploraremos como carregar uma variante de plataforma específica de uma imagem Docker de um arquivo usando a flag --platform. Isso é particularmente útil quando um arquivo de imagem contém variantes para múltiplas arquiteturas (por exemplo, linux/amd64, linux/arm64).

Primeiro, vamos remover a imagem hello-world novamente para começar do zero.

docker rmi hello-world

Você deve ver a saída confirmando a exclusão da imagem.

Untagged: hello-world:latest
Deleted: sha256:...

Agora, usaremos o comando docker load com a flag --input para especificar o arquivo de arquivo e a flag --platform para especificar a plataforma desejada. Para este exemplo, especificaremos linux/amd64, que é a arquitetura da VM LabEx.

docker load --input ~/project/hello-world.tar --platform linux/amd64

A flag --platform garante que o Docker carregue apenas a variante da imagem que corresponde à arquitetura e ao sistema operacional especificados. Embora a imagem hello-world seja muito simples e provavelmente não tenha variações significativas de plataforma em seu arquivo, isso demonstra o uso da flag. Você deve ver a saída indicando que as camadas estão sendo carregadas.

...
Loaded image: hello-world:latest

Para confirmar que a imagem foi carregada, liste as imagens Docker.

docker images

A imagem hello-world deve estar presente na lista.

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

Usar a flag --platform é importante ao trabalhar com arquivos de imagem de múltiplas arquiteturas para garantir que você carregue a variante correta para seu ambiente.

Resumo

Neste laboratório, aprendemos como preparar um arquivo de imagem Docker usando o comando docker save, que é essencial para transferir imagens sem um registro (registry). Salvamos com sucesso a imagem hello-world em um arquivo tar.

Em seguida, exploramos diferentes métodos para carregar imagens Docker de arquivos usando o comando docker load. Aprendemos como carregar uma imagem da entrada padrão (STDIN), o que é útil para operações de piping, e como carregar uma imagem diretamente de um arquivo usando a flag --input. Finalmente, descobrimos como carregar uma variante de plataforma específica de uma imagem de um arquivo usando a flag --platform, demonstrando a flexibilidade do comando docker load para gerenciar imagens multi-plataforma.