随着不断构建docker镜像,造成了镜像越来越大
那么我们可以在目标镜像中先压缩整个系统
1.删除多余文件 2.压缩整个系统 3.拖拽轻量级镜像 docker run -tdi --name ubuntu1 ubuntu /bin/bash 4.docker cp 备份文件 ubuntu1:备份文件 5.解压备份文件,重新保存提交镜像
详细过程
#查看较大的文件 cd / du -shm * | sort -nr #删除 rm -rf 较大文件 #备份系统 nohup tar cvpzf /backup20191222.tgz --exclude=/proc --exclude=/nohup.out --exclude=/backup20191202.tgz --exclude=/mnt --exclude=/sys/ --exclude=/run / & #创建新环境 docker run -tdi --name ubuntu1 ubuntu /bin/bash docker exec -it ubuntu1 /bin/bash #在新容器中还原系统 tar xvpfz /backup20191222.tgz -C / #删除备份 rm -rf /backup20191222.tgz #提交镜像 docker commit ubuntu1 registry.cn-hangzhou.aliyuncs.com/mkmk/gpujupyter:sshtf20b1 #推送阿里云保存 docker push registry.cn-hangzhou.aliyuncs.com/mkmk/gpujupyter:sshtf20b1
压缩物体检测镜像
首先在完成的容器中打包 nohup tar cvpzf /backup20191225.tgz --exclude=/proc --exclude=/nohup.out --exclude=/backup20191225.tgz --exclude=/mnt --exclude=/sys/ --exclude=/run / & 输出 tar: Removing leading / from member names / 说明开始压缩 /sshd.sh tar: Exiting with failure status due to previous errors 压缩完成, 压缩有报错,不用管它 下载压缩文件保存 新建容器 docker run -tdi --net mynet10 --ip 10.10.20.3 --name litecentos --privileged=true centos:7 init #进入容器 docker exec -it litecentos /bin/bash #查看centos版本 cat /etc/centos-release CentOS Linux release 7.7.1908 (Core) (centos8 兼容性和 7不一样,先不采用) #宿主机执行 #把备份文件还原到 centos镜像 docker cp C:\work\fdockeriles\backup20191225.tgz litecentos:/backup20191225.tgz #进入容器解压文件 #进入容器 docker exec -it litecentos /bin/bash cd / #在新容器中还原系统 tar xvpfz /backup20191225.tgz -C / #删除备份 rm -rf /backup20191225.tgz 测试一下 systemctl enable sshd 如果没有输出代表没有问题 locale 输出如果不是 zh_CN.utf8 或者 C.utf8 则查看 locale -a [root@35db6a27e296 /]# locale -a C en_US.utf8 POSIX zh_CN.utf8 export LANG=zh_CN.utf8 或者 export LANG=C.utf8 #提交镜像 docker commit litecentos registry.cn-hangzhou.aliyuncs.com/mkmk/tfmodels:cpu14 #推送阿里云保存 docker push registry.cn-hangzhou.aliyuncs.com/mkmk/tfmodels:cpu14 压缩镜像成功