Tag: 优化

在没有Dockerfile的情况下减lessdocker镜像的大小

我几周前创build了一个图片,而不使用本教程使用Dockerfile。 基本上,你从一个图像运行一个容器,编辑这个容器,然后将其保存为新的图像,退出,提交和推送。 起初,我的形象在规模上有点可以接受,但现在却以我不明白的方式成长起来。 例如,如果我需要编辑我的图像,我会: docker run –name mycontainer -it from/currentimage bash 编辑一个文件或configuration一些东西 出口 docker commit from/currentimage docker push from/currentimage 问题是,改变文件中的一行,使图像变大了〜250MB。 我究竟做错了什么? 从那里,我怎么能减less那些我认为无用的图层呢? SO上的其他答案总是使用Dockerfile或重新configuration它。 我的情况没有。 谢谢

我应该尽量减lessdocker层的数量?

文档没有详细阐述这个话题。 它说: 最小化层数 在Docker 17.05之前,甚至在Docker 1.10之前,重要的是尽量减less图像中的图层数量。 以下改进缓解了这种需求: 在Docker 1.10及更高版本中,只有RUN,COPY和ADD指令创build图层。 其他说明会创build临时中间图像,不再直接增加构build的大小。 Docker 17.05及更高版本增加了对多阶段构build的支持,允许您只将需要的构件复制到最终的图像中。 这允许您在中间构build阶段包含工具和debugging信息,而不增加最终图像的大小。 它看起来像最新的Docker版本不能解决处理许多层的问题。 他们宁愿努力减less最终形象的数量。 最重要的是,文档没有说明为什么很多层是坏的。 我知道42层的AUFS限制 。 保留广泛使用的图像的层数是有意义的,因为这有助于在其上构build其他图像以适应限制。 但是,还有其他的存储驱动程序和图像用于其他目的。 保留图像很小是很好的一个显而易见的原因 – 占用磁盘空间和networking带宽。 但是,我不认为链接RUN语句 ,从而将许多层压缩成一个整体。 如果不同的RUN更新文件系统的不同部分,则一个层和多个层的大小应该大致相同。 另一方面,许多层允许使用caching并更快地重build图像。 他们也被平行拉。 我在一个拥有私人Dockerregistry的小团队中工作。 我们永远不会遇到42层限制,关心性能和开发速度。 如果是这样,我应该尽量减lessdocker层的数量?

防止每次重build整个docker集装箱? 提高速度

Docker化一个Rails应用程序,花费时间来重build容器。 我试图添加到最后,但不可能我想更多。 任何关于如何提高docker集装箱重build速度的build议? 或者有关如何改进docker文件的一般build议,每次重build都需要很长的时间。 也有智能的方法来检查,例如一个目录已经存在,而不会抛出一个错误,不能完成构build? FROM ruby:2.2.0 EXPOSE 80 EXPOSE 22 ENV RAILS_ENV production RUN apt-get update -qq && apt-get install -y build-essential # ————————————– # GEM PRE-REQ # ————————————– #RUN apt-get install -y libpq-dev #RUN apt-get install -y libxml2-dev libxslt1-dev #nokigiri #RUN apt-get install -y libqt4-webkit libqt4-dev xvfb RUN cd /tmp && git clone […]

加快Gitlab CI再利用docker机的阶段

每次任务(阶段),Gitlab CI都会为每个任务提取泊坞窗图像。 这个操作浪费了很多时间。 我想尽可能优化。 我看到有两个地方可以合作 1.明确configurationCI阶段以重用相同的docker机。 2.在构build下一个提交时,使用之前提交的docker机器? (如果没有更改configuration文件)。

Docker镜像与架构优化?

某些库(如BLAS / LAPACK)或某些优化库在编译时针对本地机器体系结构进行了优化。 让我们以OpenBlas为例。 有两种方法可以用OpenBlas创build一个Docker容器: 使用Dockerfile,在其中指定OpenBlas库的git克隆以及所有必要的编译标志和构build命令。 从Docker Hub中拉出并运行其他人的Ubuntu + OpenBlas的图像。 选项(1)保证OpenBlas是为您的机器构build和优化的。 选项(2)呢? 作为一个Docker新手,我看到图像是固定的和静态的,所以运行这个镜像不会被我的机器(可能是基于AMD的而不是维护人员的Intel CPU)优化。 让我感到困惑的是图像ipython / scipyserver在构build过程中从Github克隆了最新的OpenBlas master。 我似乎误解了Docker映像和/或自动构build的概念,我非常感激澄清。