Conteúdo

Tutorial do docker save: exporte e carregue imagens (save, load, export e import)

docker save e docker load são usados para transferir imagens; docker export e docker import lidam com o sistema de arquivos de um contêiner, e as configurações da imagem podem ser diferentes. Para entender os conceitos básicos, consulte Imagens Docker.

Sintaxe

docker save [OPTIONS] IMAGE [IMAGE...]
docker load [OPTIONS]
docker export [OPTIONS] CONTAINER
docker import [OPTIONS] file|URL|- [REPOSITORY[:TAG]]

Parâmetros

ComandoParâmetroDescrição
save-o, --output stringGrava no arquivo especificado; se não for especificado, envia a saída para STDOUT
save--platform stringsSalva somente a plataforma especificada. Separe várias plataformas por vírgulas, por exemplo, linux/amd64,linux/arm64/v8
load-i, --input stringLê do arquivo tar especificado; se não for especificado, lê de STDIN
load--platform stringsCarrega somente a plataforma especificada
load-q, --quietNão exibe a saída do carregamento
export-o, --output stringGrava o sistema de arquivos do contêiner no arquivo especificado
import-c, --change listAplica instruções do Dockerfile à imagem criada
import-m, --message stringDefine a mensagem de commit da imagem importada
import--platform stringDefine a plataforma, se o servidor oferecer suporte a várias plataformas

Exemplos

Salvar uma imagem, compactar com gzip e carregar

$ docker save -o nginx.tar nginx:1.30-alpine

$ ls -lh nginx.tar
-rw-------    1 root     root       25.7M Oct 25 15:31 nginx.tar

$ docker save nginx:1.30-alpine | gzip > nginx.tar.gz && ls -lh nginx.tar.gz
-rw-r--r--    1 root     root       24.9M Oct 25 15:31 nginx.tar.gz

$ docker load -i nginx.tar.gz
Loaded image: nginx:1.30-alpine

$ docker images nginx
IMAGE               ID             DISK USAGE   CONTENT SIZE   EXTRA
nginx:1.30-alpine   47928bf67eb6       93.5MB           27MB   U
  • docker save -o grava a imagem em um arquivo tar; usado diretamente, o arquivo de 25.7MB contém os dados da imagem.
  • A imagem fica com 24.9MB após a compactação gzip, apenas 0.8MB a menos que o tar original. O efeito da compactação é limitado.
  • docker load -i consegue ler diretamente um arquivo compactado com gzip e carregar nginx:1.30-alpine.
  • Após o carregamento, docker images mostra a imagem. O valor DISK USAGE é 93.5MB, um dado diferente do tamanho do arquivo de arquivamento.

Exportar e importar um sistema de arquivos

$ docker export web -o web-fs.tar && ls -lh web-fs.tar
-rw-------    1 root     root       60.5M Oct 25 15:31 web-fs.tar

$ docker import web-fs.tar myweb:snapshot
sha256:56e3f92534ca8c5aedd8de576ae2433f1864d3d3b51de847a8dc8dd7d503da4d

$ docker run --rm myweb:snapshot cat /usr/share/nginx/html/hi.txt
hello

$ docker image inspect -f '{{.Config.Cmd}}' nginx:1.30-alpine
[nginx -g daemon off;]

$ docker image inspect -f '{{.Config.Cmd}}' myweb:snapshot
[]

$ docker run --rm myweb:snapshot
docker: Error response from daemon: no command specified

Run 'docker run --help' for more information
  • docker export grava o sistema de arquivos do contêiner web em um tar; em seguida, docker import cria a imagem myweb:snapshot.
  • A imagem importada ainda contém os arquivos: ao especificar cat /usr/share/nginx/html/hi.txt, você consegue ler hello.
  • .Config.Cmd de nginx:1.30-alpine contém nginx -g daemon off;, mas o .Config.Cmd de myweb:snapshot é um array vazio [].
  • Como a imagem importada não tem um comando padrão, executar docker run diretamente retorna no command specified. Você precisa especificar o comando ao executar.

Capítulos relacionados

Exercícios

Exercício: salve nginx:1.30-alpine em um arquivo compactado com gzip e, em seguida, carregue a imagem desse arquivo.

Resposta
docker save nginx:1.30-alpine | gzip > nginx.tar.gz
docker load -i nginx.tar.gz

Perguntas frequentes

Qual é a diferença entre docker save e docker export?

docker save arquiva uma imagem, que depois pode ser carregada com docker load; docker export exporta o sistema de arquivos de um contêiner, e docker import cria uma nova imagem a partir dele.

Quanto espaço a compactação gzip do resultado de docker save economiza?

Neste caso, o arquivo tar de nginx:1.30-alpine tem 25.7MB, e fica com 24.9MB após a compactação gzip. A diferença é pequena.

Por que executar docker run diretamente após docker import mostra no command specified?

O .Config.Cmd de myweb:snapshot, a imagem importada, é um array vazio [] e não há comando padrão. Especificar cat /usr/share/nginx/html/hi.txt permite ler o arquivo, mas executar sem informar um comando mostra no command specified.

Atualizado 26 de outubro de 2026