加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

Docker如何添加文件而不将其提交给图像?

发布时间:2020-12-16 03:36:59 所属栏目:安全 来源:网络整理
导读:我有一个~300Mb压缩的本地文件,我添加到docker镜像.然后下一个状态提取图像. 问题是ADD语句导致提交导致新的文件系统层使图像大?300Mb比它需要的大. ADD /files/apache-stratos.zip /opt/apache-stratos.zipRUN unzip -q apache-stratos.zip rm apache-str

我有一个~300Mb压缩的本地文件,我添加到docker镜像.然后下一个状态提取图像.

问题是ADD语句导致提交导致新的文件系统层使图像大?300Mb比它需要的大.

ADD /files/apache-stratos.zip /opt/apache-stratos.zip
RUN unzip -q apache-stratos.zip && 
    rm apache-stratos.zip && 
    mv apache-stratos-* apache-stratos

问题:ADD本地文件是否有解决办法而不会导致提交?

一种选择是在启动docker构建之前运行一个简单的Web服务器(例如python -m SimpleHTTPServer),然后使用wget来检索文件,但这看起来有点乱:

RUN wget http://localhost:8000/apache-stratos.zip && 
    unzip -q apache-stratos.zip && 
    rm apache-stratos.zip && 
    mv apache-stratos-* apache-stratos

另一种选择是在容器启动而不是构建时提取压缩文件,但我更希望尽可能快地启动.

最佳答案
根据the documentation,如果您将存档文件从本地文件系统(不是URL)传递到Dockerfile中的ADD(具有目标路径,而不是路径文件名),它会将文件解压缩到给定的目录中.

If (identity,gzip,bzip2 or xz) then it is unpacked as a directory.
Resources from remote URLs are not decompressed. When a directory is
copied or unpacked,it has the same behavior as tar -x: the result is
the union of:

1) Whatever existed at the destination path and 2) The contents of the
source tree,with conflicts resolved in favor of “2.” on a file-by-file basis.

尝试:

ADD /files/apache-stratos.zip /opt/

并查看文件是否存在,无需进一步解压缩.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读