在 Docker 中,您可以按照发行版的正常方式安装软件包,例如apt-get install xyzDebian。这会导致容器中仅出现该包的一份副本(已安装的副本。)
相反,如果您构建的包不属于发行版存储库(例如独立包.deb或.rpm其他包),那么如何将其安装在 Docker 容器中,以便包文件本身不会保留在容器中安装后?
例如,如果您执行以下操作:
ADD example.deb /home
RUN dpkg -i /home/example.deb && rm /home/example.deb
Run Code Online (Sandbox Code Playgroud)
然后,因为ADD和RUN是单独的命令,所以最终的容器中同时包含已安装的包和原始.deb文件。这意味着 100MB 的软件包将使容器膨胀 200+MB,因为您最终会得到该软件包的两个副本 - 安装的内容加上原始文件。
在构建过程中挂载卷可以很好地解决问题,但显然这违背了 Docker 的理念。如果可能的话,我想避免运行额外的服务,因此提供包以便发行版的正常包管理器可以找到它们,甚至运行一个网络服务器,以便容器可以wget文件是我想避免的,如果其中任何一个必须这样做的话发生在容器本身之外。
| 归档时间: |
|
| 查看次数: |
828 次 |
| 最近记录: |