1 docker打包容器,commit之后变得非常大的问题
最近基于Ubuntu的镜像构建了一个容器用于在其中编译自己的一些C++项目,由于安装了很多的编译依赖,比如gcc、g++、cmake、ffmpeg、opencv等,在编译项目完成之后准备commit一个镜像发现居然有几十G。
后面才知道,docker的运行方式是以层的概念实现的,如果不是以Dockerfile的方式制作镜像,而是直接在容器里面进行命令操作,比如说apt-get install
等操作,在容器中所作的所有操作都会在构建镜像的时候运行一遍,每一个操作所涉及控件都会称为镜像的一部分,这就会导致镜像变得非常大。
2 docker镜像瘦身的方法
解决上述问题最简单的方法就是只将容器内根目录下的文件打包,复制到宿主机,然后再import
成镜像。
首先进入到容器中,执行以下命令对容器根目录下的文件打包
tar -cvf my_docker.tar --exclude=/proc --exclude=/sys --exclude=my_docker.tar /
然后将打包的压缩包拷贝到宿主机中
docker cp 容器ID:/my_docker.tar /docker_package/my_docker.tar
然后进入到宿主机的目录,执行以下命令生成镜像
cd /docker_package
cat my_docker.tar | sudo docker import - my_docker
执行完成之后,使用docker images
命令查看,看是否新增了一个名为my_docker
的镜像,并且体积相比之前有了大幅度减少。
参考
本文作者:StubbornHuang
版权声明:本文为站长原创文章,如果转载请注明原文链接!
原文标题:Docker – 解决容器commit之后镜像变得非常大的问题
原文链接:https://www.stubbornhuang.com/2946/
发布于:2024年01月09日 10:05:25
修改于:2024年01月09日 10:05:25
声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。
评论
52