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.



