Diretório de artigos
1. O Docker fornece comandos para gerenciar imagens e contêineres
Exportar imagem (docker save) e importar imagem (docker load):
Este é um par de operações para trabalhar com imagens do Docker. Esta operação compactará todas as camadas de imagem e metadados em um arquivo tar. Você pode importar esse arquivo tar para qualquer ambiente do Docker usando o comando docker load. Por exemplo:
导出:docker save -o <保存路径>/myimage.tar myimage:latest
导入:docker load -i <路径>/myimage.tar
Este método é usado principalmente para compartilhar ou migrar toda a imagem, incluindo todas as versões, tags e histórico.
Contêiner de exportação (exportação docker) e contêiner de importação (importação docker):
Este também é um par de operações para trabalhar com contêineres do Docker. O comando docker export pode exportar o sistema de arquivos de um contêiner em execução como um arquivo tar. Você pode então importar este arquivo tar como uma nova imagem usando o comando docker import. Por exemplo:
导出:docker export <容器ID> > mycontainer.tar
导入:docker import mycontainer.tar
Este método é usado principalmente para compartilhar ou migrar o estado atual do contêiner. Isso não inclui o histórico ou os metadados do contêiner, como variáveis de ambiente, portanto, geralmente é usado para obter instantâneos do contêiner.
总的来说,如果你想要保存整个镜像,包括它的所有历史和标签,那么你应该使用 docker save 和 docker load命令。而如果你只是想要保存一个容器的当前状态,那么你应该使用 docker export 和 docker import 命令。
2. Os cenários de uso e aplicação dos quatro comandos
1. Caso 1
Suponha que você criou uma nova imagem do Docker em seu ambiente de desenvolvimento, esta imagem contém seu aplicativo e todas as dependências, você testou esta imagem e a marcou, chame-a de "myapp:1.0". Agora você deseja mover esta imagem para produção. Nesse cenário, você deve usar os comandos docker save e docker load. A operação específica é a seguinte:
No ambiente de desenvolvimento, execute docker save -o myapp_1.0.tar myapp:1.0. Isso criará um arquivo tar chamado "myapp_1.0.tar" que contém todas as camadas e metadados da imagem "myapp:1.0".
Você pode copiar este arquivo tar para seu ambiente de produção e executar docker load -i myapp_1.0.tar lá. Isso importará a imagem "myapp:1.0", que você pode usar imediatamente na produção.
2. Caso 2
Suponha que você execute uma tarefa de análise de dados complexa em um contêiner e a tarefa produza alguns resultados após ser executada por várias horas. Você deseja salvar o estado atual deste contêiner para que possa continuar a partir deste ponto posteriormente. Nesse cenário, você deve usar os comandos docker export e docker import. A operação específica é a seguinte:
Você executa docker export mycontainer > mycontainer.tar, que criará um arquivo tar contendo o sistema de arquivos de "mycontainer".
Em seguida, você pode usar o comando docker import mycontainer.tar myanalysis:snapshot1 para criar uma nova imagem que contém o estado do seu contêiner no momento em que a tarefa está sendo executada. Você pode restaurar esta imagem mais tarde para continuar suas tarefas de análise de dados.
请注意,docker export 和 docker import 命令不会保存或恢复容器的历史或元数据,如环境变量。因此,它们更适合于保存和恢复容器的“快照”,而不是用于迁移或分享镜像。
Em segundo lugar, a análise de parâmetros dos quatro comandos
1. comando docker save:
O parâmetro -o indica o caminho e o nome do arquivo de saída, seguido do nome da imagem a ser salva. Por exemplo, docker save -o /path/to/save/myimage.tar myimage:tag
2. comando docker load:
O parâmetro -i indica o caminho e o nome do arquivo de entrada. Por exemplo, docker load -i /path/to/load/myimage.tar
3. comando de exportação do docker:
O comando docker export é seguido diretamente pelo ID ou nome do contêiner. Por exemplo, docker export mycontainer > /path/to/save/mycontainer.tar
4. comando de importação do docker:
Os argumentos para a importação do docker incluem o caminho e o nome do arquivo de entrada, bem como o nome e o rótulo da nova imagem. Por exemplo, docker import /path/to/import/mycontainer.tar newimage:tag
注意:在 docker save 和 docker load 的操作中,你在操作镜像,镜像名称后可以带标签(如果不指定标签,默认为 latest)。而在 docker export 和 docker import 的操作中,你在操作容器(对应的是一个容器的 ID 或名称)和镜像(可以指定新的镜像名称和标签)。