大家可以慢慢体会以上对话。但无论怎样,对于已经投入 SSD 怀抱的同学们来说,要在宝贵的SSD上存放50个大小为800MB左右不等的Docker Image 是绝对不可以接受的!!但偏偏从 Docker Hub上下载到的Image,大部分都是这个数字,甚至远大于这个。看着逐渐被Docker侵蚀的磁盘空间,楼主决定给Docker文件进行大瘦身。结果发现效果很显著,请看下图
颤抖吧,凡人!100MB 的 Redis 压缩到只有7MB !!!
首先纠正一下基本概念:
1. Docker 不是虚拟机 (切记)
2. Docker 里面的程序运行时不需要完整的操作系统!
3. CoreOS,RHEL, Ubuntu, CentOS,等等等,它们都是一个操作系统!
怎么做到的,基本就是以下几个步骤
1. 使用 Busybox 的 Install 命令创建一个最小化的系统环境
2. 删除不必要的各种系统文件,具体哪些是不必要的,那就得需要具体程序具体分析,楼主花了大量时间来分析每个程序,现在楼主几乎可以把这些APP的依赖项倒着背出来。
3. 将这些文件打包成 rootfs.tar
4. 使用 Dockerfile 的 ADD 指令用 rootfs.tar 生成 Image
楼主不码字了,开始码代码,
1. 基于 Redis 2.8.13 ,生成一个最简 rootfs.tar
Dockerfile
2. 使用这个 rootfs.tar 生成最小的Redis镜像文件
Dockerfile
3. 运行一下试试
docker run --rm -it -p 6379:6379 microbox/redis
这个方法生成出来的镜像和普通的redis镜像没有任何区别,尽情使用,楼主已经先行释放了30GB的空间了。
学会这几招,快去给你项目中的 Docker 镜像瘦瘦身吧
使用 Docker Squash 可以控制镜像结构,减少不必要的层。安装 docker-squash 后,运行 docker-squash image:old-timage:new 即可减小镜像大小。选择较小的基础镜像,例如使用 python:3.9-slim 而不是 python:3.9,进一步使用 alpine 版本减少镜像。多阶段构建可显著减小镜像大小,它将 Dockerfile 分为...
Docker 的 Image 太大,怎么变小
1. 使用 Busybox 的 Install 命令创建一个最小化的系统环境 2. 删除不必要的各种系统文件,具体哪些是不必要的,那就得需要具体程序具体分析,楼主花了大量时间来分析每个程序,现在楼主几乎可以把这些APP的依赖项倒着背出来。3. 将这些文件打包成 rootfs.tar 4. 使用 Dockerfile 的 ADD 指令用 roo...
Docker 的 Image 太大,怎么变小
只听说让限制容器大小的。如果嫌弃image太大的话,就只能自己dockerfile构建出自己想要的镜像了。删除不需要的软件包。
Docker把存储占满了?怎么办,教你两个秘籍,通过prune或迁移overlay2_百 ...
方法一:利用prune命令清理首先,通过`docker system prune`命令查看当前磁盘使用情况。手动清理无用镜像和容器时,可以运行`docker image prune`和`docker container prune`。这将自动清理不再使用的资源。方法二:迁移overlay2文件夹如果`\/var\/lib\/docker\/overlay2`占用过大,可以尝试迁移这个目录。步骤如...
docker删除image
1. 使用 UI FOR Docker:首先,需要安装状态监控插件。执行以下命令创建图形化界面:docker run -d -p 9000:9000 --name ui_for_docker --restart=always --privileged -v \/var\/run\/docker.sock:\/var\/run\/docker.sock uifd\/ui-for-docker。之后,通过访问localhost:9000\/#...可以查看所有图像。
详解Docker中Image、Container与 Volume 的迁移
迁移数据卷较为复杂,Docker官方未提供简单方案。一个常见但不推荐的方法是直接访问Docker数据目录(如\/var\/lib\/docker\/volumes\/),进行打包操作。然而,这种方法是最低效的。参考《Use volumes | Docker Documentation》,推荐使用另一个容器将数据卷内容打包,然后通过挂载传递到宿主机。迁移过程包括创建...
docker仓库的镜像怎么删除
docker images往往不知不觉就占满了硬盘空间,为了清理冗余的image,可采用以下方法:1.进入root权限 sudo su 2.停止所有的container,这样才能够删除其中的images:docker stop $(docker ps -a -q)如果想要删除所有container的话再加一个指令:docker rm $(docker ps -a -q)3.查看当前有些什么...
Docker 占用资源膨胀那么快,你知道怎么清理?
docker image ls :列出镜像信息,-a 选项会列出 intermediate 镜像(就是其它镜像依赖的层)。 docker volume ls :列出数据卷。 docker network ls :列出 network。 docker info :显示系统级别的信息,比如容器和镜像的数量等。通过这些命令查看 docker 使用的资源情况后,相信你已经决定要...
怎样删除自建的docker-registry中的image
如果你的docker-registry是在container中,那么是无法使用命令删除image的,只能手动直接删除image文件。如果不是,那么可以使用docker rmi 镜像名 来进行删除
容器(container)和镜像(image)
Metadata Location: 在我自己的主机上,镜像层(image layer)的元数据被保存在名为”json”的文件中,比如说: \/var\/lib\/docker\/graph\/e809f156dc985...\/json e809f156dc985...就是这层的id 一个容器的元数据好像是被分成了很多文件,但或多或少能够在\/var\/lib\/docker\/containers\/<id>...