如何解决层数过多的历史镜像问题

  其他常见问题
内容纲要

概要描述

本文主要描述如何解决历史镜像层数过多导致的问题。使用该方法请一定要记录下历史修改信息,最好以备注方式添加进新的Dockerfile中并留存。

详细描述

1 备份镜像

 docker tag : :_bak

file

2 创建合并镜像层数的脚本mergeLayer

#!/bin/bash

docker run --name mycontainer $1 /bin/bash
docker export --output=mycontainer.tar mycontainer
cat mycontainer.tar | docker import - mynewimage:imported
docker rm mycontainer
rm mycontainer.tar

给脚本做赋权

 chmod +x mergeLayer

3重新生成镜像

确定要合并层数的镜像 :,执行命令 sh mergeLayer :

sh mergeLayer st04:5000/transwarp/inceptor:transwarp-6.2.2-final

file
生成一个mynewimage:imported的1层镜像
file

4 生成Dockerfile与镜像

创建空目录用来放置Dockerfile

获取要合并层数的镜像:的ENV参数,写入Dockerfile

docker inspect : | jq -r .'[]'.ContainerConfig.Env[] > Dockerfile
sed -i '1,$ s/^/ENV /g' Dockerfile
sed -i '1i FROM mynewimage:imported' Dockerfile

本例为

docker inspect st04:5000/transwarp/inceptor:transwarp-6.2.2-final | jq -r .'[]'.ContainerConfig.Env[] > Dockerfile
sed -i '1,$ s/^/ENV /g' Dockerfile
sed -i '1i FROM mynewimage:imported' Dockerfile

file

5 生成镜像

docker build -t : .

file
file

6 上传镜像

docker push :

file

这篇文章对您有帮助吗?

平均评分 0 / 5. 次数: 0

尚无评价,您可以第一个评哦!

非常抱歉,这篇文章对您没有帮助.

烦请您告诉我们您的建议与意见,以便我们改进,谢谢您。