内容纲要
概要描述
本文主要描述如何解决历史镜像层数过多导致的问题。使用该方法请一定要记录下历史修改信息,最好以备注方式添加进新的Dockerfile中并留存。
详细描述
1 备份镜像
docker tag : :_bak
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 st04:5000/transwarp/inceptor:transwarp-6.2.2-final
生成一个mynewimage:imported的1层镜像
4 生成Dockerfile与镜像
创建空目录用来放置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
5 生成镜像
docker build -t : .
6 上传镜像
docker push :