Bash 在不使用Dockerfile的情况下减少docker映像大小

Bash 在不使用Dockerfile的情况下减少docker映像大小,bash,docker,optimization,continuous-integration,Bash,Docker,Optimization,Continuous Integration,几周前,我构建了一个映像,但没有使用Dockerfile 基本上,您可以从一个图像运行一个容器,编辑该容器,然后将其保存为新图像,退出、提交和推送。起初,我的图像在大小上是可以接受的,但现在它以我不理解的方式增长 例如,如果我需要编辑图像,我将: docker run——命名mycontainer——它来自/currentimage bash 编辑一个文件或配置一些东西 出口 docker提交自/currentimage docker从/currentimage推送 问题是更改文件中的一行会

几周前,我构建了一个映像,但没有使用Dockerfile

基本上,您可以从一个图像运行一个容器,编辑该容器,然后将其保存为新图像,退出、提交和推送。起初,我的图像在大小上是可以接受的,但现在它以我不理解的方式增长

例如,如果我需要编辑图像,我将:

  • docker run——命名mycontainer——它来自/currentimage bash
  • 编辑一个文件或配置一些东西
  • 出口
  • docker提交自/currentimage
  • docker从/currentimage推送
问题是更改文件中的一行会使图像变大约250MB。我做错了什么

从那以后,我怎样才能从我认为的无用层中缩小这些层的尺寸呢?其他答案处于打开状态,因此始终使用Dockerfile或重新配置它。我的箱子里没有


谢谢

我无法告诉您为什么您的图像增长速度比您预期的快。但是,您可以使用导出/导入机制展平层,这可能会减小图像大小:

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”。我不想在答案中加入这一点,所以你不会意外地覆盖现有的图像。