背景
项目开发过程中主要使用docker-compose方式部署,客户机器仅有局域网内网环境,无法从dockerhub拉取镜像,故采取本地打包镜像到客户机器再启动的方式进行部署。
导出镜像
命令:
docker-compose images| awk 'FNR > 2 {print $2":"$3}'| sort -u|xargs docker save -o images.tar
释义:
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
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
sort -u
去除重复镜像
示例输出:
apachepulsar/pulsar:2.7.1
apachepulsar/pulsar-manager:v0.2.0
emqx/emqx:4.2.5
mongo:4.4.3
redis:latest
xargs docker save -o images.tar
使用2步骤的镜像信息作为docker save
命令参数合并导出多个镜像到images.tar
文件中
恢复镜像
命令:
docker load -i images.tar