docker-compose镜像整体导出和还原

2 篇文章 0 订阅
2 篇文章 0 订阅

背景

项目开发过程中主要使用docker-compose方式部署,客户机器仅有局域网内网环境,无法从dockerhub拉取镜像,故采取本地打包镜像到客户机器再启动的方式进行部署。

导出镜像

命令:
所有镜像一起打包:
docker-compose images| awk 'FNR > 2 {print $2":"$3}'| sort -u|xargs docker save -o images.tar
每个镜像分别打包:
docker-compose images | awk 'FNR > 2 {print $2":"$3}'| sort -u | sed 's/.*\/\(.*\?\):\(.*\)/\0 -o \1_\2.tar/g' | xargs -L 1 docker save
释义:

  1. docker-compose images列出当前docker-compose文件使用到的镜像信息。该命令可根据docker-compose实际情况进行调整,如指定docker-compose.yml可以加上-f {filename}.yml或者指定项目名-p {project_name}
    示例输出:
       Container                        Repository                     Tag          Image Id      Size  
-----------------------------------------------------------------------------------------------------
	example-mysql        				mysql                           8         5c62e459e087   530 MB 
  1. awk 'FNR > 2 {print $2":"$3}'从1步骤中获取Repository:Tag镜像列表,请勿使用Image Id(重新导入时将丢失镜像名和版本信息)。不保证所有版本1步骤输出都相同,推荐查看1步骤输出再自定义该过滤条件。
    示例输出:
mongo:4.4.3
apachepulsar/pulsar-manager:v0.2.0
apachepulsar/pulsar:2.7.1
emqx/emqx:4.2.5
mongo:4.4.3
mongo:4.4.3
mongo:4.4.3
redis:latest
  1. sort -u去除重复镜像
    示例输出:
apachepulsar/pulsar:2.7.1
apachepulsar/pulsar-manager:v0.2.0
emqx/emqx:4.2.5
mongo:4.4.3
redis:latest
  1. xargs docker save -o images.tar使用2步骤的镜像信息作为docker save命令参数合并导出多个镜像到images.tar文件中

恢复镜像

命令:
docker load -i images.tar

  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在Windows系统中,可以使用以下步骤导出Docker镜像: 1. 首先,使用命令`docker ps -a`查看本机所有的容器,找到需要导出镜像的容器ID。 2. 使用命令`docker export 容器ID > 文件名.tar`将镜像导出为一个文件,例如`docker export f299f501774c > hangger_server.tar`。导出的文件将保存在当前的Docker终端目录下。 3. 完成导出后,可以通过`docker import 文件名.tar 新镜像名`命令将导出镜像文件导入进来,例如`docker import - new_hangger_server < hangger_server.tar`。使用命令`docker images`可以验证导入的镜像是否成功。 总结来说,Docker的`export`命令用于将容器导出为一个镜像文件,`import`命令用于将镜像文件导入为一个新的镜像。这样可以在不同的环境中共享和使用镜像。 请注意,在使用`export`命令导出镜像时,会丢失镜像的所有历史记录和元数据信息,只会保存容器当时的快照状态。而使用`save`命令保存和加载镜像可以保留镜像的历史记录,可以进行回滚操作。 在Windows系统中,导出Docker镜像的场景可以包括制作基础镜像和部署到无法连外网的客户服务器。比如,可以从一个Ubuntu镜像启动一个容器,安装软件和进行设置后,使用`export`命令将其保存为一个基础镜像。然后,可以将该镜像分发给其他人使用,作为基础的开发环境。另外,如果应用是使用Docker Compose编排的多个镜像组合,但要部署的客户服务器无法连外网,可以使用`save`命令将所需镜像打包,并在客户服务器上使用`load`命令加载。 总结来说,在Windows系统中,可以通过`docker export`命令将Docker镜像导出为一个文件,再通过`docker import`命令将文件导入为一个新的镜像。这样可以实现镜像的导入和导出,方便在不同环境下使用和共享镜像。同时,还可以使用`docker save`命令将多个镜像打包到一个文件中,并使用`docker load`命令加载。不同命令的应用场景根据需求和具体情况选择合适的操作。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [Docker - 实现本地镜像导出、导入(export、import、save、load)](https://blog.csdn.net/wozaizhe56/article/details/127642845)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* [windows10下安装的docker 导出镜像到另一个电脑](https://blog.csdn.net/yangyong1250/article/details/128356749)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值