转载自: docker-compose镜像整体导出和还原

背景

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

导出镜像

命令:
docker-compose images| awk 'FNR > 2 {print $2":"$3}'| sort -u|xargs docker save -o images.tar
释义:

  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