Bash 在不使用Dockerfile的情况下减少docker映像大小
几周前,我构建了一个映像,但没有使用Dockerfile 基本上,您可以从一个图像运行一个容器,编辑该容器,然后将其保存为新图像,退出、提交和推送。起初,我的图像在大小上是可以接受的,但现在它以我不理解的方式增长 例如,如果我需要编辑图像,我将:Bash 在不使用Dockerfile的情况下减少docker映像大小,bash,docker,optimization,continuous-integration,Bash,Docker,Optimization,Continuous Integration,几周前,我构建了一个映像,但没有使用Dockerfile 基本上,您可以从一个图像运行一个容器,编辑该容器,然后将其保存为新图像,退出、提交和推送。起初,我的图像在大小上是可以接受的,但现在它以我不理解的方式增长 例如,如果我需要编辑图像,我将: docker run——命名mycontainer——它来自/currentimage bash 编辑一个文件或配置一些东西 出口 docker提交自/currentimage docker从/currentimage推送 问题是更改文件中的一行会
docker run——命名mycontainer——它来自/currentimage bash
- 编辑一个文件或配置一些东西
- 出口
docker提交自/currentimage
docker从/currentimage推送
谢谢我无法告诉您为什么您的图像增长速度比您预期的快。但是,您可以使用导出/导入机制展平层,这可能会减小图像大小:
docker create --name foo from/currentimage
docker export foo | docker import - from/currentimage:flat
docker rm foo
docker inspect from/currentimage:flat
现在应该显示一个单层。我无法告诉您为什么图像的增长速度比您预期的快。但是,您可以使用导出/导入机制展平层,这可能会减小图像大小:
docker create --name foo from/currentimage
docker export foo | docker import - from/currentimage:flat
docker rm foo
docker inspect from/currentimage:flat
现在应该显示一个单层。它切掉了~1Go,这是一个好的开始。我能把这个“合并”成最新的吗?(我刚刚试过)我似乎需要区分这两个。当然,您只需将其标记为“from/currentimage:latest”。我不想在答案中加上这个,这样你就不会意外地覆盖现有的图像。它确实切掉了~1Go,这是一个好的开始。我能把这个“合并”成最新的吗?(我刚刚试过)我似乎需要区分这两个。当然,您只需将其标记为“from/currentimage:latest”。我不想在答案中加入这一点,所以你不会意外地覆盖现有的图像。