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.



