【问题标题】:configured a downloaded package with ./configure, how to remove it completely from centos用./configure配置了一个下载的包,如何从centos中彻底删除
【发布时间】:2019-05-20 20:33:14
【问题描述】:

在 setup.sh 中做了以下操作并创建了一个 docker 映像

wget -qO- 
https://downloads.sourceforge.net/project/libpng/zlib/1.2.8/zlib-1.2.8.tar.gz | tar zvx
rm zlib-1.2.8.tar.gz
cd zlib-1.2.8
./configure
make
make install

在 docker 文件末尾想要删除这个包的所有二进制文件以减小 docker 的大小,如何做到这一点

【问题讨论】:

  • 你的Dockerfile在哪里?

标签: docker centos dockerfile


【解决方案1】:

您可能想在使用此库完成所需操作后运行 make uninstall + 删除 zlib-1.2.8 文件夹。你的Dockerfile 应该是这样的:

FROM    centos:7

RUN     ./setup.sh \
 &&     ./do_stuff_with_zlib.sh \
 &&     ./uninstall_zlib.sh

uninstall_zlib.sh 脚本应包含:

#!/usr/bin/env sh

(cd zlib-1.2.8; make uninstall) # uninstall binaries
rm zlib-1.2.8                   # also remove folder to gain some space

注意./setup.sh./uninstall_zlib.sh 应该在同一层中运行(相同的RUN 指令),否则生成的图像大小不会减小(除非你之后将其压缩)。

【讨论】:

  • 我也在安装 RUN yum install -y devtoolset-6 ,当我执行 RUN yum remove -y devtoolset-6 时,它是 331 MB。它不会删除 331MB
  • 这就是为什么你应该在同一层安装和删除(同样RUN)。否则依赖关系仍将存在于中间层中。如果在 Docker 守护程序上启用了实验性功能,您还可以在运行 docker build (docs.docker.com/engine/reference/commandline/image_build/…) 时运行 --squash 选项。另请注意,删除一个包并不总是删除所有已安装的(例如,依赖项可能已更新,...)。因此,删除时您可能永远不会得到 -331MB。
猜你喜欢
  • 2018-10-23
  • 1970-01-01
  • 2022-12-14
  • 2016-05-31
  • 1970-01-01
  • 2021-10-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-12
相关资源
最近更新 更多