Como usar o comando docker container export para exportar o sistema de arquivos de um container

DockerBeginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá como usar o comando docker container export para exportar o sistema de arquivos de um container Docker. Começaremos criando e executando um container simples.

Após a criação do container, você explorará diferentes métodos para exportar o sistema de arquivos do container. Isso inclui exportar o sistema de arquivos diretamente para a saída padrão (STDOUT), exportá-lo para um arquivo usando redirecionamento de shell e, finalmente, exportá-lo para um arquivo usando a opção --output do comando docker container export.

Criar e executar um container simples

Nesta etapa, aprenderemos como criar e executar um container Docker simples. Um container é uma unidade padrão de software que empacota o código e todas as suas dependências para que o aplicativo seja executado de forma rápida e confiável de um ambiente de computação para outro.

Usaremos o comando docker run para criar e executar um container. A sintaxe básica é docker run [OPTIONS] IMAGE [COMMAND] [ARG...].

Vamos executar um container simples usando a imagem ubuntu e o comando echo. A imagem ubuntu é uma imagem mínima do sistema operacional Ubuntu.

docker run ubuntu echo "Hello from Docker!"

Quando você executa este comando pela primeira vez, o Docker primeiro verifica se a imagem ubuntu existe localmente. Se não existir, ele fará o pull da imagem do Docker Hub (o registro padrão). Em seguida, ele criará um novo container a partir desta imagem e executará o comando echo "Hello from Docker!" dentro do container. Após a conclusão do comando, o container será interrompido.

Você deve ver a saída Hello from Docker! no seu terminal.

Agora, vamos tentar executar um container que permanece em execução. Podemos usar a opção -d para executar o container em modo detached (em segundo plano) e o comando tail -f /dev/null para manter o container em execução sem consumir recursos significativos. Também daremos ao container um nome usando a opção --name para que possamos nos referir a ele facilmente mais tarde.

docker run -d --name my-ubuntu-container ubuntu tail -f /dev/null

Este comando fará o pull da imagem ubuntu (se ainda não estiver presente), criará um container chamado my-ubuntu-container e executará o comando tail -f /dev/null em modo detached. O comando exibirá o ID do container.

Para verificar se o container está em execução, você pode usar o comando docker ps, que lista os containers em execução.

docker ps

Você deve ver uma lista de containers em execução, incluindo my-ubuntu-container.

Exportar o sistema de arquivos do container para STDOUT

Nesta etapa, aprenderemos como exportar o sistema de arquivos de um container Docker. Exportar o sistema de arquivos de um container cria um arquivo tar dos conteúdos do container. Isso pode ser útil para criar backups, compartilhar estados de container ou inspecionar o conteúdo de um container.

Usaremos o comando docker export para exportar o sistema de arquivos. A sintaxe básica é docker export [OPTIONS] CONTAINER.

Vamos exportar o sistema de arquivos do my-ubuntu-container que criamos na etapa anterior. Por padrão, docker export envia o arquivo tar para a saída padrão (STDOUT).

docker export my-ubuntu-container

Quando você executa este comando, verá um fluxo de dados binários no seu terminal. Este é o arquivo tar do sistema de arquivos do container. Como são dados binários, não serão legíveis no terminal.

Para entender melhor o que está sendo exportado, podemos direcionar a saída para um comando que pode processar arquivos tar, como tar. No entanto, para esta etapa, estamos apenas focando na exportação para STDOUT.

O comando docker export exporta todo o sistema de arquivos do container, incluindo quaisquer alterações que você tenha feito desde que o container foi criado.

Exportar o sistema de arquivos do container para um arquivo usando redirecionamento

Na etapa anterior, exportamos o sistema de arquivos do container para STDOUT. Embora isso seja útil para direcionar a saída para outros comandos, é frequentemente mais prático salvar o sistema de arquivos exportado em um arquivo.

Podemos conseguir isso usando o redirecionamento do shell. O operador > redireciona a saída padrão de um comando para um arquivo.

Vamos exportar o sistema de arquivos do my-ubuntu-container para um arquivo chamado ubuntu-filesystem.tar no seu diretório atual (~/project).

docker export my-ubuntu-container > ubuntu-filesystem.tar

Este comando executará docker export my-ubuntu-container e redirecionará a saída binária (o arquivo tar) para o arquivo ubuntu-filesystem.tar. Você não verá os dados binários no seu terminal desta vez.

Após a conclusão do comando, você pode verificar se o arquivo foi criado e verificar seu tamanho usando o comando ls -lh.

ls -lh ubuntu-filesystem.tar

Você deve ver o arquivo ubuntu-filesystem.tar listado com seu tamanho. O tamanho dependerá do conteúdo da imagem ubuntu.

Você também pode usar o comando file para confirmar que o arquivo criado é um arquivo tar.

file ubuntu-filesystem.tar

A saída deve indicar que o arquivo é um arquivo tar, por exemplo, ubuntu-filesystem.tar: POSIX tar archive.

Exportar o sistema de arquivos do container para um arquivo usando a opção --output

Na etapa anterior, usamos o redirecionamento do shell (>) para salvar o sistema de arquivos do container exportado em um arquivo. O Docker também fornece uma opção dedicada, --output ou -o, para especificar o arquivo de saída diretamente com o comando docker export. Isso pode, às vezes, ser mais conveniente do que usar o redirecionamento do shell.

Vamos exportar o sistema de arquivos do my-ubuntu-container novamente, desta vez usando a opção --output, e salvá-lo em um arquivo chamado ubuntu-filesystem-output.tar no seu diretório atual (~/project).

docker export --output ubuntu-filesystem-output.tar my-ubuntu-container

Este comando é equivalente ao uso de redirecionamento, mas usa uma opção específica do Docker. O arquivo tar será salvo diretamente no arquivo especificado.

Após a conclusão do comando, você pode verificar a criação e o tamanho do novo arquivo usando ls -lh.

ls -lh ubuntu-filesystem-output.tar

Você deve ver o arquivo ubuntu-filesystem-output.tar listado. Seu tamanho deve ser semelhante ao arquivo ubuntu-filesystem.tar criado na etapa anterior.

Você também pode usar o comando file para confirmar que ubuntu-filesystem-output.tar é um arquivo tar.

file ubuntu-filesystem-output.tar

A saída deve confirmar que é um arquivo tar.

Usar a opção --output é uma maneira limpa de especificar o arquivo de destino para o sistema de arquivos exportado.

Resumo

Neste laboratório, aprendemos como criar e executar containers Docker simples. Usamos o comando docker run para executar comandos dentro de um container e para executar containers em modo detached (desanexado) com um nome específico. Também usamos o comando docker ps para verificar se um container está em execução.

Em seguida, exploramos como exportar o sistema de arquivos de um container usando o comando docker export. Aprendemos como exportar o sistema de arquivos para a saída padrão (STDOUT) e como redirecionar a saída para um arquivo. Finalmente, aprendemos como usar a opção --output com docker export para especificar o arquivo de saída diretamente.